CVE-2026-85706:GitLab 提交 API 路径遍历漏洞 CVSS 10.0 已遭全网探测

GitLab 于 2026 年 9 月 10 日发布紧急安全补丁,修复仓库提交 API 中的路径遍历漏洞 CVE-2026-85706。该漏洞 CVSS 评分高达 10.0,未认证的远程攻击者可借助单个 HTTP 请求读取 GitLab 服务器上的任意文件。GitLab.com 已完成修复,但大量自建实例仍暴露在公网。9 月 11 日,美国网络安全和基础设施安全局(CISA)已将其列入已知被利用漏洞(KEV)目录。

事件概述

GitLab 在 9 月 10 日发布 Critical Patch Release,修复版本为 19.1.8、19.2.6 与 19.3.2。该批次共修复 17 个漏洞,其中三处与本次事件相关:CVE-2026-85706(仓库提交 API 路径遍历,CVSS 10.0,影响 CE 与 EE);CVE-2026-87719(GraphQL 订阅序列化器不安全反序列化,CVSS 9.9,仅 EE);CVE-2026-88765(Advanced Search 索引的 Unicode 转换包装器缓冲区溢出,CVSS 8.5,仅 EE)。受影响版本为 18.7 起至未修补的 19.1.7、19.2.5、19.3.1。

技术细节

漏洞位于用于检索仓库提交信息的 API 中,根因是路径约束不当叠加身份认证强制措施缺失(CWE-35)。攻击者无需任何凭据,构造含穿越序列的请求即可让服务端访问预期目录之外的文件。

GitLab 给出的 CVSS 3.1 向量为 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N。可读取的文件取决于 GitLab 服务账户权限,实际环境中通常包括:

  • 应用配置(如 gitlab.yml)与集成设置;
  • CI/CD 变量、访问令牌、API Key;
  • 数据库凭据、云平台访问凭据、SSH 私钥、.env 文件。

安全厂商 watchTowr 在补丁发布后一天内即观察到针对脆弱服务器的全网扫描探测;国内 360 漏洞研究院已成功复现,通过单次未授权请求读取到 GitLab 本地配置文件内容。建议排查对 /api/v4/projects/{id}/repository/commits/ 的 POST 请求,重点看 file.path 参数中是否含 ..%2f../ 等穿越序列。

影响评估

GitLab 被超过 10 万个组织用于源码托管与 CI/CD 流水线,单一实例往往同时保存开发、测试、生产多套环境的凭据。漏洞本身只提供任意文件读取,但泄露的文件常被用于横向扩展:拿到 CI/CD 变量或云凭据,即可进入构建与部署链路,形成典型的供应链攻击风险。CISA 将修复期限设为 9 月 14 日并要求取证排查,说明官方已掌握真实利用或高置信度线索。

修复建议

唯一彻底修复方式是升级。Omnibus 安装可先用 dpkg -l gitlab-ce gitlab-eesudo gitlab-rake gitlab:env:info 确认版本,再升级到 19.1.8、19.2.6、19.3.2 或更高版本:

sudo apt-get install gitlab-ce=19.3.2-*   # 按实际版本线调整

本次补丁包含数据库迁移,单节点实例升级期间会停机。短期内无法升级时,可临时限制实例网络访问,仅允许可信 IP 连接,但这只是风险缓解而非修复。补丁完成后建议轮换 GitLab 服务账户可读的全部凭据、令牌与私钥;边界侧可在 WAF 拦截针对该 API 的路径穿越请求。

参考来源