IPBUF安全漏洞报告
English
CVE-2026-2973 CVSS 5.4 中危

CVE-2026-2973 GitLab Mermaid图存储型XSS漏洞

披露日期: 2026-03-25

漏洞信息

漏洞编号
CVE-2026-2973
漏洞类型
存储型XSS
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
GitLab CE/EE

相关标签

XSSGitLabCVE-2026-2973Web安全存储型跨站脚本

漏洞概述

该漏洞存在于GitLab CE/EE的Mermaid图表处理功能中。由于对实体编码内容的清理不当,经过身份验证的攻击者可以利用此漏洞在受害者的浏览器中执行任意JavaScript代码。该漏洞影响GitLab 17.7至18.10.1之间的多个版本,攻击者需诱导用户交互或访问特定页面以触发漏洞。

技术细节

该漏洞属于存储型跨站脚本攻击(Stored XSS)。GitLab在渲染Mermaid图表时,未能正确过滤或转义经过实体编码的用户输入。攻击者可以在GitLab的Issue、Wiki或注释等支持Mermaid图表的地方,插入包含恶意JavaScript代码的Mermaid图表语法。当其他用户查看包含该图表的内容时,浏览器会解析并执行其中的恶意脚本。由于CVSS向量包含S:C(Scope Changed),该攻击可以影响浏览器的上下文,可能导致用户会话劫持、敏感信息窃取或进一步的攻击行为。

攻击链分析

STEP 1
1. 攻击者准备载荷
攻击者构造包含恶意JavaScript代码的Mermaid图表语法,利用实体编码绕过初步过滤。
STEP 2
2. 注入恶意内容
攻击者登录GitLab,在Issue、合并请求或Wiki页面中插入恶意的Mermaid图表。
STEP 3
3. 诱导访问
攻击者诱导受害者(具有特定权限的用户)访问包含该恶意图表的GitLab页面。
STEP 4
4. 执行攻击
受害者的浏览器在渲染页面时,解析Mermaid图表,由于清理不当,恶意JS代码在受害者浏览器上下文中执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Conceptual PoC for CVE-2026-2973: Mermaid Diagram XSS // Attacker injects payload via Mermaid syntax in an Issue/Comment const payload = `graph TD; A[Start] --> B{<img src=x onerror=alert('CVE-2026-2973')>}; B --> C[End]; `; // In a real scenario, the attacker would input this into the Mermaid diagram block. // The vulnerability stems from improper sanitization of entity-encoded content, // allowing the browser to parse the HTML/JS within the diagram node. console.log("Payload injected: " + payload);

影响范围

GitLab CE/EE >= 17.7, < 18.8.7
GitLab CE/EE >= 18.9, < 18.9.3
GitLab CE/EE >= 18.10, < 18.10.1

防御指南

临时缓解措施
建议尽快升级至安全版本。若无法立即升级,应限制用户对Mermaid图表功能的编辑权限,或通过WAF拦截异常请求,但这仅作为临时缓解手段。

参考链接

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