Un nouveau malware IronWorm infecte 36 modules npm dans une attaque contre la chaîne d’approvisionnement

Un nouveau malware IronWorm cible 36 paquets dans une attaque par la chaîne d'approvisionnement de npm

Une nouvelle attaque contre la chaîne d’approvisionnement logicielle a compromis 36 paquets sur l’index Node Package Manager, également appelé npm. Ces paquets sont infectés par un logiciel malveillant qui vole des informations et qui est nommé IronWorm.

Ce programme malveillant recherche 86 variables d’environnement et 20 fichiers d’identification. Il vise à voler des identifiants pour les services OpenAI, AWS, Anthropic et npm, des fichiers de configuration de coffre-fort numérique, des clés SSH ainsi que des fichiers du portefeuille de cryptomonnaies Exodus.

Les experts de la société JFrog, qui est spécialisée dans la sécurité de la chaîne d’approvisionnement et les opérations de développement, indiquent que IronWorm est écrit en langage Rust. Il se dissimule derrière un rootkit pour le noyau qui utilise eBPF et il communique avec ses opérateurs via le réseau Tor.

Le logiciel malveillant, qui est basé sur Rust, se propage de manière autonome. Pour cela, il utilise les identifiants qu’il a volés pour publier de nouveaux paquets sur npm. Ces secrets comprennent ceux qui sont associés au processus de Trusted Publishing de npm.

Quand le malware compromet un environnement de développeur ou un système d’intégration continue, il peut publier des versions corrompues des paquets qui appartiennent à la victime. Ces versions infectent ensuite d’autres développeurs et systèmes d’intégration.

Ce comportement est proche sur le plan conceptuel de celui d’un autre malware nommé Shai Hulud, dont le code a été publié sur GitHub récemment. Les chercheurs de JFrog n’ont pas trouvé de lien direct entre IronWorm et Shai Hulud, mais ils ont observé que les noms des commits étaient identiques dans les deux attaques.

Il est donc possible que le nouveau malware soit une évolution de la charge utile utilisée par le groupe TeamPCP, car IronWorm semble être un implant personnalisé et soigneusement construit par une opération qui possède sa propre infrastructure.

Selon JFrog, la dernière attaque a commencé à partir d’un compte compromis qui s’appelle ‘asteroiddao’. Ce compte a publié des versions de paquets qui contiennent un binaire Rust ELF. Ce binaire est exécuté via un script ‘preinstall’ et il pousse des commits malveillants dans des dépôts.

L’auteur du commit apparaît sous le nom « claude ». Les horodatages indiquent des dates qui remontent à plusieurs années, parfois jusqu’à 13 ans en arrière, alors que ces commits ont été poussés ces derniers jours. Cette technique a probablement pour but de déjouer les investigations.

Les découvertes de JFrog mettent en lumière un mécanisme qui s’appuie sur GitHub Actions pour transmettre les secrets volés. Les chercheurs expliquent que le malware sérialise les secrets en une seule valeur, puis qu’il l’écrit dans un fichier dont le nom semble anodin, comme s’il s’agissait d’un résultat de vérification de code ou de formatage.

La dernière étape du processus consiste à téléverser le fichier en tant qu’artefact de compilation. Toute personne qui a accès peut ensuite le télécharger. De cette manière, le pirate évite complètement d’avoir besoin d’un serveur de commande et de contrôle externe.

Cependant, les chercheurs précisent que ce mécanisme de transmission n’a pas été utilisé dans l’attaque par la chaîne d’approvisionnement IronWorm qu’ils ont analysée.

Les experts ont découvert une autre particularité : l’opérateur a intégré en dur dans le code la phrase de récupération de son propre portefeuille de cryptomonnaies. Selon les chercheurs, la seule raison qui explique cela est que le pirate ne voulait pas que le malware la vole pendant la phase de test.

La société de sécurité des applications Ox Security déclare que l’attaque IronWorm a été détectée très tôt et qu’elle a été stoppée avant qu’elle ne se propage à des paquets plus populaires sur npm.

L’entreprise fournit la liste de tous les noms de paquets impactés et de leurs versions dans son rapport. Elle recommande aux développeurs de mettre à jour vers les versions corrigées, de renouveler leurs clés et d’activer l’authentification à deux facteurs pour tous leurs comptes.

Parallèlement, les entreprises Endor Labs et StepSecurity ont repéré une attaque très similaire mais distincte. Elle implique un logiciel malveillant basé sur JavaScript qui se nomme binding.gyp. Cette attaque effectue un empoisonnement du registre et une infection via GitHub Actions, et elle se déroule pendant la même période.