CVE 索引EN
L4 · 化粪池炸了GitLab · RCE · 自管版gitlab-regex-rce

GitLab:九天两个满分 10 分,出自同一个正则引擎

九天内第二个 CVSS 10.0:GitLab 再修正则编译器 RCE,这次一路影响到 GitLab 7.0

CISA 现已确认 10 月 12 日 GitLab 正则 RCE(CVE-2026-97229)遭利用。独立的 CVSS 10.0 漏洞 CVE-2026-110264 仍需安装 10 月 21 日面向 GitLab 7.0 及之后版本的修复;只打 10 月 12 日补丁不够。较早的漏洞已有公开 PoC。请升级 GitLab 及受影响 Ruby 应用,并排查暴露的服务器。

披露时间
2026年10月21日
更新于 2026年10月31日
严重程度
CVSS 10 × 2
本页收录 2 个 CVE
波及范围
自管版 GitLab CE/EE 7.0+;其他 Ruby 应用仅在编译攻击者可控的正则模式时受影响
gitlab · ruby
在野利用
已发现
CISA 确认 CVE-2026-97229 遭利用;不代表 CVE-2026-110264 已遭利用

一句话说清楚

给 GitLab 喂一个形状刚好不对的正则表达式,引擎计算大小时就会整数回绕,生成的指令会以 git 用户身份执行攻击者的命令。

发生了什么

GitLab 在很多地方都会执行用户提供的正则表达式:CI 规则、代码所有者、推送规则、标记语言渲染。编译这些正则用的是 Onigmo,也就是 Ruby 背后的正则引擎,GitLab 在自己的安装包里打包并维护它的补丁。这个月研究人员两次在 Onigmo 计算大小的地方发现了溢出,编译器因此生成了错误的字节码,攻击者可以借此以 git 用户身份执行代码。

  • 10月12日,CVE-2026-97229: 在 GitLab 19.2–19.4 上通过精心构造的 .gitlab-ci.yml 触发。第二天 Rapid7 就公开了能用的 PoC。厂商定性为无需身份验证,实际上攻击者得能往某个公开项目提交代码,而如果你的实例开放注册,这一点毫无难度。
  • 10月21日,CVE-2026-110264: 同一个编译器里的另一处溢出,一路影响到 GitLab 7.0(2014 年)。GitLab 没说攻击者需要满足什么条件,所以没法靠改配置躲过去。10月12日打过补丁的,这次还得再升级。

为什么是 L4

CISA 于 10 月 29 日将 CVE-2026-97229 纳入 KEV,取代了本文此前“两个漏洞均无已确认利用”的说法。这份证据针对 10 月 12 日的兄弟漏洞,不能证明 CVE-2026-110264 已遭攻击。主流平台出现真实利用,仍符合 L4;所引证据尚未证实足以评为 L5 的蠕虫或互联网规模入侵。GitLab.com 和 Dedicated 已在披露前修补;自管版仍需安装上方列出的较新安装包修复。

FCEB 机构对 CVE-2026-97229 的处置期限为 11 月 1 日,KEV 条目要求取证分诊。这是美国联邦要求,不是其他运维方可以等待的宽限期。条件允许时保存证据,尽快修补,并调查此前可能发生的访问。CISA 将勒索软件利用情况列为未知,未提供受害者数量。

10月23日 Ruby 上游更新: 同一批漏洞也影响将攻击者可控字符串编译为正则模式的应用。Ruby 4.0.9、3.4.12 和 3.3.13 包含 GitLab 四个正则 CVE 对应的全部三个修复,包括上方已提及的两个 9 月漏洞。Ruby 4.0.8 缺少 CVE-2026-110264 修复。只使用开发者编写的静态模式不属于此暴露范围。正则超时和模式长度上限都不能可靠防护;升级前应停止接受不可信模式。

