CARVIEW |
Select Language
HTTP/2 200
date: Tue, 22 Jul 2025 01:56:54 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/"8b88a05a02ea3459b9666a94c48d6edc"
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=bGqFP0WiCJNea7Pty672rgdK8vvnmLWb7qn3TnTVRfNrwDOjy5CxrCgF9MYmsDKVhQfP%2FfaHeyN7hGq8cVmv1kqZnYaT3mX9KjHkiAdrXYeLMlxFmkAkL6gAYzO6SazUeQlX7ANdRa26TBsYHz8vEL2MBgI%2FVH71yU%2BlFO%2FlRZHj%2FOHNt9BfqxsqBYdGYYjgdxLtvYZJeJEr91%2F8YiGQ8AkPcsohk9fnsNJOfEaG78WoZ43Dw6FQTGdkaDNixDVBZVAmnAx4wZ9UQgAIWvNqhA%3D%3D--L7dL4vSDTpTpRsN3--7Oq8WqL7UWjJIdMnoOaxrg%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.1636620630.1753149413; Path=/; Domain=github.com; Expires=Wed, 22 Jul 2026 01:56:53 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Wed, 22 Jul 2026 01:56:53 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: CCAC:804EF:59B59:883EF:687EEFE5
SSRF into Sandbox Escape through Unsafe Default Configuration · Advisory · judge0/judge0 · GitHub
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 632
SSRF into Sandbox Escape through Unsafe Default Configuration
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
High
Privileges required
None
User interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H
CVE ID
CVE-2024-29021
Weaknesses
Weakness CWE-918
Server-Side Request Forgery (SSRF)
The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination. Learn more on MITRE.Weakness CWE-1393
Use of Default Password
The product uses default passwords for potentially critical functionality. Learn more on MITRE.Credits
-
stacksparrow4 Reporter
You can’t perform that action at this time.
Summary
The default configuration of Judge0 leaves the service vulnerable to a sandbox escape via Server Side Request Forgery (SSRF). This allows an attacker with sufficient access to the Judge0 API to obtain unsandboxed code execution as root on the target machine.
Details
Judge0 has a configuration option labelled
enable_network
which allows the sandboxed application to perform network requests. This includes communicating with Judge0's PostgreSQL database which is available inside the internal Docker network.The exploit targets the following lines of code (found here):
This code is usually safe from command injection vulnerabilities as all variables injected into the shell command are either string literals or numerical values. However, by using the SSRF to connect to the database and change the datatype of relevant columns it is still possible to get command injection.
PoC
This PoC targets the default configuration of Judge0 to simulate an end user following the self hosted deployment procedure.
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
docker compose down -v && docker compose up -d
poc
indicating that the filepoc
was created.Impact
An attacker can use this vulnerability to gain unsandboxed code execution on the Docker container running the submission job.
This vulnerability is not as severe as
CVE-2024-28185
as it relies on the following circumstances:ALLOW_ENABLE_NETWORK
to be eithertrue
or empty injudge0.conf
.POSTGRES_PASSWORD
must be default, or bruteforcable.judge0.conf
indicates that the password must be changed, however many users following the setup guide may not be aware of this field in the configuration.An attacker successfully exploiting this vulnerability may then escalate their privileges outside of the Docker container due to the Docker container being run using the
privileged
. 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 host system.From this point the attacker will have complete access to the Judge0 host system including the database, internal networks, the Judge0 webserver, and any other applications running on the Linux host.