În pachetul NPM pac-resolver, care are peste 3 milioane de descărcări pe săptămână, a fost identificată o vulnerabilitate (CVE-2021-23406) care permite execuția codului JavaScript propriu în contextul aplicației atunci când se trimit cereri HTTP din proiecte Node.js care suportă funcția de auto-configurare a serverului proxy.
Pachetul pac-resolver analizează fișierele PAC care includ un script pentru configurarea automată a serverului proxy. Fișierul PAC conține cod JavaScript obișnuit cu funcția FindProxyForURL, care definește logica de selecție a proxy-ului în funcție de gazdă și URL-ul solicitat. Esența vulnerabilității este că execuția acestui cod JavaScript în pac-resolver utiliza API-ul VM din Node.js, permițând execuția codului JavaScript într-un alt context al motorului V8.
API-ul menționat este marcat în mod clar în documentație ca nefiind destinat execuției codului nerecunoscut, deoarece nu oferă o izolare completă a codului executat și permite accesul la contextul inițial. Problema a fost rezolvată în versiunea pac-resolver 5.0.0, care a fost actualizată pentru a folosi biblioteca vm2, oferind un nivel mai ridicat de izolare, potrivit pentru execuția codului nerecunoscut.

Când se folosește versiunea vulnerabilă a pac-resolver, un atacator poate, prin trimiterea unui fișier PAC special conceput, să obțină execuția propriului cod JavaScript în contextul codului proiectului care utilizează Node.js, dacă în acest proiect sunt utilizate biblioteci care depind de pac-resolver. Cea mai populară dintre bibliotecile afectate este Proxy-Agent, care apare în dependențele a 360 de proiecte, inclusiv urllib, aws-cdk, mailgun.js și firebase-tools, cu un total de peste trei milioane de descărcări pe săptămână.
Dacă aplicația care are dependențe de pac-resolver încarcă un fișier PAC furnizat de un sistem care suportă protocolul de auto-configurare a proxy-ului WPAD, atacatorii cu acces la rețeaua locală pot profita de propagarea setărilor proxy prin DHCP pentru a introduce fișiere PAC malițioase.
Sursa: opennet.ro
