开源在线代码执行系统Judge0中的沙箱逃逸漏洞暴露系统以完成接管

阅读量76378

发布时间 : 2024-04-30 11:06:17

Judge0 开源在线代码执行系统中已披露多个严重安全漏洞,可被利用以获取目标系统上的代码执行权限。

澳大利亚网络安全公司 Tanto Security 在今天发布的一份报告中表示,这三个缺陷本质上都很严重,允许“拥有足够访问权限的对手执行沙箱逃逸并获得主机的 root 权限”。

Judge0(发音为“judge Zero”)被其维护者描述为“强大的、可扩展的、开源的在线代码执行系统”,可用于构建需要在线代码执行功能的应用程序,例如候选人评估、电子学习,以及在线代码编辑器和 IDE。

据其网站称,该服务已被 AlgoDaily、CodeChum 和 PYnative 等 23 家客户使用。迄今为止,该项目已在 GitHub 上分叉 412 次。

以下列出了 Daniel Cooper 于 2024 年 3 月发现并报告的缺陷 –

CVE-2024-28185(CVSS 评分:10.0) – 应用程序不考虑沙箱目录内放置的符号链接,攻击者可利用该符号链接写入任意文件并在沙箱外获得代码执行。
CVE-2024-28189(CVSS 评分:10.0) – CVE-2024-28185 的补丁绕过,源于对沙箱内不受信任的文件使用 UNIX chown 命令。攻击者可以通过创建指向沙箱外部文件的符号链接 (symlink) 来滥用此功能,从而允许攻击者对沙箱外部的任意文件运行 chown。
CVE-2024-29021(CVSS 评分:9.1)- Judge0 的默认配置使服务容易通过服务器端请求伪造 (SSRF) 进行沙箱逃逸。这使得对 Judge0 API 有足够访问权限的攻击者能够以目标计算机上的 root 身份获取未沙盒的代码执行。
该问题的根源在于名为“ isolate_job.rb ”的 Ruby 脚本,该脚本负责设置沙箱、运行代码并存储执行结果。

具体来说,它需要在设置 bash 脚本以基于提交语言执行程序之前在目录中创建符号链接,以便允许写入非沙盒系统上的任意文件。

威胁参与者可以利用此缺陷覆盖系统上的脚本,并在沙箱之外以及运行提交作业的 Docker 容器上获得代码执行。

更重要的是,攻击者可以在 Docker 容器之外升级其权限,因为它是使用docker-compose.yml 中指定的特权标志运行的。

Judge0 的 Herman Došilović 表示:“这将允许攻击者挂载 Linux 主机文件系统,然后攻击者可以写入文件(例如恶意 cron 作业)来访问系统。”

“从此时起,攻击者将可以完全访问 Judge0 系统,包括数据库、内部网络、Judge0 Web 服务器以及 Linux 主机上运行的任何其他应用程序。”

另一方面,CVE-2024-29021 与允许与内部 Docker 网络内可用的 Judge0 的 PostgreSQL 数据库进行通信的配置有关,从而使攻击者能够武器化 SSRF 以连接到数据库并更改相关数据类型列并最终获得命令注入。

经过负责任的披露,这些缺陷已在 2024 年 4 月 18 日发布的1.13.1 版本中得到解决。建议 Judge0 用户更新到最新版本,以减轻潜在威胁。

本文转载自:

如若转载,请注明出处: https://thehackernews.com/2024/04/sandbox-escape-vulnerabilities-in.html

安全客 - 有思想的安全新媒体

分享到:微信
+15赞
收藏
安全客
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66