Ranjivost u pac-resolver NPM paketu sa 3 miliona preuzimanja sedmično

Pac-resolver NPM paket, koji ima preko 3 miliona preuzimanja tjedno, ima ranjivost (CVE-2021-23406) koja omogućava izvršavanje njegovog JavaScript koda u kontekstu aplikacije prilikom slanja HTTP zahtjeva iz Node.js projekata koji podržava funkciju automatske konfiguracije proxy servera.

Pac-resolver paket analizira PAC datoteke koje uključuju skriptu za automatsku konfiguraciju proxyja. PAC datoteka sadrži regularni JavaScript kod sa funkcijom FindProxyForURL koja definira logiku za odabir proxyja ovisno o hostu i traženom URL-u. Suština ranjivosti je da je za izvršavanje ovog JavaScript koda u pac-resolveru korišten VM API koji se nalazi u Node.js, koji vam omogućava da izvršite JavaScript kod u drugom kontekstu V8 motora.

Navedeni API je u dokumentaciji eksplicitno označen kao nije namijenjen za pokretanje nepouzdanog koda, jer ne pruža potpunu izolaciju koda koji se izvodi i dozvoljava pristup originalnom kontekstu. Problem je rešen u pac-resolveru 5.0.0, koji je prebačen da koristi vm2 biblioteku, koja obezbeđuje viši nivo izolacije pogodan za pokretanje nepouzdanog koda.

Ranjivost u pac-resolver NPM paketu sa 3 miliona preuzimanja sedmično

Kada koristi ranjivu verziju pac-resolvera, napadač putem prijenosa posebno dizajnirane PAC datoteke može postići izvršenje svog JavaScript koda u kontekstu koda projekta koji koristi Node.js, ako ovaj projekt koristi biblioteke koje imaju zavisnosti sa pac-resolverom. Najpopularnija od problematičnih biblioteka je Proxy-Agent, naveden kao zavisnost od 360 projekata, uključujući urllib, aws-cdk, mailgun.js i firebase-tools, ukupno više od tri miliona preuzimanja sedmično.

Ako aplikacija koja ovisi o pac-resolveru učita PAC datoteku koju obezbjeđuje sistem koji podržava protokol za automatsku konfiguraciju WPAD proxyja, tada napadači s pristupom lokalnoj mreži mogu koristiti distribuciju proxy postavki putem DHCP-a za umetanje zlonamjernih PAC datoteka.

izvor: opennet.ru

Dodajte komentar