La faille NPM permet aux attaquants d’ajouter n’importe qui en tant que responsable des packages malveillants

npm

Une « faille logique » dans le registre npm a permis aux auteurs de packages malveillants d’ajouter discrètement n’importe qui et n’importe quel nombre d’utilisateurs en tant que « mainteneurs » à leurs packages dans le but de renforcer la confiance dans leurs packages.

Le référentiel de composants NodeJS appartenant à GitHub a maintenant corrigé la faille après que le problème a été signalé de manière responsable par la société de sécurité native du cloud, Aqua.

Plantation de packages : ajoutez n’importe quel développeur ou entreprise populaire en tant que mainteneur

Une faille de sécurité dans le registre npm, surnommée « plantation de paquets », a permis aux acteurs de la menace d’ajouter silencieusement quelconque développeur (et un certain nombre d’entre eux) en tant que « mainteneurs » de leurs packages malveillants.

« Jusqu’à récemment, npm permettait d’ajouter n’importe qui en tant que mainteneur du paquet sans en informer ces utilisateurs ni obtenir leur consentement », explique Yakir Kadkoda, chercheur en sécurité chez Aqua’s Team Nautilus.

Le déménagement ne notifierait ni n’exigerait aucune approbation de la personne ou de l’entreprise ajoutée en tant que responsable d’un paquet illicite.

Pour aggraver les choses, après avoir ajouté d’autres responsables à son paquet malveillant, l’attaquant pourrait discrètement se retirer de la liste des responsables du paquet, ne laissant alors que de nouveaux responsables sur le paquet qui n’ont rien à voir avec cela.

Une technique comme celle-ci peut s’avérer extrêmement lucrative pour un acteur malveillant cherchant à donner de la crédibilité à ses composants malveillants.

En ajoutant des développeurs crédibles et des entreprises populaires en tant que responsables de leurs packages malveillants, les attaquants ont de bien meilleures chances d’inciter les développeurs à installer leurs packages sans sourciller.

Pour mieux démontrer le concept, Kadkoda a publié un package de test, « fb_npm_package » dans le registre, initialement avec son compte de démonstration npm étant le seul responsable du package.

Le chercheur a ensuite ajouté les comptes officiels de Facebook (Méta) et npm à la liste des mainteneurs du projet, puis s’est retiré.

fb_npm_package page npm
Un exemple de bibliothèque ‘fb_npm_package’ avec Facebook ajouté en tant que mainteneur (EZpublish-france.fr)

Toute personne visitant la page npm de « fb_npm_package » percevrait désormais que la propriété du package inclut exclusivement Facebook et npm, ce qui est très trompeur.

« Puisque vous pouviez attribuer des paquets empoisonnés à n’importe quel mainteneur populaire, nous avons nommé cette faille logique et ses implications » plantation de paquets «  », écrit le chercheur d’Aqua dans un rapport publié cette semaine.

Certes, les systèmes de contrôle de code source comme GitHub laissent une certaine place aux farces où les commits de code peuvent être soumis au nom de n’importe qui – certains ont fait maintes et maintes fois faux commits semblant provenir du créateur du noyau Linux, Linus Torvalds. Mais, des fonctionnalités cryptographiques telles que Signature GPG permettent de signer avec autorité les code commits et de lever tout doute quant à leur origine.

Les choses se compliquent, cependant, lorsque la propriété entière d’un projet et la liste des responsables sont modifiées – cela aussi dans un registre de logiciels conçu pour expédier des packages finis, pas le code source.

Une question de réputation, pas seulement de sécurité

Kadkoda souligne qu’en plus d’être une faille de sécurité, une technique comme la « plantation de paquets » peut être utilisée abusivement par des adversaires pour ternir la réputation de développeurs par ailleurs très respectés dans la communauté.

« Si l’attaquant sélectionne soigneusement ces futurs responsables, cela affectera la réputation et l’apparence du paquet », déclare Kadkoda.

« Par exemple, le paquet Lodash est très populaire et crédible. Si nous ajoutons ses propriétaires Mathias, jdaltonet bnjmnt4n à un nouveau package malveillant, de nombreux développeurs peuvent être amenés à penser que ce package est légitime et même attrayant. »

Si le paquet malveillant est ensuite détecté par npm, un scénario plausible qui vient à l’esprit est que le registre suspende potentiellement les comptes des « nouveaux » responsables qui sont perçus à tort comme enfreignant les règles de la plate-forme. Stratégies.

Kadkoda a finalement retiré son package de test de npm et a signalé la faille à npm.

Une copie archivée de ‘fb_npm_package’ obtenue auprès de la société de sécurité open source Sonatype dont je fais partie, montre que le package est propre et ne comprend aucun code fonctionnel, juste un fichier manifeste :

fb_npm_package package.json
À l’intérieur de la bibliothèque fictive ‘fb_npm_package’ d’Aqua (EZpublish-france.fr)

Mais, un acteur de menace opportuniste peut accomplir bien plus avec une faille telle que la « plantation de paquets ».

Même sans de telles failles, les attaquants ont pu empoisonner à plusieurs reprises les dépôts open source – npm, PyPI et RubyGems, avec des packages malveillants recueillant des milliers de téléchargements.

Une technique comme celle-ci permettrait aux acteurs de la menace d’ajouter un sceau de légitimité majeur à leurs packages autrement illicites et malveillants.

Suite au rapport d’Aqua, GitHub a rapidement corrigé la faille et introduit des sauvegardes.

Inviter un nouveau mainteneur à votre paquet npm lui demande maintenant d’approuver votre demande avant qu’il ne puisse être ajouté à votre projet.

npm ajouter une invitation de responsable
npm demande maintenant aux mainteneurs de projets nouvellement ajoutés d’accepter l’invitation (Aqua)

Bien qu’il n’y ait plus aucun moyen de reproduire le problème, Kadkoda avertit les développeurs existants de revérifier les projets répertoriés sous leur compte npm :

« Les utilisateurs de npm doivent vérifier que tous les packages répertoriés sous leur nom leur appartiennent bien, afin de s’assurer qu’ils n’ont été ajoutés à aucun projet sans leur consentement », conclut le chercheur.