In het NPM-pakket pac-resolver, dat meer dan 3 miljoen downloads per week heeft, is een kwetsbaarheid (CVE-2021-23406) ontdekt die het mogelijk maakt om eigen JavaScript-code uit te voeren in de context van de applicatie bij het verzenden van HTTP-verzoeken vanuit Node.js-projecten die de functie voor automatische proxy-configuratie ondersteunen.
Het pac-resolver pakket parseert PAC-bestanden die een script voor automatische proxy-configuratie bevatten. Het PAC-bestand bevat reguliere JavaScript-code met de functie FindProxyForURL, die de logica voor het selecteren van een proxy bepaalt afhankelijk van de host en de gevraagde URL. De kern van de kwetsbaarheid is dat de verstrekte Node.js API VM werd gebruikt om deze JavaScript-code uit te voeren in een andere context van de V8-engine.
De betreffende API is in de documentatie duidelijk gemarkeerd als niet bedoeld om code uit te voeren die niet vertrouwd is, omdat het geen volledige isolatie voor de uitgevoerde code biedt en toegang verleent tot de oorspronkelijke context. Het probleem is verholpen in de release van pac-resolver 5.0.0, die is overgestapt op het gebruik van de vm2-bibliotheek, die een hoger niveau van isolatie biedt, geschikt voor het uitvoeren van niet-vertrouwde code.

Bij gebruik van de kwetsbare versie van pac-resolver kan een aanvaller door het verstrekken van een speciaal gevormd PAC-bestand zijn eigen JavaScript-code laten uitvoeren in de context van de code van een project dat Node.js gebruikt, als in dit project bibliotheken worden gebruikt die afhankelijkheden met pac-resolver hebben. Een van de meest populaire problematische bibliotheken is Proxy-Agent, die in de afhankelijkheden staat van 360 projecten, waaronder urllib, aws-cdk, mailgun.js en firebase-tools, die samen meer dan drie miljoen downloads per week vertegenwoordigen.
Als een applicatie die afhankelijkheden met pac-resolver heeft, een PAC-bestand laadt dat door een WPAD-proxy-configuratie-systeem wordt geleverd, kunnen aanvallers die toegang hebben tot het lokale netwerk misbruik maken van het verspreiden van proxy-instellingen via DHCP om kwaadwillige PAC-bestanden in te voegen.
Bron: opennet.ru