表格和检查器覆盖的是内置已修补 Ruby 的 GitLab 安装包。单独升级系统中的 Ruby 不能替代 GitLab 安装包升级。Ruby 尚未为这些修复申请独立 CVE,建议沿用 GitLab 编号跟踪。

Alpine 更新: Alpine 报告 10 月 20–21 日遭利用尝试,未发现成功执行证据,但日志不足以排除。其重建了 GitLab,检查的安装包及发行物未发现篡改;签名密钥从未保存在该服务器。自定义镜像使用未修补的系统 Ruby,因此只升级 GitLab 后仍有漏洞。该次利用尝试不否定 CISA 独立确认的真实利用。

马桶里有什么

正则编译中的整数溢出

10月21日修复。未经身份验证的用户可以在“特定条件下”在服务器上执行代码,GitLab 没有说明是什么条件。影响 7.0 及之后的版本。由 joaxcar 通过 HackerOne 报告。

说人话: 水管工把管子数错了,结果多出一根直通机房。

CI/CD 正则编译器中的整数溢出

10月12日在 19.2.8 / 19.3.5 / 19.4.2 中修复。.gitlab-ci.yml 里精心构造的正则先以 US-ASCII 通过校验,Onigmo 再按 UTF-8 重新编译时就会溢出。Rapid7 已复现并公开 PoC;利用需要对某个公开项目有提交权限,而只要开放注册,谁都能拿到。

你踩到了吗?

在每台机器上运行 sudo gitlab-rake gitlab:env:info | grep -i version,然后输入版本号,或者点一个最接近的。

修复版本(2026年10月21日)
分支安全版本状态
GitLab 19.519.5.1
GitLab 19.419.4.3含数据库迁移
GitLab 19.319.3.6含数据库迁移
GitLab 19.219.2.9回溯补丁(仅关键修复)
GitLab 19.119.1.9回溯补丁(仅关键修复)
GitLab 19.019.0.10回溯补丁(仅关键修复)
GitLab 7.0 – 18.1118.11.13回溯补丁。更老的版本请升级到 18.11.13 或更高

案发时间线

  1. 2026年9月23日

    GitLab 修复两个需要登录的 9.9 分代码执行漏洞

    CVE-2026-93577 和 CVE-2026-89078。

  2. 2026年10月2日

    自托管 AI Gateway 修复一个 9.9 分的模板沙箱逃逸

    CVE-2026-90970,已在 gateway 19.2.4 / 19.3.2 / 19.4.1 中修复。同一个月,不同组件。

  3. 2026年10月12日

    CVE-2026-97229 在 19.2.8、19.3.5 和 19.4.2 中修复

  4. 2026年10月13日

    Rapid7 复现 CVE-2026-97229 并公开 PoC

  5. 2026年10月21日

    CVE-2026-110264 在七条版本线上修复,另附 11 个安全修复

    GitLab 说一共 12 个问题,部分媒体说是 11 个。一并修复的还有 CVE-2026-15723(8.2 分,SAML/LDAP 自动关联导致账号接管)和 CVE-2026-112212(7.5 分,OAuth/OIDC 发现缓存投毒)。

  6. 10月23日 03:11 UTC

    Ruby 发布上游修复及影响条件

    Ruby 4.0.9、3.4.12 和 3.3.13 包含全部三个底层修复;4.0.8 缺少最新溢出的修复。

  7. 2026年10月28日

    Alpine 报告利用尝试并重建服务

  8. 2026年10月29日

    CISA 将 CVE-2026-97229 纳入 KEV

    美国联邦文职行政部门机构(FCEB)的处置期限为 11 月 1 日;CISA 标记需要取证分诊。这证实的是 10 月 12 日漏洞遭利用,并非 10 月 21 日的兄弟漏洞。

  9. 2026年10月30日

    Alpine 发布服务重开后的恢复步骤

各方说法

我们列出每条说法和它的出处,并标出一手来源(厂商、研究人员、软件仓库)。各方说法不一致时,按最坏的可信情况定级。