Nel pacchetto NPM pac-resolver, che conta oltre 3 milioni di download settimanali, è stata rilevata una vulnerabilità (CVE-2021-23406) che consente l'esecuzione di codice JavaScript personalizzato nel contesto dell'applicazione durante l'invio di richieste HTTP da progetti Node.js che supportano la funzione di auto-configurazione del proxy.
Il pacchetto pac-resolver analizza i file PAC che includono uno script di auto-configurazione del proxy. Un file PAC contiene codice JavaScript standard con la funzione FindProxyForURL, che definisce la logica per la scelta del proxy in base all'host e all'URL richiesto. La vulnerabilità consiste nell'uso di un API VM fornita in Node.js per eseguire questo codice JavaScript in un contesto diverso all'interno del motore V8.
L'API indicato è esplicitamente contrassegnato nella documentazione come non destinato all'esecuzione di codice non fidato, poiché non fornisce un'adeguata isolamento dell'esecuzione del codice e consente l'accesso al contesto originale. Il problema è stato risolto nella versione pac-resolver 5.0.0, che è stata aggiornata per utilizzare la libreria vm2, offrendo un livello di isolamento superiore adatto per l'esecuzione di codice non fidato.

Utilizzando una versione vulnerabile di pac-resolver, un attaccante potrebbe eseguire il proprio codice JavaScript nel contesto del codice di un progetto che utilizza Node.js, se tale progetto utilizza librerie che presentano dipendenze con pac-resolver. La libreria problematica più popolare è Proxy-Agent, specificata nelle dipendenze di 360 progetti, tra cui urllib, aws-cdk, mailgun.js e firebase-tools, con oltre tre milioni di download settimanali.
Se un'applicazione che dipende da pac-resolver carica un file PAC fornito da un sistema che supporta il protocollo di configurazione automatica del proxy WPAD, gli aggressori con accesso alla rete locale possono sfruttare la diffusione delle impostazioni proxy attraverso DHCP per inserire file PAC dannosi.
Fonte: opennet.ru
