GitLab CI配置正则编译远程代码执行漏洞(CVE-2026-97229)
漏洞描述
GitLab 是开源 DevOps 平台,提供 Community Edition 与 Enterprise Edition,用于代码仓库托管、合并请求协作与 CI/CD 流水线。受影响版本中,GitLab 校验 CI/CD 配置内的正则表达式时直接调用随发行版打包的 Ruby 3.3/3.4 的 Regexp 编译接口,对模式长度与重复计数均无限制。Onigmo 在 regcomp.c 的 compile_length_quantifier_node 中以有符号 32 位整数计算量词目标编译长度与重复次数的乘积,并以该乘积与固定上限比较决定是否展开重复;该比较自身无溢出保护,乘积越过整数上限后回绕为小值或负值,而负值同样满足上限判断,致使阻止展开超大重复的检查被其本应拦截的溢出绕过。编译器据回绕后的偏小值计算缓冲区尺寸却写入完整指令流,且以 int 存储的相对跳转偏移一并回绕,形成堆越界写。未经身份验证的远程攻击者将此类正则写入 CI/CD 配置,即可在 GitLab 服务进程内执行任意代码。 受影响版本:GitLab CE/EE 19.2 早于 19.2.8、19.3 早于 19.3.5、19.4 早于 19.4.2。其中 19.3.4 另含一处影响合并请求页面的缺陷,应直接升级至 19.3.5。 ## 解决建议 1、将组件 gitlab 升级至 19.2.8、19.3.5 或 19.4.2 及以上版本(按所在版本线选择对应目标版本)。本次补丁包含数据库迁移,单节点实例升级期间会停机,多节点实例可采用零停机升级流程。 2、利用安全组设置其仅对可信地址开放。 ## 参考链接 https://docs.gitlab.com/releases/patches/patch-release-gitlab-19-4-2-released/ https://docs.gitlab.com/releases/patches/patch-release-gitlab-19-4-2-released/#cve-2026-97229---integer-overflow-issue-in-cicd-regular-expression-compiler-impacts-gitlab-ceee https://gitlab.com/gitlab-org/gitlab/-/work_items/630686 https://hackerone.com/reports/4055749 https://hackerone.com/reports/4058589