Isolated-vm zakrpe uklanjaju moguć izlazak iz Node.js sandboksa

Kritična ranjivost GHSA-864f-rcv7-6rh4 u biblioteci isolated-vm omogućava kodu pokrenutom u JavaScript sandboxu da naruši granicu prema host procesu. Pogođene su sve verzije zaključno sa 7.0.0, dok su zakrpe objavljene u verzijama 6.2.0 i 7.0.1. Biblioteka na GitHubu ima više od 2.900 zvezdica i 190 forkova, a npm paket je tokom jedne sedmice zabeležio gotovo milion preuzimanja.
Isolated-vm služi za pokretanje nepouzdanog JavaScript koda u V8 Isolate okruženju. Svaki izolat je zasebna instanca Google V8 JavaScript motora, sa vlastitim stanjem i heap memorijom, pa više sandboxovanih okruženja može raditi istovremeno bez neposrednog deljenja podataka.
Greška je u prenosu vrednosti, ne u V8 granici
Endor Labs je identifikovao problem u klasi ExternalCopy, koja serijalizuje JavaScript objekte iz host izolata i deserijalizuje ih u gostujućem izolatu. Pošto se objekti ne mogu direktno preneti iz glavne Node.js niti u radni izolat, taj mehanizam predstavlja važnu vezu između dva okruženja.
Istraživač Cristian-Alexandru Staicu naveo je da zabuna tipova u obradi opcije transferList može kodu iz sandboksa omogućiti korupciju memorije host procesa. Polazeći od jednog ivm.Reference, standardnog načina da host sandboxu dodeli određenu mogućnost, istraživanje je demonstriralo eskalaciju od rušenja na kontrolisanoj adresi do preuzimanja toka izvršavanja hosta.
Potvrđeni uticaj i prioritet zakrpe
Najmanji demonstrirani uticaj je pouzdano izazivanje pada host procesa signalom SIGSEGV, odnosno uskraćivanje usluge. Održavalac projekta Marcel Laverdet naveo je i maksimalni demonstrirani uticaj: preuzimanje toka izvršavanja host procesa, što otvara mogućnost udaljenog izvršavanja koda u hostu.
Bitno je da granica samog V8 Isolate mehanizma, prema navodima istraživača, nije bila narušena. Propust se nalazi u C++ vezivnom sloju koji prosleđuje vrednosti preko te granice. To podseća na bezbednosne rizike u zavisnostima i integracionim slojevima, poput tema iz bezbednosne rizike u zavisnostima i integracionim slojevima, gde posledice često zavise od načina na koji su komponente povezane.
Šta proveriti u razvojnim okruženjima
Organizacije koje koriste isolated-vm za izvršavanje nepouzdanog JavaScript koda treba da utvrde instaliranu verziju i pređu na 6.2.0 ili 7.0.1, u skladu sa granom paketa koju održavaju. Takođe je korisno pregledati kojim sandboxovima se prosleđuje ivm.Reference, jer je taj objekat deo demonstriranog scenarija napada.
Detalji kompletnog eksploata nisu objavljeni kako bi se smanjila mogućnost zloupotrebe. Praktičan poslovni zaključak je jasan: ažuriranje isolated-vm i kontrola sposobnosti dodeljenih sandboxu treba da budu deo redovnog upravljanja Node.js zavisnostima.

