GitLab自建服务器RCE利用代码公开,管理员应立即升级
GitLab自建服务器RCE利用代码公开,未升级实例面临代码与密钥泄露风险
安全研究人员近日公开了一套针对GitLab自建服务器的远程代码执行利用链。攻击者无需获得GitLab管理员权限,只要拥有普通账号,并且能够向自己有权限的项目推送代码,就可能借助特制的Jupyter Notebook文件在GitLab服务器上执行系统命令。
相关漏洞此前已通过GitLab在2026年6月10日发布的版本更新得到修复,但由于修复内容最初被列入普通错误修复,而不是安全漏洞列表,一些管理员可能没有意识到此次更新的重要性。公开利用代码出现后,仍在运行旧版本的自建GitLab服务器面临更高风险。
攻击者如何利用Jupyter Notebook触发漏洞
GitLab支持直接在代码差异页面中显示Jupyter Notebook文件。服务器处理.ipynb文件时,会使用Ruby环境中的Oj JSON解析组件读取Notebook内容。
研究人员发现,特制JSON数据可以触发Oj组件中的两个内存安全问题。其中一个问题可以泄露服务器进程内存地址,另一个问题可以覆盖解析器内部数据。攻击者将两个问题组合后,可以使GitLab后台进程调用系统命令。
公开利用流程大致包括:
- 攻击者注册或控制一个GitLab普通账号;
- 在有推送权限的项目中提交恶意Notebook文件;
- 请求GitLab生成该文件的代码差异页面;
- 通过多次请求收集内存地址信息;
- 再次提交特制文件并触发命令执行。
攻击不要求管理员参与,也不需要受害者打开恶意页面。攻击者同样不需要拥有CI Runner权限,也不需要访问其他用户的私有项目。
哪些GitLab版本受到影响
公开研究显示,以下GitLab Community Edition和Enterprise Edition版本受到影响:
- GitLab 15.2.0至18.10.7;
- GitLab 18.11.0至18.11.4;
- GitLab 19.0.0至19.0.1。
GitLab已经在18.10.8、18.11.5和19.0.2中更新相关Oj组件。运行更早且已停止安全维护版本的用户,需要迁移到仍受支持的新版本,而不是只寻找旧版本补丁。
需要注意的是,研究人员公布的现有PoC主要针对x86-64环境中的GitLab 18.11.3,并依赖特定内存布局。这并不代表其他受影响版本安全,只是攻击者需要针对不同版本调整利用代码。
此次漏洞利用链目前没有公开CVE编号,因此网站发布文章时不应给它添加未经确认的CVE标识。
服务器被入侵后可能造成哪些后果
成功利用后,恶意命令以GitLab后台使用的git系统账号身份运行。攻击者能够进一步访问哪些资源,取决于GitLab服务器的权限配置和网络隔离方式。
潜在风险包括:
- 读取企业源代码和项目文件;
- 获取Rails密钥及应用配置;
- 窃取CI/CD变量和服务凭据;
- 访问内部软件包、镜像或构建资源;
- 利用GitLab服务器连接内部数据库和API;
- 篡改代码或在软件构建过程中植入恶意内容。
如果GitLab与生产服务器、Kubernetes集群、容器镜像仓库或云平台账号直接连接,一次代码服务器入侵可能继续扩大为供应链安全事件。
GitLab自建服务器如何检查与修复
管理员应首先检查实际运行的GitLab应用版本,而不能只查看Helm Chart或GitLab Operator版本。容器化部署环境应检查运行Puma进程的Webservice镜像。
建议采取以下措施:
- 将GitLab升级到18.10.8、18.11.5、19.0.2或更高版本;
- 优先升级到当前仍处于安全维护周期的版本;
- 检查近期出现的异常Notebook提交和代码差异请求;
- 审查GitLab后台进程、临时文件及异常外部连接;
- 轮换CI/CD变量、部署密钥和云平台访问凭据;
- 限制GitLab服务器访问生产环境的网络权限;
- 将代码平台与核心数据库、管理网络进行隔离;
- 对新注册用户和项目推送权限设置必要限制。
GitLab官方建议所有自建实例及时安装补丁。GitLab.com已经运行修复版本,GitLab Dedicated客户通常不需要自行执行升级。
代码管理服务器往往保存着企业最重要的数字资产,包括源代码、自动部署凭据和生产环境访问方式。与普通网站服务器相比,GitLab服务器一旦被入侵,更容易形成软件供应链风险。
企业租用云服务器部署GitLab时,不应仅配置高性能CPU、NVMe硬盘和大容量内存,还应限制服务器访问生产网络的权限,并将备份保存到独立位置。
高防服务器主要解决外部DDoS流量问题,无法替代应用补丁和权限隔离。对于自建GitLab、Jenkins、Harbor和其他开发平台,持续更新、最小权限和网络分区同样重要。
声明:本文由SellBGP编辑部依据主办方及公开渠道信息独立撰写。转载请注明出处。