Le développeur de un package open source populaire a été surpris en train d’y ajouter du code malveillant, entraînant la suppression de fichiers sur des ordinateurs situés en Russie et en Biélorussie. Cette décision faisait partie d’une manifestation qui a provoqué la colère de nombreux utilisateurs et suscité des inquiétudes quant à la sécurité des logiciels libres et open source.
L’application, node.ipc, ajoute des capacités de communication interprocessus à distance et de réseau neuronal à d’autres bibliothèques de code open source. En tant que dépendance, node.ipc est automatiquement téléchargé et intégré dans d’autres bibliothèques, y compris celles comme Vue.js CLI, qui compte plus d’un million de téléchargements hebdomadaires.
Un acte délibéré et dangereux
Il y a deux semaines, l’auteur de node.ipc a lancé une nouvelle version de la bibliothèque qui a saboté des ordinateurs en Russie et en Biélorussie, les pays envahissant l’Ukraine et fournissant un soutien à l’invasion, respectivement. La nouvelle version a ajouté une fonction qui vérifiait l’adresse IP des développeurs qui utilisaient le node.ipc dans leurs propres projets. Lorsqu’une adresse IP était géolocalisée en Russie ou en Biélorussie, la nouvelle version effaçait les fichiers de la machine et les remplaçait par un emoji en forme de cœur.
Pour dissimuler la malveillance, l’auteur de node.ipc, Brandon Nozaki Miller, a encodé les modifications en base 64 pour rendre les choses plus difficiles pour les utilisateurs qui souhaitaient les inspecter visuellement pour détecter les problèmes.
Voici ce que ces développeurs ont vu :
+ const n2 = Buffer.from(« Li8= », « base64 »);
+ const o2 = Buffer.from(« Li4v », « base64 »);
+ const r = Buffer.from(« Li4vLi4v », « base64 »);
+ const f = Buffer.from(« Lw== », « base64 »);
+ const c = Buffer.from(« Y291bnRyeV9uYW1l », « base64 »);
+ const e = Buffer.from(« cnVzc2lh », « base64 »);
+ const i = Buffer.from(« YmVsYXJ1cw== », « base64 »);
Ces lignes ont ensuite été transmises à la fonction timer, telles que :
+ h(n2.toString(« utf8 »));
Les valeurs des chaînes Base64 étaient :
- n2 est défini sur : ./
- o2 est réglé sur : ../
- r est réglé sur : ../../
- f est défini sur : /
Lorsqu’elles sont passées à la fonction de minuterie, les lignes ont ensuite été utilisées comme entrées pour effacer les fichiers et les remplacer par l’emoji du cœur.
+ essayer {
+ import_fs3.default.writeFile(i, c.toString(« utf8 »), function()
+ );
« À ce stade, un abus très clair et un incident critique de sécurité de la chaîne d’approvisionnement se produiront pour tout système sur lequel ce package npm sera appelé, si cela correspond à une géolocalisation de la Russie ou de la Biélorussie », a écrit Liran Tal, chercheur à Snyk, une société de sécurité qui a suivi les changements et publié ses conclusions mercredi.
Tal a découvert que l’auteur de node.ipc gère 40 autres bibliothèques, dont certaines ou toutes sont également des dépendances pour d’autres packages open source. Se référant au pseudonyme de l’auteur de node.ipc, Tal a remis en question la sagesse de la protestation et ses retombées probables sur l’écosystème open source dans son ensemble.
« Même si l’acte délibéré et dangereux du mainteneur RIAEvangelist sera perçu par certains comme un acte de protestation légitime, comment cela se répercutera-t-il sur la réputation future du mainteneur et sur sa participation dans la communauté des développeurs ? », a écrit Tal. encore une fois pour ne pas donner suite à des actes futurs dans de telles actions ou même des actions plus agressives pour tous les projets auxquels ils participent ? »
Parti pour toujours
RIAevangelist a également été critiqué sur Twitter et dans les forums open source. La nouvelle version du code malveillant, a écrit une personne prétendant travailler pour une organisation basée aux États-Unis qui exploitait un serveur en Biélorussie, « a entraîné l’exécution de votre code et la suppression de plus de 30 000 messages et fichiers détaillant les crimes de guerre commis en Ukraine par l’armée russe et les responsables gouvernementaux. .”
La personne, qui a ensuite supprimé le message et l’a republié ici, a déclaré que le but du serveur biélorusse était de contourner la censure dans ce pays. Le personnel de l’organisation était déjà épuisé depuis que la Russie a commencé son invasion de l’Ukraine le 24 février, a déclaré la personne, et pour des raisons qui ne sont pas claires, les messages des soldats de première ligne et d’autres données sensibles ont probablement disparu pour toujours.