En el paquete NPM pac-resolver, que cuenta con más de 3 millones de descargas semanales, se ha descubierto una vulnerabilidad (CVE-2021-23406) que permite la ejecución de código JavaScript propio en el contexto de la aplicación al enviar solicitudes HTTP desde proyectos Node.js que soportan la función de autoconfiguración del proxy.
El paquete pac-resolver analiza archivos PAC que incluyen scripts de configuración automática de proxies. Un archivo PAC contiene código JavaScript normal con la función FindProxyForURL, que define la lógica para seleccionar un proxy según el host y la URL solicitada. La esencia de la vulnerabilidad es que, para ejecutar este código JavaScript en pac-resolver, se utilizaba la API VM proporcionada en Node.js, que permite ejecutar código JavaScript en un contexto diferente del motor V8.
La API mencionada está claramente marcada en la documentación como no adecuada para ejecutar código no confiable, ya que no proporciona un aislamiento completo del código ejecutado y permite el acceso al contexto original. El problema fue solucionado en la versión pac-resolver 5.0.0, que se ha cambiado para utilizar la biblioteca vm2, que ofrece un nivel más alto de aislamiento adecuado para la ejecución de código no confiable.

Al utilizar una versión vulnerable de pac-resolver, un atacante puede lograr la ejecución de su código JavaScript en el contexto del código del proyecto que utiliza Node.js al proporcionar un archivo PAC especialmente formado, si en dicho proyecto se utilizan bibliotecas que dependen de pac-resolver. La biblioteca más popular en esta problemática es Proxy-Agent, que está listada en las dependencias de 360 proyectos, incluyendo urllib, aws-cdk, mailgun.js y firebase-tools, que en total suman más de tres millones de descargas semanales.
Si una aplicación que tiene dependencias de pac-resolver carga un archivo PAC proporcionado por un sistema que soporta el protocolo de autoconfiguración de proxies WPAD, los atacantes que tienen acceso a la red local pueden aprovechar la propagación de configuraciones de proxy a través de DHCP para introducir archivos PAC maliciosos.
Fuente: opennet.ru
