Un mainteneur qui a saboté un package NPM populaire pour protester contre l’invasion de l’Ukraine par la Russie a été critiqué pour saper la confiance dans l’écosystème open source.
« RIAEvangelist » (alias Brandon Nozaki Miller) a intégré un malware – ou « protestware », comme il l’a surnommé – dans la dernière version stable du module node-ipc de Node.JS.
Si les développeurs téléchargent le package empoisonné et sont géolocalisés en Russie ou en Biélorussie, le logiciel malveillant efface le contenu du fichier et le remplace par un emoji en forme de cœur. Il ajoute également un fichier WITH-LOVE-FROM-AMERICA.txt contenant un message de paix sur le répertoire du bureau de l’utilisateur.
Le logiciel malveillant et le package NPM, appelé « peacenotwar », ont affecté les utilisateurs du framework JavaScript frontal populaire Vue.js, car node-ipc est une dépendance imbriquée pour l’outil de ligne de commande de Vue.js, Vue.js CLI.
La CLI Vue.js a été nettoyée dans les versions 4.5.16+ et 5.0.3+.
Suivi comme CVE-2022-23812la paix et la guerre ont été considérées comme une vulnérabilité critique.
« Actions agressives »
Dans un article de blogLiran Tal, directeur de la défense des intérêts des développeurs sur la plate-forme Snyk axée sur la sécurité des développeurs, a souligné que « Snyk est aux côtés de l’Ukraine », mais a remis en question la sagesse de la forme de protestation choisie par RIAevangelist.
« Comment cela se répercute-t-il sur la réputation future du mainteneur et sur sa participation dans la communauté des développeurs ? » dit Tal. « Est-ce que l’on ferait à nouveau confiance à ce mainteneur pour qu’il ne donne pas suite à de futurs actes dans de telles actions ou même des actions plus agressives pour tous les projets auxquels il participe? »
Plusieurs développeurs ont également critiqué le sabotage du package sur un site connexe Fil de discussion GitHub, dans lequel RAEvangelist a répondu que « vous êtes libre de verrouiller votre dépendance à une version qui ne l’inclut pas ». Ils ont ajouté que cela «devrait servir d’exemple sûr de la raison pour laquelle nos équipes devraient utiliser des versions de dépendance explicites. C’est donc toujours notre choix de mettre à niveau ou non ».
RIAevangelist gère plus de 40 packages NPM au total, représentant ensemble plusieurs millions de téléchargements hebdomadaires.
Suivi de la chronologie
RIAevangelist a publié peacenotwar le 8 mars avec la description du code source :
«Ce code sert d’exemple non destructif de l’importance du contrôle de vos modules de nœud. Il sert également de protestation non violente contre l’agression de la Russie qui menace le monde en ce moment. Ce module ajoutera un message de paix sur les ordinateurs de vos utilisateurs, et il ne le fera que s’il n’existe pas déjà juste pour être poli.
Peacenotwar a commencé à accumuler des téléchargements lorsque le module est devenu une dépendance de nœud-ipcun module de communication inter-processus téléchargé plus d’un million de fois par semaine.
Cela s’est produit avec node-ipcversion 10.1.1, publié le 7 mars, ainsi que 10.1.2, lancé peu de temps après avec le but possible, a spéculé Tal, de déclencher des mises à niveau de dépendance automatisées.
Puis le 8 mars, le mainteneur a corrigé la vulnérabilité qu’il avait introduite avec la sortie de la version 10.1.3.
Cependant, moins de quatre heures plus tard, une autre version vulnérable, 11.0.0, est apparue qui, « au lieu d’avoir du code malveillant directement dans la source de ce paquet […] importations le paquet paix et non guerre ».
L’impact s’est intensifié une semaine plus tard, le 15 mars, lorsque la 9.2.2, une mise à jour de la branche stable 9.x du module, a atterri avec peacenotwar. Il comportait également des «couleurs», un autre package NPM saboté par son responsable pour un prétendu motif lié à la manifestation en janvier 2022.
« Impact cumulatif »
Synk recommande aux développeurs d’éviter complètement le package node-ipc et, s’il est déjà fourni avec leur projet, de remplacer les versions sabotées.
« La complexité des dépendances imbriquées, comme sur l’écosystème JavaScript npmjs, a une fois de plus prouvé l’impact cumulatif qu’elles ont sur les projets clés de l’écosystème », a déclaré Liran Tal.
« Acquérir des compétences sur la façon de gérer les dépendances logicielles à grande échelle devient évidemment plus important, tout en s’assurant qu’en tant que développeur, vous suivez les meilleures pratiques de sécurité npm et en vous renseignant sur les pièges et les incidents de sécurité, par exemple pourquoi les fichiers de verrouillage npm peuvent être un angle mort de sécurité. pour injecter des modules malveillants.