文章总结: 该文分析GitLabCVE-2026-85706漏洞,结论是无法读取任意文件,但可泄露部分配置文件如gitlab.yml片段和redis.conf,存在一定危害,建议升级。漏洞由认证顺序错误等四环节叠加导致,回显受内容、文件、截断和长度限制。官方已发布修复方案,临时缓解措施包括WAF拦截规则和限制访问。 综合评分: 88 文章分类: 漏洞分析,漏洞预警,解决方案,安全工具
CVSS10分Gitlab漏洞究竟能不能读任意文件?
原创
微步情报局 微步情报局
微步在线研究响应中心
2026年9月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已将该漏洞标记为“已知在野利用”,建议受影响的用户尽快修复。
三、漏洞原理是什么
漏洞由四个环节叠加:
- 漏洞所在sink 之前只有项目读授权,没有用户认证。用户认证在文件读取完成之后才被调用——认证存在,但顺序错了。
- Workhorse 对所有代理请求都注入内部 JWT,require_gitlab_workhorse! 照常通过。结果是攻击者的原始表单参数不经重写直达 Rails。
- 攻击者可控参数直接进 File.read,无任何路径约束,绝对路径即可,无需 ..
- 报错信息把文件内容带回响应。 目标文件内容含非法百分号编码(% 后非两个十六进制字符)时,会将其写入 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
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:微步在线研究响应中心 微步情报局 微步情报局《CVSS10分Gitlab漏洞究竟能不能读任意文件?》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论