Pac-resolver NPM paketo pažeidžiamumas su 3 mln. atsisiuntimų per savaitę

Pac-resolver NPM paketas, kuris per savaitę atsisiunčiamas daugiau nei 3 milijonus kartų, turi pažeidžiamumą (CVE-2021-23406), leidžiantį vykdyti jo JavaScript kodą programos kontekste siunčiant HTTP užklausas iš Node.js projektų, kurie palaiko tarpinio serverio automatinio konfigūravimo funkciją.

Paketas pac-resolver analizuoja PAC failus, kuriuose yra automatinis tarpinio serverio konfigūracijos scenarijus. PAC faile yra įprastas JavaScript kodas su funkcija FindProxyForURL, kuri apibrėžia tarpinio serverio pasirinkimo logiką, atsižvelgiant į pagrindinį kompiuterį ir prašomą URL. Pažeidžiamumo esmė ta, kad šiam JavaScript kodui pac-resolver paleisti buvo naudojama Node.js pateikta VM API, kuri leidžia vykdyti JavaScript kodą kitame V8 variklio kontekste.

Nurodyta API dokumentacijoje aiškiai pažymėta kaip neskirta paleisti nepatikimą kodą, nes ji neužtikrina visiško vykdomo kodo izoliavimo ir leidžia pasiekti pradinį kontekstą. Problema buvo išspręsta naudojant pac-resolver 5.0.0, kuri buvo perkelta į vm2 biblioteką, kuri užtikrina aukštesnį izoliacijos lygį, tinkantį nepatikimo kodo paleidimui.

Pac-resolver NPM paketo pažeidžiamumas su 3 mln. atsisiuntimų per savaitę

Naudodamas pažeidžiamą pac-resolver versiją, užpuolikas, perdavęs specialiai sukurtą PAC failą, gali pasiekti savo JavaScript kodo vykdymą projekto kodo kontekste naudojant Node.js, jei šis projektas naudoja bibliotekas, turinčias priklausomybių. su pac-resolver. Populiariausia iš probleminių bibliotekų yra Proxy-Agent, įtraukta į 360 projektų, įskaitant urllib, aws-cdk, mailgun.js ir firebase-tools, iš viso atsisiunčiama daugiau nei tris milijonus per savaitę.

Jei programa, kuri yra priklausoma nuo pac-resolver, įkelia PAC failą, kurį teikia sistema, palaikanti WPAD tarpinio serverio automatinio konfigūravimo protokolą, užpuolikai, turintys prieigą prie vietinio tinklo, gali naudoti tarpinio serverio parametrų paskirstymą per DHCP, kad įterptų kenkėjiškus PAC failus.

Šaltinis: opennet.ru

Добавить комментарий