Un code malveillant infiltre les packages clés dans le référentiel JavaScript d'Arweave, intégrant une porte dérobée furtive.

Les attaquants ont implanté un infostealer dans 36 packages npm liés à l'écosystème Arweave. Il ciblait les informations d'identification des développeurs, les clés SSH et les fichiers de portefeuille cryptographique Exodus. La société de sécurité JFrog a retracé l'attaque jusqu'à un compte de responsable compromis.
Le malware s’appelle IronWorm et est construit à l’aide de Rust. Il s'active au moment où un développeur installe un package npm. Une fois exécuté, il analyse l’ordinateur infecté à la recherche de 86 variables d’environnement et de 20 fichiers d’informations d’identification, comme l’a découvert l’équipe de recherche de JFrog. Il s'attaque aux jetons AWS, aux clés API Anthropic et OpenAI, aux informations d'authentification npm et aux données de portefeuille cryptographique.
Les packages du projet Arweave contiennent des logiciels malveillants Rust cachés
Les attaquants ont compromis un compte npm appelé « asteroiddao », qui appartient au groupe asteroid-dao GitHub, qui fait partie du projet de base de données décentralisée Arweave/WeaveDB.
Tous les packages associés au compte « asteroiddao » ont été republiés dans un court laps de temps, chaque nouvelle version contenant un fichier Linux de 976 Ko situé dans un répertoire tools/.
Le fichier a été configuré pour s'exécuter automatiquement via un hook de préinstallation dans package.json, ce qui signifie qu'il a été lancé avant même que npm ne commence à installer quoi que ce soit. Tout ce qu’une victime avait à faire était d’exécuter npm install.
L'équipe de JFrog a démonté le fichier et a découvert qu'il avait été emballé d'une manière conçue pour tromper les outils de décompression standard. À l’intérieur se trouvait un grand programme Rust qui gardait ses chaînes chiffrées individuellement, chacune étant verrouillée séparément, ce qui rendait l’analyse beaucoup plus difficile.
Lorsque ces chaînes ont finalement été décodées, elles ont révélé les points de terminaison de l'API GitHub, les chemins d'accès aux fichiers d'informations d'identification, de faux comptes de robots liés à de véritables identifiants d'utilisateur GitHub et des modèles permettant d'injecter du code malveillant dans d'autres registres de packages.
Une capture d'écran montrant les packages npm infectés liés à l'écosystème Arweave. Source : Jfrog.
Les jetons GitHub volés permettent aux logiciels malveillants de pousser les validations et d'infecter davantage de dépôts
Après avoir récupéré les informations d'identification, IronWorm les a utilisées pour transférer les validations vers des référentiels auxquels la victime pouvait accéder. Ces commits ont implanté le même binaire malveillant dans d'autres packages, qui pourraient ensuite être publiés sur npm et compromettre le prochain développeur de la chaîne.
JFrog a trouvé 57 commits malveillants antidatés dans neuf organisations GitHub. Les commits utilisaient le nom de l'auteur « claude » avec l'e-mail claude@users.noreply.github.com. Les horodatages ont été forgés pour correspondre à la validation légitime la plus récente de chaque référentiel. L’un semble remonter à 13 ans, bien que les journaux d’actions GitHub aient confirmé que toutes les poussées avaient eu lieu quelques jours après leur découverte.
Les organisations concernées comprenaient asteroid-dao, weavedb, ArweaveOasis et plusieurs comptes personnels associés au développeur « ocrybit ».
IronWorm a également déployé un rootkit de noyau eBPF pour se cacher sur les machines infectées. Les communications vers son opérateur sont acheminées via le réseau Tor. Le compilateur Rust a laissé le code source du rootkit dans le binaire, une erreur opérationnelle qui a facilité l’analyse.
Une bizarrerie est que l’opérateur a codé en dur sa propre phrase de récupération de portefeuille de crypto-monnaie dans le malware. JFrog a conclu qu'il s'agissait d'une protection destinée à empêcher le voleur d'exfiltrer les propres informations d'identification de l'attaquant pendant les tests.
Les attaques de logiciels malveillants continuent de frapper npm
La société de sécurité des applications Ox Security a déclaré que l'attaque avait été détectée tôt, avant qu'elle ne puisse se propager à davantage de packages sur npm.
Les versions malveillantes ont été marquées comme obsolètes en un jour et la plupart des validations antidatées ont été supprimées de GitHub peu de temps après.
Le 14 mai, des pirates ont exploité un compte de maintenance inactif pour node-ipc, un package avec plus de 822 000 téléchargements hebdomadaires. L’exploit a été réalisé en réenregistrant le domaine de messagerie expiré du responsable et en réinitialisant le mot de passe npm. Trois variantes compromises comportaient des charges utiles de vol d'informations d'identification visant plus de 90 catégories de secrets de développeur.
Les sociétés de sécurité Endor Labs et StepSecurity ont identifié une attaque simultanée mais distincte utilisant un logiciel malveillant basé sur JavaScript appelé bind.gyp, qui a effectué un empoisonnement de registre similaire et une infection GitHub Actions au cours de la même période.
Les développeurs qui ont installé l'un des packages WeaveDB concernés doivent alterner toutes les informations d'identification, vérifier les fichiers de verrouillage pour détecter les changements de version inattendus et activer l'authentification à deux facteurs sur les comptes npm et GitHub.