CRITICAL🇬🇧 English

CVE-2024-28185

Judge0 — ucieczka z sandbox przez symlink umożliwia RCE

CVSS 10.0v3.1pub. 2024-04-18upd. 2026-04-15

Podatność w systemie Judge0 pozwala atakującemu na ucieczkę ze środowiska sandbox poprzez podmianę pliku skryptu na symboliczny link (symlink), prowadząc do wykonania dowolnego kodu poza izolowanym środowiskiem. Uzyskanie oceny CVSS 10.0 wskazuje na pełną kompromitację systemu hosta bez żadnych wymagań wstępnych.

Pokaż oryginał (EN)

Judge0 is an open-source online code execution system. 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. When executing a submission, Judge0 writes a `run_script` to the sandbox directory. 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 the `f.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.

🤖 Analiza AI
Jak działa

Podczas wykonywania zgłoszonego kodu Judge0 zapisuje plik `run_script` do katalogu sandbox. Atakujący może przed tym krokiem umieścić w tym katalogu symboliczny link (symlink) o nazwie `run_script`, wskazujący na dowolny plik w systemie hosta poza sandbox. W efekcie operacja zapisu (`f.write`) trafia do wskazanego przez symlink pliku na niezabezpieczonym systemie, co umożliwia nadpisanie krytycznych skryptów i przejęcie wykonania kodu poza izolowanym środowiskiem. Podatność wynika z braku weryfikacji, czy ścieżka docelowa zapisu nie jest dowiązaniem symbolicznym (CWE-59, CWE-61).

Skutki

Atakujący może nadpisać dowolne pliki na systemie hosta i wykonać kod poza sandbox, co w praktyce oznacza pełne przejęcie kontroli nad serwerem uruchamiającym Judge0, w tym możliwość eskalacji uprawnień i trwałego skompromitowania systemu.

Mitygacja

Należy zastosować patche dostępne u producenta — commit 846d5839026161bb299b7a35fd3b2afb107992fc w repozytorium GitHub judge0/judge0 adresuje tę podatność. Zaleca się aktualizację do wersji zawierającej ten fix oraz ograniczenie dostępu do instancji Judge0 wyłącznie do zaufanych użytkowników do czasu wdrożenia poprawki.

Kogo dotyczy

Judge0 w wersji v1.13.0 i wcześniejszych — szczegóły wskazane w referencjach producenta (GitHub Security Advisory GHSA-h9g2-45c8-89cf)

Uwagi

Podatność dotyczy mechanizmu izolacji kodu w Judge0 (plik isolate_job.rb, linie 197–201 w wersji v1.13.0). Szczegóły techniczne oraz poprawka zostały opublikowane przez producenta w ramach GitHub Security Advisory GHSA-h9g2-45c8-89cf w dniu 2024-04-18.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
RCE
CWE
Referencje