CVE-2025-10004GitLab是一个广泛使用的DevOps平台,提供代码托管、CI/CD、问题跟踪等功能。CVE-2025-10004是GitLab CE/EE中存在的一个高危拒绝服务漏洞,影响从13.12到18.4.2的多个版本。该漏洞源于GitLab的GraphQL API接口对大型仓库blob(Binary Large Object,二进制大对象)的请求处理存在缺陷。攻击者可以通过向GitLab实例的GraphQL端点发送精心构造的恶意查询,请求获取仓库中的大型blob数据,从而导致服务器资源被大量消耗。未经认证的远程攻击者可以利用此漏洞使GitLab实例完全失去响应或性能严重下降,影响所有依赖该平台进行代码管理、持续集成和团队协作的用户。该漏洞的CVSS评分为7.5,属于高危级别,攻击者无需认证即可通过网络发起攻击,且无需用户交互,攻击成功后主要影响系统的可用性。由于GitLab在企业开发流程中的核心地位,此漏洞可能对企业的研发效率和数据可访问性造成严重影响。GitLab已于2025年10月8日发布补丁版本18.4.2、18.3.4和18.2.8修复该问题。
该漏洞存在于GitLab的GraphQL API接口中,具体涉及对仓库blob数据的查询处理机制。GraphQL是GitLab提供的一种灵活的API查询语言,允许客户端精确指定所需的数据字段。在正常情况下,客户端可以通过GraphQL查询请求获取仓库中的文件内容(blob)。然而,GitLab在处理针对大型blob的查询请求时缺乏有效的资源限制和速率控制机制。攻击者利用这一缺陷,构造特殊的GraphQL查询,指定请求仓库中体积巨大的blob文件。由于GraphQL的灵活性,单个查询可以同时请求多个大型blob,且服务器在处理这些请求时会消耗大量内存和网络带宽。当大量此类查询并发到达时,GitLab实例的服务器资源会被迅速耗尽,导致服务无法正常响应其他合法请求。具体而言,攻击者通过GraphQL的blobs字段或类似接口,指定较大的仓库提交哈希和文件路径,请求获取完整的大型文件内容。服务器在解析查询、定位文件、读取数据并返回结果的过程中,每个请求都会占用显著的内存和I/O资源。由于无需认证(PR:N),攻击者可以匿名发起攻击,进一步降低了利用门槛。