社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

GitLab RCE PoC公开,两个Notebook即可触发命令执行

FreeBuf • 3 月前 • 252 次点击  
FreeBuf


GitLab RCE PoC

来自depthfirst的安全研究员Wu Yuhang发布了一个有效的PoC(概念验证)利用程序,可在未修补的GitLab 18.11.3自托管服务器上以git用户身份执行命令。


普通认证用户只需提交两个特制的Jupyter notebook并请求其差异(diff)即可触发该漏洞。该攻击链无需管理员权限、CI/CD Runner访问、受害者交互,也无需访问其他用户的项目。


该公开利用程序针对x86-64架构的GitLab 18.11.3构建;底层Oj漏洞影响更广泛的版本。受影响的版本范围包括GitLab Community Edition (CE)和Enterprise Edition (EE) 15.2.0至18.10.7、18.11.0至18.11.4,以及19.0.0至19.0.1。


首批修复版本为18.10.8、18.11.5和19.0.2。Oj是一个基于Ruby的高性能JSON解析器,包含大量原生C代码。已发布的gem版本3.13.0至3.17.1存在漏洞;3.17.3是首个同时修复这两个问题的发布版本。漏洞影响Free、Premium和Ultimate版本。Ruby本身不受影响。


成功利用后,攻击者可以git用户身份执行命令。其实际影响范围取决于部署隔离程度,但可能包括源代码、Rails密钥、服务凭据、CI/CD数据以及应用程序可访问的内部服务。GitLab.com已于6月10日完成修补。


专用客户无需采取任何操作。自托管用户应迁移至包含修复程序的支持版本。Helm和Operator用户需要检查Webservice镜像内的GitLab版本,而不仅仅是Chart或Operator版本。depthfirst表示,截至7月24日,未发现野外利用事件。


无论是depthfirst的披露还是GitLab 6月10日的发布说明,均未列出这两个链式漏洞的CVE标识符或CVSS评分。两者均未提供临时解决方案;均指示自托管用户升级。


The Hacker News已就CVE状态、分类及利用证据向GitLab提问,同时询问depthfirst关于利用程序可移植性以及是否存在受支持的临时缓解措施。目前尚未收到回复。depthfirst在同一审查中列出了另外9个针对其他Oj漏洞的CVE。


GitLab RCE技术细节

Part01

利用Oj解析器的两个漏洞

GitLab的notebook渲染器将存储库控制的.ipynb JSON传递给长期运行的Puma worker中的Oj::Parser.usual.parse。这使得攻击者控制的notebook数据进入GitLab应用程序进程内Oj的原生解析器状态。


depthfirst的技术分析展示了两个漏洞的利用方式:一个漏洞控制回调指针,另一个泄露堆地址,从而缩小ASLR(地址空间布局随机化)搜索范围。


Oj将嵌套状态存储在一个固定的1024字节栈中,但从未检查深度是否超出限制。因此深度嵌套的数组可以向相邻解析器状态写入0x01字节。该利用程序破坏buf.head,导致Oj向realloc()传递伪造的内部指针。后续的Ruby数组分配会回收同一3584字节的jemalloc区域,并覆盖p->start。


Oj分配一个65565字节的对象键,将其长度截断为有符号16位字段中的29,并返回包含活动键分配指针的29字节。GitLab将该指针带入渲染的notebook diff中,为利用程序提供缩小ASLR搜索所需的地址泄露。在分析的包含两个worker的GitLab 18.11.3安装中,搜索通常需要5到10分钟。研究人员预计,在最广泛的成熟worker范围内,需要1到2小时。


Part02

漏洞披露与修复时间线

depthfirst于5月21日报告了Oj漏洞,维护者于5月27日合并了修复程序。Oj 3.17.3于6月4日发布。研究人员于6月5日报告了GitLab攻击链;depthfirst表示GitLab于6月8日确认。


据depthfirst称,GitLab于6月10日发布了修复版本,并于7月17日解决了该问题。The Hacker News审查发现,GitLab将Oj 3.17.3升级列在错误修复下,而非安全修复表中,并且未描述notebook diff RCE攻击链。


参考来源:

Researcher Publishes GitLab RCE PoC Letting Authenticated Users Run Commands as Git

https://thehackernews.com/2026/07/researcher-publishes-gitlab-rce-poc.html

推荐阅读


电报讨论


扫码加入AI安全交流群

下载FreeBuf知识大陆APP

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/199240