CARVIEW |
Select Language
HTTP/2 200
date: Wed, 23 Jul 2025 19:25:26 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"426dc26fdefbb8c3d0030c43f537601d"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=at%2BoSLNoaZbOl79VUTGbWYB8mAddwD8waqLvCLlCz10tayYQag3ePE6kvvPMdY4OssBgf4VdmADiWPmDvVPhwPPcpf9yBeC7a2dKD57bhjNR5pRF0Vqe7UDCX5FJIksM0U5x2HRcEWUQ%2B0koBVKKKKnizZCo6JlPShaL97%2Fv8O2imwSktcnsknRerf%2FcZOS9CzxDlQf7IoWK%2FIEVSKjfO0h%2FzqeWjEbW%2FeAGq1QmhUM4DXkd7ZYdGidSkbcPVPIikvmb7xXwYtuU%2FXyUCTCWOg%3D%3D--gUkasytiJeaos3LU--%2FecRFvexyrjPOYR1V19XmQ%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.1291038806.1753298726; Path=/; Domain=github.com; Expires=Thu, 23 Jul 2026 19:25:26 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Thu, 23 Jul 2026 19:25:26 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: C5BA:EE750:76C1E:950CB:68813726
Sandbox Escape via Symbolic Link · Advisory · judge0/judge0 · GitHub
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 634
Sandbox Escape via Symbolic Link
Critical
Package
judge0/judge0
(Docker Hub)
Affected versions
<= 1.13.0
Patched versions
>= 1.13.1
Description
Severity
Critical
/ 10
CVSS v3 base metrics
Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CVE ID
CVE-2024-28185
Weaknesses
Weakness CWE-61
UNIX Symbolic Link (Symlink) Following
The product, when opening a file or directory, does not sufficiently account for when the file is a symbolic link that resolves to a target outside of the intended control sphere. This could allow an attacker to cause the product to operate on unauthorized files. Learn more on MITRE.Credits
-
stacksparrow4 Reporter
You can’t perform that action at this time.
Summary
The application does not account for symlinks placed inside the sandbox directory, which can be leveraged by an attacker to write to arbitrary files and gain code execution outside of the sandbox.
Details
When executing a submission, Judge0 writes a
run_script
to the sandbox directory as demonstrated in the following code snippet:View this source on Github here.
The security issue is that an attacker can create a symbolic link (symlink) at the path
run_script
before this code is executed, resulting in thef.write
writing to an arbitrary file on the unsandboxed system.An attacker can leverage this vulnerability to overwrite scripts on the system and gain code execution outside of the sandbox.
PoC
wget https://github.com/judge0/judge0/releases/download/v1.13.0/judge0-v1.13.0.zip unzip judge0-v1.13.0.zip cd judge0-v1.13.0
touch /tmp/poc
will have been executed outside of the sandbox. To confirm this, run the following command:Impact
An attacker can use this vulnerability to gain unsandboxed code execution on the Docker container running the submission job.
Additionally, the attacker may then escalate their privileges outside of the Docker container due to the Docker container being run using the
privileged
flag as specified indocker-compose.yml
. This will allow the attacker to mount the Linux host filesystem and the attacker can then write files (for example a malicious cron job) to gain access to the system.From this point the attacker will have complete access to the Judge0 system including the database, internal networks, the Judge0 webserver, and any other applications running on the Linux host.
Timeline
The bug was reported to maintainers on 4/3/2024. A patch was deployed on 6/3/2024, and a second one on 7/3/2024.