2026 年 9 月 23 日,GitLab 发布安全版本 19.4.1、19.3.3 与 19.2.7,一次性修复 11 个漏洞,其中两个评分 9.9 的严重缺陷允许任意已登录用户在 GitLab 服务器上执行任意代码。触发方式不需要复杂的利用链:只要在 CI/CD 配置里放入一个精心构造的正则表达式。
事件概述
- CVE-2026-89078:正则表达式解析器中的双重释放(double free),CVSS 9.9。
- CVE-2026-93577:正则表达式编译器中的整数溢出(integer overflow),CVSS 9.9。
- 受影响版本:GitLab CE/EE 19.2.0 至 19.2.6、19.3.0 至 19.3.2、19.4.0。
- 修复版本:19.4.1、19.3.3、19.2.7。GitLab.com 已完成升级,GitLab Dedicated 客户无需处理。
技术细节
两个缺陷都位于正则表达式引擎,攻击面是 CI/CD 配置。认证用户提交特制正则可以触发不安全的内存管理:双重释放场景下同一块内存被释放两次,可能被用于改变程序执行流;整数溢出场景下数值运算越过程序预期边界,同样可能导向服务端代码执行。GitLab 对 93577 的评分同时包含高可用性影响。
两个 CVE 均由安全研究员 joaxcar 通过 GitLab 的 HackerOne 漏洞赏金计划提交。同批发布还修复了合并请求差异视图中的跨站脚本 CVE-2026-84739(CVSS 8.7),以及 Duo AI 作业排查功能中的授权缺陷 CVE-2026-92470——后者会把 CI/CD 变量值泄露给未授权用户,对持有部署凭据的团队风险不小。
影响评估
- 认证门槛不等于低风险:企业内部 GitLab 往往向开发者、外包人员、外部协作方和 CI 账号发放账号,一个低权限账号就足以构成入口。
- 后果是供应链级别的:GitLab 服务器同时持有全部代码仓库、CI/CD 变量、部署凭据、项目变量与访问令牌,服务端代码执行等于把构建链路和下游基础设施一起交出去。
- 在野状态:截至发稿没有确认的在野利用,但评分与利用复杂度意味着武器化预期很快出现。
修复建议
- 自建实例立即升级到 19.4.1、19.3.3 或 19.2.7。单节点部署升级涉及数据库迁移,需预留停机时间;多节点可评估零停机路径。
- 回溯审计 .gitlab-ci.yml 中新增或修改的正则表达式,尤其是来自外部贡献者的合并请求。
- 检查审计事件中异常的流水线行为、异常的 Runner 活动,以及对 CI/CD 变量和非预期项目的访问。
- 按期轮换可能已落入流水线变量的云凭据、镜像仓库令牌与签名密钥,降低凭据一旦泄露的后续影响。