Une vulnérabilité (CVE-2021-23406) a été identifiée dans le paquet NPM pac-resolver, qui compte plus de 3 millions de téléchargements par semaine, permettant l'exécution de son propre code JavaScript dans le contexte d'une application lors de l'envoi de requêtes HTTP depuis des projets Node.js prenant en charge la fonction de configuration automatique de proxy.
Le paquet pac-resolver analyse les fichiers PAC, qui contiennent un script de configuration automatique de proxy. Un fichier PAC contient un code JavaScript standard avec la fonction FindProxyForURL, qui détermine la logique de sélection du proxy en fonction de l'hôte et de l'URL demandée. La vulnérabilité réside dans le fait que l'exécution de ce code JavaScript dans pac-resolver était réalisée à l'aide de l'API VM fournie dans Node.js, permettant d'exécuter du code JavaScript dans un autre contexte du moteur V8.
Cette API est explicitement marquée dans la documentation comme non destinée à exécuter du code non fiable, car elle ne fournit pas une isolation complète de l'exécution du code et permet d'accéder au contexte d'origine. Le problème a été corrigé dans la version pac-resolver 5.0.0, qui a migré vers l'utilisation de la bibliothèque vm2, offrant un niveau d'isolation plus élevé, adapté à l'exécution de code non fiable.

En utilisant la version vulnérable de pac-resolver, un attaquant peut, en fournissant un fichier PAC spécialement conçu, exécuter son propre code JavaScript dans le contexte du code du projet utilisant Node.js, si ce projet utilise des bibliothèques ayant des dépendances avec pac-resolver. La bibliothèque la plus problématique est Proxy-Agent, mentionnée dans les dépendances de 360 projets, y compris urllib, aws-cdk, mailgun.js et firebase-tools, totalisant plus de trois millions de téléchargements par semaine.
Si une application ayant des dépendances avec pac-resolver charge un fichier PAC fourni par un système prenant en charge le protocole de configuration automatique de proxy WPAD, des attaquants ayant accès au réseau local peuvent exploiter la diffusion des paramètres de proxy via DHCP pour injecter des fichiers PAC malveillants.
Source : opennet.ru
