Node-ipc sabote les développeurs JavaScript
lun, 21/03/2022 - 16:26
Le 15 mars, pour protester contre l’invasion de l’Ukraine, une attaque de la chaîne d'approvisionnement affectant les utilisateurs du framework JavaScript et du hub Unity a eu lieu. L'attaque vise à créer un fichier contenant un message anti-guerre et à introduire des vulnérabilités de sécurité via une version antérieure qui corrompt les fichiers des utilisateurs géolocalisés en Russie et en Biélorussie et remplace les caractères par des emoji cœur.
Cette attaque est le résultat du sabotage des dépendances imbriquées du framework, node-ipc et peacenotwar, par le responsable de node-ipc, Brandon Nozaki Miller, surnommé RIAEvangelist. Les dépendances imbriquées sont des paquets supplémentaires dont dépendent les logiciels et qui sont automatiquement téléchargés. L'utilisation de dépendances est courante dans le fonctionnement des applications et des outils open source, mais elles peuvent être exploitées pour introduire des vulnérabilités.
Liran Tal, Director of Developer Advocacy chez Snyk, a déclaré : "Même si nous sommes fermement opposés à ce qui se passe en Ukraine, un sabotage intentionnel de ce type affecte la communauté open source dans le monde entier. L'impact important des incidents de sécurité de la chaîne d'approvisionnement rappelle la nécessité d’être en mesure de réagir rapidement aux risques liés aux dépendances des logiciels open source.”
La préparation de l'attaque
Cette attaque montre l'importance de l'impact que peuvent avoir les attaques de la chaîne d'approvisionnement. Le 8 mars, le paquet peacenotwar a été publié sur npm, un dépôt central pour les développeurs JavaScript. Ce paquet était conçu pour afficher simplement un message anti-guerre sur le bureau des utilisateurs. Cependant, il n’a eu que très peu d'impact et de téléchargements.
Mais cela a radicalement changé le 15 mars lorsque RIAEvangelist a ajouté peacenotwar comme dépendance d'un autre paquet qu'il contrôlait, node-ipc. Node-ipc est un module de communication très populaire qui est utilisé - et automatiquement téléchargé - par de nombreux autres paquets populaires, dont Vue.js, et plus particulièrement son outil de ligne de commande, Vue.js CLI, par le biais du paquet @vue/cli. Cette version ajoute aussi une dépendance sur colors@* qui met en place le code source intentionnellement vulnérable, suite aux actions d'un autre mainteneur véreux.
Liran Tal conclut : "Compte tenu des préoccupations sur les futures mises à jour de code qui pourraient mettre les utilisateurs en danger, nous recommandons d'éviter le paquet node-ipc npm. Si ce paquet npm est intégré à votre projet dans le cadre de l'application que vous développez, nous vous recommandons d'utiliser la fonction de gestion des paquets npm pour remplacer les versions sabotées et rétablir la dépendance transitive."