IPBUF安全漏洞报告
English
CVE-2026-33347 CVSS 6.1 中危

CVE-2026-33347 league/commonmark 域名过滤绕过漏洞

披露日期: 2026-03-24

漏洞信息

漏洞编号
CVE-2026-33347
漏洞类型
跨站脚本攻击 (XSS)
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
league/commonmark

相关标签

XSS域名过滤绕过PHPMarkdown解析器league/commonmark

漏洞概述

league/commonmark 是一个流行的 PHP Markdown 解析器。在版本 2.3.0 至 2.8.2 之前,其 Embed 扩展中的 DomainFilteringAdapter 存在严重的允许列表绕过漏洞。由于域名匹配的正则表达式缺少主机名边界断言,攻击者能够构造特定的恶意域名(例如 youtube.com.evil)来通过校验。该漏洞允许攻击者在受信任的上下文中注入不受信任的 URL,可能导致跨站脚本攻击或其他安全风险。

技术细节

该漏洞位于 `league/commonmark` 库的 `Embed` 扩展组件内,具体涉及 `DomainFilteringAdapter` 类。其核心原因是用于验证域名的正则表达式存在逻辑缺陷,未严格划定主机名的起始和结束边界。这意味着当系统试图验证是否允许嵌入某个域名时,攻击者可以通过后缀拼接的方式绕过检测。例如,若允许列表中包含 `example.com`,攻击者提交的 `example.com.attacker.com` 会被正则错误匹配为合法域名,因为字符串中包含了 `example.com`。一旦攻击者成功注入恶意 URL,当受害者解析并渲染该 Markdown 内容时,浏览器可能会加载并执行来自恶意域名的脚本,从而引发跨站脚本攻击(XSS),窃取用户凭证或执行恶意操作。

攻击链分析

STEP 1
1. 信息收集
攻击者分析目标应用使用的 Markdown 解析器版本,确认其使用了 league/commonmark 的 Embed 扩展,并推测可能存在的允许列表域名(如 youtube.com)。
STEP 2
2. 构造恶意域名
攻击者利用正则边界缺失的缺陷,构造包含允许域名但指向恶意服务器的域名,例如 'youtube.com.attacker-controlled.com'。
STEP 3
3. 注入 Payload
攻击者在用户可提交的 Markdown 内容中嵌入构造好的恶意 URL,利用 Embed 功能生成预览链接。
STEP 4
4. 触发漏洞
当管理员或其他用户访问包含该 Markdown 内容的页面时,解析器错误地验证了域名,导致页面加载恶意资源。
STEP 5
5. 执行攻击
恶意资源执行 JavaScript 代码(XSS),窃取用户的 Cookie 或会话令牌,进而接管账户。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<?php // PoC for CVE-2026-33347: DomainFilteringAdapter Bypass $allowed_domains = ['youtube.com', 'vimeo.com']; // Simulating the vulnerable regex logic (missing boundary assertions) $vulnerable_pattern = '/%s/'; $malicious_domain = 'youtube.com.evil.com'; foreach ($allowed_domains as $domain) { // Construct the regex as the vulnerable library did $pattern = sprintf($vulnerable_pattern, preg_quote($domain, '/')); if (preg_match($pattern, $malicious_domain)) { echo "[+] Bypass Successful! Malicious domain '$malicious_domain' matched allowed domain '$domain'.\n"; } else { echo "[-] Blocked.\n"; } } // Fix: Use boundary assertions like '/^' . preg_quote($domain) . '$/' ?>

影响范围

league/commonmark >= 2.3.0, < 2.8.2

防御指南

临时缓解措施
如果无法立即升级,建议在应用层面禁用 Embed 扩展功能,或者实施额外的后端过滤逻辑,确保嵌入的域名完全匹配(使用严格的正则边界或 DNS 解析验证)。

参考链接

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