Ievainojamība pac-resolver NPM pakotnē ar 3 miljoniem lejupielāžu nedēļā

Pac-resolver NPM pakotnei, kurai ir vairāk nekā 3 miljoni lejupielāžu nedēļā, ir ievainojamība (CVE-2021-23406), kas ļauj izpildīt tās JavaScript kodu lietojumprogrammas kontekstā, sūtot HTTP pieprasījumus no Node.js projektiem, kas atbalsta starpniekservera automātiskās konfigurācijas funkciju.

Pac-resolver pakotne parsē PAC failus, kas ietver automātisku starpniekservera konfigurācijas skriptu. PAC failā ir parasts JavaScript kods ar funkciju FindProxyForURL, kas nosaka starpniekservera izvēles loģiku atkarībā no resursdatora un pieprasītā URL. Ievainojamības būtība ir tāda, ka, lai izpildītu šo JavaScript kodu pac-resolver, tika izmantots Node.js nodrošinātais VM API, kas ļauj izpildīt JavaScript kodu citā V8 dzinēja kontekstā.

Norādītais API dokumentācijā ir skaidri atzīmēts kā nav paredzēts neuzticama koda palaišanai, jo tas nenodrošina pilnīgu izpildāmā koda izolāciju un ļauj piekļūt sākotnējam kontekstam. Problēma ir atrisināta versijā pac-resolver 5.0.0, kas ir pārvietota uz vm2 bibliotēku, kas nodrošina augstāku izolācijas līmeni, kas piemērots neuzticama koda palaišanai.

Ievainojamība pac-resolver NPM pakotnē ar 3 miljoniem lejupielāžu nedēļā

Izmantojot ievainojamu pac-resolver versiju, uzbrucējs, pārsūtot īpaši izstrādātu PAC failu, var panākt sava JavaScript koda izpildi projekta koda kontekstā, izmantojot Node.js, ja šajā projektā tiek izmantotas bibliotēkas, kurām ir atkarības. ar pac-resolver. Populārākā no problemātiskajām bibliotēkām ir Proxy-Agent, kas norādīta kā atkarība no 360 projektiem, tostarp urllib, aws-cdk, mailgun.js un firebase-tools, kopumā vairāk nekā trīs miljonus lejupielāžu nedēļā.

Ja lietojumprogramma, kas ir atkarīga no pac-resolver, ielādē PAC failu, ko nodrošina sistēma, kas atbalsta WPAD starpniekservera automātiskās konfigurācijas protokolu, uzbrucēji, kuriem ir piekļuve vietējam tīklam, var izmantot starpniekservera iestatījumu izplatīšanu, izmantojot DHCP, lai ievietotu ļaunprātīgus PAC failus.

Avots: opennet.ru

Pievieno komentāru