CISA 于美国时间2026年10月29日,将 GitLab 严重漏洞 CVE-2026-97229(CVSS 10.0)列入“已知被利用漏洞”(KEV)目录。如果你的公司、开发团队或供应商自建了 GitLab,请今天核对版本:在部分安装方式下,仅升级 GitLab 并不能修复漏洞。
事件经过
GitLab 于2026年10月12日发布修复。根据 GitLab 公告,该漏洞是 CI/CD 配置所用的正则表达式编译器中的整数溢出,未经身份验证的用户在特定条件下可借特制的正则表达式,在 GitLab 服务器上执行任意代码。
- 受影响版本:自管理(self-managed)的 GitLab 社区版(CE)和企业版(EE),包括19.2.8之前的19.2、19.3.5之前的19.3,以及19.4.2之前的19.4。
- 不受影响:GitLab.com 和 GitLab Dedicated。GitLab 表示两者在公告发布前已完成修复。
- 注意:19.3.4 不含修复,19.3 系列的修复版本是19.3.5。
漏洞的根源在于 Ruby 内置的正则表达式引擎 Onigmo。GitLab 通过给官方安装包和容器镜像中自带的 Ruby 打补丁来修复;Ruby 官方则在10月23日发布了 Ruby 3.3.13、3.4.12 和 4.0.9,同样包含修复。
真实攻击案例:Alpine Linux
Alpine Linux 在10月28日公布,一个新注册账号在10月20日和21日提交了特制 CI 配置,导致 GitLab 工作进程崩溃8次。Alpine 先误升级到19.3.4,之后升级到19.3.6 仍有漏洞,因为其容器镜像使用的是标准 Ruby,而不是 GitLab 打过补丁的 Ruby。Alpine 没有发现攻击成功的证据,但无法排除,并指出成功的攻击“不会导致崩溃,也不会在 Web 日志中留下痕迹”。Alpine 最终重建了服务器,重置所有密码,并更换了 GitLab 密钥。
安全公司 Rapid7 在实验环境中复现了代码执行,前提是攻击者先把恶意的 .gitlab-ci.yml 提交到公开项目;如果服务器允许任何人注册并创建项目,这一前提很容易满足。
为什么与香港中小企业有关
很多网站开发公司、初创企业和 IT 团队在云服务器上部署 GitLab,管理源代码和 CI/CD 流水线。Alpine 指出,攻击一旦成功,可能泄露 CI/CD 变量、Runner 令牌、Webhook 和集成服务凭据、双因素认证(2FA)密钥以及私有仓库。CI/CD 变量里常有云平台密钥和部署密码,GitLab 失守就可能波及线上网站和云账号。
现在该怎么做
- 确认是否在使用自管理 GitLab。如果只用 GitLab.com,这个漏洞无需处理。
- 升级到所用版本系列的最新补丁版本。该漏洞的最低修复版本是19.4.2、19.3.5 和 19.2.8;截至撰稿时最新为19.5.3、19.4.5、19.3.7、19.2.10,并已修复影响范围更广的另一个严重漏洞 CVE-2026-110264。单服务器部署升级时会短暂停机。
- 未使用官方安装包的,要检查 Ruby。从源代码安装或使用自建容器镜像的,Ruby 需升级到3.3.13、3.4.12、4.0.9 或更高版本。
- 打补丁前先缩小暴露面。关闭开放注册,禁止不受信任的用户创建或写入公开项目,限制匿名访问,并考虑只允许通过 VPN 或指定 IP 访问。
- 留意异常迹象。参考 GitLab 的检测规则(例如“Onigmo native worker crash”),并检查10月中旬以来是否出现不明新账号、工作进程反复崩溃或 502 错误。
- 曾经暴露的,应轮换密钥。考虑轮换 CI/CD 变量、Runner 令牌、部署密钥、访问令牌以及存放在 GitLab 中的云平台凭据,并要求所有用户启用多重身份验证(MFA)。
- 怀疑被入侵时,保留日志并向 HKCERT 报告。
定期且经过测试的补丁管理流程,是应对这类漏洞最有效的办法。我们的网络安全与合规团队可以帮你评估风险,托管支持服务也可以承担日常打补丁和监控工作。
常见问题
我们用的是 GitLab.com,需要做什么吗?
就这个漏洞而言不需要,GitLab.com 和 GitLab Dedicated 已经修复。自建的 GitLab Runner 是单独的组件,GitLab 最新公告也要求 Runner 用户因另一个问题进行更新。
已经升级了 GitLab,就安全了吗?
不一定。19.4.2、19.3.5、19.2.8 只修复这个漏洞;另一个严重漏洞 CVE-2026-110264(CVSS 10.0)要到19.5.1、19.4.3、19.3.6、19.2.9 才修复,所以应升级到最新补丁版本(撰稿时为19.5.3、19.4.5、19.3.7、19.2.10)。官方 Linux 安装包和镜像已包含打过补丁的 Ruby;自行安装 Ruby 的,还要另外检查 Ruby 版本。Alpine 的经历说明,只看 GitLab 版本号可能会误判。
有香港公司受到攻击吗?
我们没有看到关于香港受害者的公开报道。CISA 的列表只确认该漏洞已被利用,没有说明攻击对象。
其他 Ruby 应用会受影响吗?
根据 Ruby 官方说明,只有把攻击者可控的输入编译成正则表达式的应用才会受影响,但更新 Ruby 仍是稳妥的做法。
资料来源
- CISA:《CISA Adds Two Known Exploited Vulnerabilities to Catalog》,2026年10月29日
- CISA 已知被利用漏洞(KEV)目录(CVE-2026-97229)
- GitLab:《GitLab Critical Patch Release: 19.4.2, 19.3.5, 19.2.8》
- GitLab:《GitLab Critical Patch Release: 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13》
- GitLab:《GitLab Patch Release and Security Update: 19.5.3, 19.4.5, 19.3.7, 19.2.10, 19.1.10, 19.0.11, 18.11.14》
- Ruby:《Regexp compilation fixes related to GitLab's CVE-2026-89078, CVE-2026-93577, CVE-2026-97229 and CVE-2026-110264》,2026年10月23日
- Alpine Linux:《GitLab security incident: attempted exploitation of CVE-2026-97229》,2026年10月28日
- Rapid7:《CVE-2026-97229: Critical Unauthenticated Remote Code Execution in GitLab》
- 香港 HKCERT:GitLab 多个漏洞安全公告,2026年10月22日
