CVSS10分Gitlab漏洞究竟能不能读任意文件?

· 2026-09-12 11:36 · 7 阅读

原创 微步情报局 2026-09-12 11:36 北京

点击查看漏洞详情

一、背景

GitLab 是全球广泛使用的一体化 DevSecOps 平台,提供代码托管、代码评审、CI/CD 流水线、制品库、安全扫描等能力,分为开源社区版(CE)与企业版(EE),被大量企业以 self-managed 方式私有化部署。

近日,关于GitLab CE/EE 仓库提交 API 路径遍历漏洞(CVE-2026-85706)讨论热度较高,部分媒体声称该漏洞可读任意文件,CVSS满分。

二、先说结论

该漏洞无法读取并回显服务器上的任意文件,具体受限的条件请见第四节。但是漏洞存在一定危害,依然建议升级。

经过实测,攻击者能读取到的有:

  • gitlab.yml的配置片段(非完整配置文件,会截断。会不会泄露凭据将取决于凭据在不在截断之前)

  • 几乎整个redis.conf

上述配置文件泄露后,攻击者可借助gitlab token投毒和获取redis等凭据进行进一步对redis攻击。

CISA已将该漏洞标记为“已知在野利用”,建议受影响的用户尽快修复。

三、漏洞原理是什么

漏洞由四个环节叠加:

  1. 漏洞所在sink 之前只有项目读授权,没有用户认证。用户认证在文件读取完成之后才被调用——认证存在,但顺序错了。

  2. Workhorse 对所有代理请求都注入内部 JWT,require_gitlab_workhorse! 照常通过。结果是攻击者的原始表单参数不经重写直达 Rails。

  3. 攻击者可控参数直接进 File.read,无任何路径约束,绝对路径即可,无需 ..

  4. 报错信息把文件内容带回响应。 目标文件内容含非法百分号编码(% 后非两个十六进制字符)时,会将其写入 400 响应体。内容不含 % 的文件不回显。

四、回显的限制

根据漏洞原理可知,该漏洞回显的限制有:

  • 内容限制:目标文件内容含非法百分号编码(% 后非两个十六进制字符)时会回显,否则只会 401,无法回显。

  • 文件限制:git 对该文件能 stat + read

  • 截断限制:GitLab使用的Rack 2.2.23,Rack的参数分隔符是&;。所以整份文件会当form 字符串,然后按 & / ; 切开,每段再按第一个分成 key/value,分别 URI.decode_www_form_component。非法 % 只发生在当前这一段上,e.message 里也只有这一段。

  • 长度限制:Rack默认解析上限为4M(RACK_QUERY_PARSER_BYTESIZE_LIMIT=4194304),只有 ≤ 4MB 的内容走 invalid %-encoding (...) 回显。

例如,当文件内容为:

    invalid %-encoding BEFORE_AMP&AFTER_AMP

    回显的内容为:(&后面的会被截断

      {"message":"400 Bad request - Invalid parameter: invalid %-encoding (invalid %-encoding BEFORE_AMP)"}

      五、漏洞影响范围

      GitLab CE/EE版本 18.7<=version<19.1.8,19.2<=version<19.2.6,19.3<=version<19.3.2受影响。

      六、漏洞复现

      七、修复方案

      官方修复方案

      官方已发布修复方案,请访问链接下载:

      https://docs.gitlab.com/releases/patches/patch-release-gitlab-19-3-2-released/

      临时缓解措施

      • 短期无法升级时,在流量入口(WAF / 前置反向代理)添加拦截规则:对路径匹配 ^/api/v4/projects/[^/]+/repository/commits(.[A-Za-z0-9]+|/)$ 且方法为 POST 的请求阻断。

      • 将 GitLab Web 入口或 /api/v4 限制为信任网段/VPN 访问,缩小未授权攻击面。

      八、微步产品支撑

      微步漏洞情报于2026-09-11收录该漏洞。

      微步下一代威胁情报平台NGTIP及X情报中心已于漏洞收录时向漏洞订阅用户推送该漏洞情报,并将持续推送后续更新;对于已经录入资产的用户,支持实时自动化排查受影响资产。

      微步威胁感知平台TDP已于 20260911 支持检测,检测ID: S3100184457 ,模型/规则高于: 2026091100000  可检出。

      微步威胁防御系统OneSIG已支持防护,规则ID为:3100184457

      跳转微信打开