【高危漏洞预警】GitLab CI/CD正则编译器整数溢出远程代码执行漏洞CVE-2026-97229
飓风网络安全
2026年10月13日 19:53
北京
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
一、漏洞概述
GitLab CI/CD流水线配置解析模块内置正则表达式编译器,在解析.gitlab-ci.yml内自定义正则表达式时,对正则长度计算缺少严格校验,触发整数溢出漏洞。
攻击者可提交精心构造的恶意正则写入CI/CD配置文件,当GitLab后端编译该正则时发生内存越界写入,最终实现未授权远程代码执行,直接拿下GitLab服务器最高权限。
该漏洞属于内存破坏类高危漏洞,CVSS满分10分,攻击向量AV:N,无权限要求、无交互,成功利用可接管整个GitLab实例,窃取代码仓库、账号凭证、CI密钥,横向渗透内网。
二、影响版本
✅ 受影响版本(私有化自建实例)
• GitLab CE / EE 19.1 ~ 19.2.7
• GitLab CE / EE 19.3.0 ~ 19.3.3
• GitLab CE / EE 19.4.0 ~ 19.4.1
✅ 安全修复版本(强制升级目标)
• 19.2.8
• 19.3.4
• 19.4.2
重要说明:GitLab SaaS(gitlab.com)、Dedicated云托管实例已经厂商后台修复,不受此漏洞影响;仅自建私有化部署的GitLab存在风险。
三、漏洞原理
-
GitLab CI解析.gitlab-ci.yml配置,读取流水线规则中的正则表达式;
-
正则编译器计算缓冲区分配长度时,长度变量发生整数溢出,数值回绕变成很小的正数;
-
程序按溢出后的小值分配内存缓冲区,实际正则数据远大于分配内存,发生堆缓冲区越界写入;
-
攻击者通过精准构造正则payload,控制内存布局,篡改程序执行流,实现远程代码执行。
攻击链:
公网访问GitLab实例 → 提交包含恶意正则的CI配置 → 后端解析编译正则触发整数溢出 → 内存损坏 → RCE → 获取服务器权限。
四、风险危害
-
未授权RCE,外部攻击者无需注册账号,直接获取服务器操作系统权限;
-
窃取所有仓库源代码、CI/CD密钥、数据库账号、SSH私钥、运维凭证;
-
篡改仓库代码,植入后门、投毒供应链,污染研发上线流程;
-
以GitLab服务器为支点横向渗透内网服务器、容器集群;
-
泄露企业核心知识产权,引发数据安全、等保合规、供应链安全事件。
五、检测排查方案
5.1 资产自查
-
测绘公网资产,识别自建GitLab(端口80/443),查看底部版本号;
-
确认实例类型:私有化部署为高风险,GitLab SaaS无风险。
5.2 日志审计
• 查看GitLab CI流水线处理日志:/var/log/gitlab/
• 检索异常CI配置提交记录、超长正则表达式解析任务、程序段错误(segfault)崩溃日志;
• 检查是否存在匿名提交CI配置的异常访问记录。
5.3 流量侧检测规则
特征:HTTP请求上传.gitlab-ci.yml,YAML内包含超长、特殊构造正则表达式,用于CI rules匹配。
注意:Payload可变形,仅字符串匹配容易绕过,建议结合GitLab进程崩溃告警联动。
六、应急处置方案(优先级)
✅ 首选:立即升级到修复版本 19.2.8 /19.3.4 /19.4.2
GitLab官方明确:无可靠临时缓解方案,仅升级能彻底修复
✅ 临时防护(升级前应急兜底,不能根治漏洞)
-
网络ACL:公网防火墙限制GitLab Web访问源IP,仅企业内网运维IP可访问;
-
关闭匿名访问仓库、匿名提交/创建分支的权限;
-
WAF拦截包含超长正则表达式的YAML文件上传请求;
-
监控gitlab-workhorse、sidekiq进程异常崩溃,一旦告警立即隔离主机取证。
✅ 事件响应(确认被入侵时)
-
隔离GitLab服务器,断网取证;
-
全盘排查新增后门、恶意账号、定时任务;
-
重置所有CI密钥、数据库密码、仓库SSH密钥;
-
审计所有代码提交,排查是否存在代码投毒;
-
复盘供应链风险,检查上线业务是否植入恶意代码。
七、长期安全建议
-
私有化GitLab禁止直接暴露互联网,通过VPN/堡垒机访问;
-
CI/CD配置增加静态扫描,检测恶意正则、危险表达式;
-
GitLab纳入重点资产,定期版本巡检、漏洞扫描;
-
研发供应链安全管控,限制匿名创建分支、提交流水线;
5. 建立组件漏洞应急SOP,开源代码管理平台高危漏洞72小时响应。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论