开源的Judge0 中存在多个沙箱逃逸漏洞,可导致系统遭完全接管

admin 2024年5月1日23:01:27评论6 views字数 1048阅读3分29秒阅读模式

开源的Judge0 中存在多个沙箱逃逸漏洞,可导致系统遭完全接管聚焦源代码安全,网罗国内外最新资讯!

编译:代码卫士

开源的在线代码执行系统中存在三个严重漏洞,可用于在目标系统上执行代码。

澳大利亚网络安全公司 Tanto 在报告中提到,这三个漏洞都属于严重级别,可导致“具有充分访问权限的对手执行沙箱逃逸并获得主机机器的 root 权限。”

Judge0维护人员表示,该项目是“健壮、可扩展和开源的在线代码执行系统”,可用于构建需要在线代码执行特性的应用程序如候选评估、在线学习和在线代码编辑器和IDE。

Judge0网站提到,它服务23个客户如 AIgoDaily、CodeChum和PYnative等。迄今为止该项目在GitHub上已被fork 412次。

这些漏洞由 Daniel Cooper 在2024年3月发现和报告,如下:

  • CVE-2024-28185(CVSS评分10):该应用程序并不负责位于沙箱目录中的符号链接,它可被用于写入任意文件并在沙箱外获得代码执行权限

  • CVE-2024-28189(CVSS评分10):对CVE-2024-28185的补丁绕过,攻击者可创建沙箱外文件的符号链接,在沙箱外的任意文件上运行 chown。

  • CVE-2024-29021(CVSS评分9.1):Judge0的默认配置可导致服务易受经由SSRF的沙箱逃逸,从而使对Judge0 API 具有充分访问权限的攻击者以目标机器上的root身份获得非沙箱的代码执行权限

该问题的根因在于名为 “isolate_job.rb”的Ruby脚本,它负责设立沙箱、运行代码并存储执行结果。具体而言,它在设立 bash 脚本执行基于提交语言的程序之前,创建符号链接,以便在未沙箱的系统上写入任意文件。攻击者可利用该漏洞在系统上覆写脚本,在沙箱外以及运行提交任务的 Docker 容器上获得代码执行权限。另外,攻击者可提升 Docker 容器外的权限,“导致攻击者增加Linux主机文件系统,写文件获得系统访问权限。攻击者将获得对 Judge0 系统包括数据库、内部网络、Judge0 web 服务器以及在 Linux 主机上运行的任何其它应用上的完整访问权限。”

CVE-2024-29021与允许和Docker内网中可用的 PostgreSQL 数据库通信的配置有关,可使对手武器化该SSRF连接到数据库并修改相关栏的数据类型,最终获得命令执行权限。

Judge0收到负责任的漏洞报告后,在2024年4月8日发布版本1.13.1修复了这些潜在威胁。

原文始发于微信公众号(代码卫士):开源的Judge0 中存在多个沙箱逃逸漏洞,可导致系统遭完全接管

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月1日23:01:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   开源的Judge0 中存在多个沙箱逃逸漏洞,可导致系统遭完全接管https://cn-sec.com/archives/2701821.html

发表评论

匿名网友 填写信息