I NPM-paketet pac-resolver, som har mer Àn 3 miljoner nedladdningar per vecka, har en sÄrbarhet (CVE-2021-23406) upptÀckts som gör det möjligt att köra sin egen JavaScript-kod i kontexten av applikationen nÀr HTTP-förfrÄgningar skickas frÄn Node.js-projekt som stöder auto-konfigurering av proxyservrar.
Paketet pac-resolver analyserar PAC-filer som inkluderar skript för automatisk konfiguration av proxyservrar. PAC-filen innehÄller vanlig JavaScript-kod med funktionen FindProxyForURL, som definierar logiken för att vÀlja proxy beroende pÄ vÀrd och begÀrt URL. SÄrbarheten bestÄr i att den JavaScript-kod som utförs i pac-resolver anvÀnder det API i Node.js som kallas VM, vilket möjliggör körning av JavaScript-kod i en annan kontext av V8-motorn.
Det angivna API:et Àr tydligt markerat i dokumentationen som inte avsett för att köra otillförlitlig kod, dÄ det inte erbjuder fullstÀndig isolering av den körda koden och tillÄter tillgÄng till den ursprungliga kontexten. Problemet ÄtgÀrdades i pac-resolver version 5.0.0, som har bytt till att anvÀnda biblioteket vm2, vilket erbjuder en högre grad av isolering lÀmplig för körning av otillförlitlig kod.

Vid anvÀndning av den sÄrbara versionen av pac-resolver kan en angripare genom att överföra en sÀrskilt formaterad PAC-fil Ästadkomma körning av sin JavaScript-kod i kontexten av koden i projektet som anvÀnder Node.js, om detta projekt anvÀnder bibliotek som har beroenden till pac-resolver. Den mest populÀra av de problematiska biblioteken Àr Proxy-Agent, som anges i beroenden hos 360 projekt, inklusive urllib, aws-cdk, mailgun.js och firebase-tools, som tillsammans har mer Àn tre miljoner nedladdningar per vecka.
Om en applikation som har beroenden till pac-resolver laddar en PAC-fil som tillhandahÄlls av ett system som stöder automatiserad proxykonfiguration via WPAD, kan angripare som har tillgÄng till det lokala nÀtverket utnyttja spridningen av proxyinstÀllningar via DHCP för att införa skadliga PAC-filer.
KĂ€lla: opennet.ru
