
2026年10月安全研究员 Jonah Burgess 将编号为 CVE-2026-97229 的概念验证代码PoC公之于众瞬间在运维圈和安全圈掀起巨浪。GitLab 官方给这个漏洞打出了满分 10.0 的 CVSS 评级也就是最高级别的严重。更令人不安的是漏洞的触发点既不在深奥的内核模块也不在冷门的边缘功能恰恰藏在几乎每个研发团队每天都会用到的 CI/CD 流水线配置校验环节。藏在 lint 检查背后的定时炸弹很多开发者对 CI lint 端点并不陌生。当你写好一份 .gitlab-ci.yml 配置文件点击检查按钮时GitLab 会通过这个端点验证流水线语法是否合法。在受影响版本中如果配置里的正则表达式需要匹配包含特殊 Unicode 字符的仓库路径GitLab 内嵌的 Ruby Onigmo 正则引擎会在完成大小检查之后针对新编码再次编译这条表达式。问题就出在这个再次编译上。编译器在计算重复展开的指令长度时使用了 32 位整数运算一旦乘积越过整数上限就会回绕成异常的小值甚至负值而原本应该拦截超大展开规模的检查反而被这个溢出的结果骗了过去。缓冲区按偏小的尺寸分配完整指令流却照常写入跳转偏移随之错乱——整个正则表达式虚拟机的控制流被彻底劫持最终一路滑向命令执行函数。Jonah Burgess 在官方 Linux amd64 版 GitLab CE 19.4.1 镜像上完成了整套利用验证。他发出的测试请求通常以 HTTP 502 错误收场因为工作进程在命令执行完毕后直接崩溃。单凭这个响应根本判断不了攻击是否得手这也正是该漏洞阴险的地方它可能已经在你的服务器上跑了一圈留下的唯一痕迹只是一个看似平常的网关错误。利用门槛究竟有多低这个 PoC 存在一个明确的访问前提攻击者需要拥有向目标 GitLab 实例上某个公共项目推送分支的权限。对于开启了公开注册的自建实例来说注册一个普通账号、创建一个公共项目这个条件几乎唾手可得。随后漏洞利用程序会向 CI lint 端点发送一个不带任何令牌、Cookie 或授权头的裸请求——这意味着后续的触发环节完全不需要认证。执行落点也有讲究。命令是以 GitLab 的 git 账户身份运行的而非 root 或管理员。但千万别因此掉以轻心git 账户手握整个代码仓库的读写权限CI/CD 流水线里配置的各类令牌、密钥、制品库凭据同样一览无余。攻击者拿到这个身份足以窃走全部源码、篡改构建流程、篡改发布产物甚至以这台服务器为跳板向内网横向渗透演变成一场供应链级别的灾难。Burgess 同时给出了两个现实警告。其一该 PoC 需要消耗大量内存其二已公开的内存布局只适配特定的 GitLab 构建版本。内存不足或并发请求过多时服务会直接中断。换句话说即便攻击失败也可能演变成一次效果不俗的拒绝服务打击。目前公开的代码尚属初始版本作者仍在分析受影响的配置变体和其他可行路径后续的利用代码很可能更稳定、更通用。你的版本在名单上吗根据 GitLab 官方安全公告社区版CE和企业版EE中19.2.8 之前的 19.2 系列、19.3.5 之前的 19.3 系列、19.4.2 之前的 19.4 系列全部中招。修复版本已经在 2026 年 10 月 12 日随紧急补丁发布。使用 GitLab.com 云端服务的用户无需任何操作平台已运行修复版本GitLab Dedicated 客户同样不受影响。真正需要立刻动起来的是那些把 GitLab 架在自己机房或云主机上的自托管用户。长亭安全应急响应中心等多个机构已完成复现验证确认漏洞可达且利用链完整。而据公开测绘数据全球暴露在公网上的 GitLab 相关资产超过三十七万条其中中国的资产占比相当可观。这些挂着公网地址、又允许注册的自建实例此刻正处在风险的最前沿。修复之外这几件事同样不能拖升级当然是第一要务但动作要讲究顺序。先通过管理后台或命令行确认当前实例的确切版本号——注意是精确到小版本号仅仅已经升到 19.4远远不够必须是 19.4.2 或更高。本次补丁附带数据库迁移单节点实例在迁移期间会出现短暂中断多节点部署则可以按不停机流程滚动推进升级前务必备份数据。在排期升级的空档里缓解措施可以先顶上关闭或限制公共项目的匿名访问禁止不受信任的用户创建或写入公共项目审计近期所有 CI/CD 配置文件的变更记录重点排查新增或修改过的正则表达式以及陌生的项目分支同时在主机层面盯紧 git 用户下出现的可疑进程和异常的流水线执行行为一旦发现有进程试图反弹连接或读取敏感文件基本就可以锁定已有入侵。值得强调的一点是截至目前还没有证据表明该漏洞已被用于实际入侵公开 PoC 的存在本身不等于攻击已经发生。但历史经验反复证明从 PoC 公开到大面积在野利用之间的时间窗口往往短得惊人。CVSS 满分加上未认证触发加上利用代码公开这三个要素叠加在一起已经构成了一个再清晰不过的红色警报。一个用来校验语法的 lint 工具最终竟成了通往服务器大门的钥匙。这起事件给所有平台的启示是任何会编译用户输入的地方无论它看起来多么人畜无害都应当被当作攻击面来严肃对待。对于安全团队来说眼下最廉价也最昂贵的选择摆在面前——要么在这个周末之前完成升级要么在未来的某个深夜对着日志里那条 502 记录追悔莫及。