Judge0 kritična ranjivost

Judge0 je široko rasprostranjen sistem otvorenog kôda za izvršavanje kôda na mreži koji omogućava razvoj aplikacija koje zahtijevaju funkcije za izvršavanje kôda na mreži, kao što su procjena kandidata, internet učenje i internet uređivači kôdova i integrisana razvojna okruženja (eng. integrated development environment – IDE). Podržava više od 20 klijenata i ima preko 300 sopstvenih instanci koje se trenutno koriste.

Judge0

Judge0 kritična ranjivost; Source: Bing Image Creator

JUDGE0

Judge0 je sistem otvorenog kôda za izvršavanje kôda na mreži koji omogućava korisnicima da prave aplikacije koje zahtijevaju funkcije izvršavanja internet kôda. Usluga je opisana kao robusna, skalabilna i bezbjedna i koristi je više od 20 klijenata, uključujući AlgoDaily, CodeChum i PYnative, između ostalih.

Primarna funkcija Judge0 sistema je izvršavanje proizvoljnog kôda unutar bezbjednog izolovanog okruženja (eng. sandbox environment). Ova funkcija ga čini neophodnim alatom za različite industrije i aplikacije koje zahtijevaju izvršavanje kôda na mreži. Usluga podržava više programskih jezika, uključujući Python, Ruby, Node.js, PHP, Perl i druge.

Bezbjednosni model sistema je zasnovan na izolovanom okruženju koje je dizajnirano da spriječi neovlašteni pristup ili izvršenje zlonamjernog kôda van definisanih granica. Međutim, otkrivene su ranjivosti od strane kompanije Tanto Security, koje bi mogle omogućiti napadaču sa dovoljnim porastom pristupa izvrši bjekstvo iz izolovanog okruženja i dobije root dozvole na glavnoj mašini.

 

CVE-2024-28185

CVE-2024-28185 omogućava napadaču da iskoristi simbolične veze smještene unutar izolovanog direktorijuma za pisanje u proizvoljne datoteke i ostvarivanje izvršavanja kôda izvan izolovanog okruženja. Ova ranjivost ima CVSS ocjenu 10,0, što ukazuje da je problem visoke ozbiljnosti koji bi mogao dovesti do značajne štete ako se eksploatiše.

Osnovni uzrok ove ranjivosti leži u tome kako aplikacija rukuje simboličkim vezama unutar izolovanog direktorijuma. Simboličke veze (eng. symlinks) su posebne datoteke koje djeluju kao prečice do drugih datoteka ili direktorijuma u ​​sistemu datoteka. U kontekstu Judge0, napadač bi mogao da postavi zlonamjernu simboličku vezu unutar izolovanog okruženja i manipuliše njome da zapiše podatke u proizvoljne datoteke izvan izolovanog okruženja.

Da bi iskoristio ovu ranjivost, napadaču bi prvo trebao pristup ciljnoj mašini ili mreži na kojoj je instaliran Judge0. Kada stekne taj pristup, on može da kreira posebno napravljenu simboličku vezu unutar s izolovanog direktorijuma i da manipulišu njome na takav način da zapišu podatke izvan izolovanog okruženja. Ovo bi potencijalno moglo dovesti do izvršavanja kôda sa povišenim privilegijama, omogućavajući napadaču da dobije root pristup glavnoj mašini.

 

CVE-2024-28189

CVE-2024-28189 ranjivost, kada se iskoristi, može omogućiti napadaču da zaobiđe ispravku za drugu poznatu ranjivost (CVE-2024-28185) i dobije izvršenje kôda izvan izolovanog okruženja.

Osnovni uzrok ovog problema leži u korištenju UNIX komande chown na nepouzdanim datotekama u okviru izolovanog okruženja Judge0. Komanda chown je moćan uslužni program koji mijenja vlasništvo nad datotekama, dozvole ili druge atribute za datoteke i direktorijume. U kontekstu Judge0, koristi se za postavljanje vlasnika i grupe datoteka generisanih tokom izvršavanja kôda. Međutim, kada napadač može da manipuliše ovim nepouzdanim datotekama, on može bi da kreira simboličke veze koje upućuju na proizvoljne datoteke izvan  izolovanog okruženja.

Kreiranjem simbolične veze unutar direktorijuma izolovanog okruženja koje ukazuje na datoteku van njega, napadač može efikasno da prevari Judge0 da primijeni chown dozvole na spoljnu datoteku kao da je unutar izolovanog okruženja. Ovo bi napadaču dalo kontrolu nad ciljnom datotekom i potencijalno dovelo do proizvoljnog izvršavanja kôda ili drugih zlonamjernih aktivnosti. CVSS ocjena doseljena ranjivosti CVE-2024-28189 je 10,0, što ukazuje da ova ranjivost predstavlja visok rizik za pogođene sisteme.

 

