Ranjivost u paketu pac-resolver NPM s 3 milijuna preuzimanja tjedno

NPM paket pac-resolver, koji ima više od 3 milijuna preuzimanja tjedno, ima ranjivost (CVE-2021-23406) koja dopušta izvršavanje njegovog JavaScript koda u kontekstu aplikacije prilikom slanja HTTP zahtjeva iz Node.js projekata koji podržava funkciju automatske konfiguracije proxy poslužitelja.

Paket pac-resolver analizira PAC datoteke koje uključuju skriptu za automatsku konfiguraciju proxyja. PAC datoteka sadrži regularni JavaScript kod s 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, a koji vam omogućuje izvršavanje JavaScript koda u drugom kontekstu V8 motora.

Navedeni API je u dokumentaciji izričito označen kao nenamijenjen za pokretanje nepouzdanog koda, budući da ne pruža potpunu izolaciju koda koji se izvodi i dopušta pristup izvornom kontekstu. Problem je riješen u pac-resolveru 5.0.0, koji je premješten na korištenje biblioteke vm2, koja pruža višu razinu izolacije prikladnu za pokretanje nepouzdanog koda.

Ranjivost u paketu pac-resolver NPM s 3 milijuna preuzimanja tjedno

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 ovisnosti s pac-rezolverom. Najpopularnija od problematičnih biblioteka je Proxy-Agent, navedena kao ovisnost o 360 projekata, uključujući urllib, aws-cdk, mailgun.js i firebase-tools, ukupno više od tri milijuna preuzimanja tjedno.

Ako aplikacija koja ima ovisnosti o pac-resolveru učita PAC datoteku koju pruža sustav koji podržava WPAD proxy protokol za automatsku konfiguraciju, 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