CVE-2024-29021

CVE-2024-29021 je ranjivost koja bi mogla da omogući napadaču da izvrši bjekstvo iz izolovanog okruženja i dobije root pristup glavnoj mašini. Ova ranjivost se odnosi na problem falsifikovanja zahteva na strani servera (eng. Server-Side Request Forgery – SSRF) u podrazumijevanoj konfiguraciji Judge0. SSRF napadi se dešavaju kada napadač prevari internet aplikaciju da napravi nenamjerne HTTP zahteve u njihovo ime. U ovom slučaju, napadač sa dovoljnim API pristupom Judge0 mogao bi da iskoristi ranjivost i da dobije izvršenje kôda van izolovanog okruženja kao root na ciljnoj mašini. CVSS ocjena za CVE-2024-29021 je 9,1, što ukazuje da ima visok nivo ozbiljnosti.

 

ZAKLJUČAK

Judge0 je sistem za izvršavanje kôda na mreži otvorenog kôda koji obezbjeđuje bezbjedno okruženo okruženje za pokretanje proizvoljnog kôda. Široko je prihvaćen u raznim industrijama i aplikacijama zbog svoje fleksibilnosti i skalabilnosti. Međutim, otkrivene ranjivosti mogu dozvoliti napadačima da izvedu bjekstvo iz izolovanog okruženja i dobiju root pristup glavnoj mašini, što predstavlja značajnu prijetnju za Judge0 korisnike.

 

ZAŠTITA

Evo nekoliko preporučenih koraka koji će pomoći u zaštiti od potencijalnih ranjivosti u Judge0:

  1. Uvjeriti se da je instalacija Judge0 ažurna sa najnovijim ispravkama i verzijama. Ranjivosti iznad pomenute utiču na starije verzije Judge0 pre 1.13.1, tako da bi ažuriranje trebalo da ublaži ove rizike,
  2. Pošto je Judge0 dizajniran za pokretanje proizvoljnog kôda u bezbjednom okruženju, neophodno je koristiti izolovano okruženje ili okruženje u kontejnerima za pokretanje podnesaka. Ovaj pristup može pomoći da se ograniči potencijalni uticaj bilo koje ranjivosti i spriječi napadači da dobiju neovlašteni pristup host mašini,
  3. Koristiti snažne mehanizme kontrole pristupa za ograničavanje ko ima dozvolu da pošalje kôd Judge0. Ograničiti pristup samo na pouzdane korisnike ili timove i razmislite o primjeni autentifikacije u više koraka radi dodatne bezbednosti,
  4. Redovno nadgledati evidencije koje generiše Judge0 u potrazi za sumnjivim aktivnostima ili neovlaštenim pokušajima izvršavanja skripti izvan izolovanog okruženja. Ova praksa može pomoći kod ranog otkrivanja potencijalnih napada i pružanja adekvatnih odgovora na njih,
  5. Implementirati Web Application Firewall – WAF, što može da obezbijedi dodatni nivo bezbednosti, pomažući blokiranju poznatih vektora napada i sprečavajući zlonamjerni saobraćaj da stigne do Judge0 instalacije,
  6. Obavljati redovne preglede kôda kako bi se osiguralo da su sve prilagođene skripte ili konfiguracije koje se koriste sa Judge0 sistemom bezbjedne i bez ranjivosti. Ova praksa može pomoći u sprečavanju potencijalnih problema pre nego što ih napadači iskoriste,
  7. Ako je moguće, segmentirati mrežu tako da Judge0 bude izolovan od drugih kritičnih sistema i aplikacija. U slučaju ugrožavanja, ovaj pristup može ograničiti uticaj na ukupnu infrastrukturu,
  8. Osigurati da svi korisnički nalozi povezani sa Judge0 imaju jake lozinke kako bi se spriječio neovlašteni pristup. Razmisliti o primjeni politike lozinki koja nameće redovne promjene lozinki i zahteve za složenošću,
  9. Obezbijediti obuku i programe podizanja svesti za korisnike koji komuniciraju sa Judge0, obezbeđujući da razumiju rizike uključene u pokretanje proizvoljnog kôda u bezbjednom okruženju i da prate najbolje prakse za bezbjedno korišćenje.

Možda vas interesuje i...

Komentariši

Vaša email adresa neće biti objavljivana. Neophodna polja su označena sa *


The reCAPTCHA verification period has expired. Please reload the page.