Nouveaux vers npm émergent : IronWorm et une variante de Miasma ciblent les secrets des développeurs et les outils d'IA
L'écosystème **npm** est assiégé par des attaques sophistiquées de la chaîne d'approvisionnement logicielle. Des chercheurs ont découvert deux campagnes distinctes : un voleur d'informations basé sur **Rust** baptisé **IronWorm** et une nouvelle variante très furtive du ver **Miasma**. Ces deux menaces sont conçues pour compromettre les identifiants des développeurs, injecter du code malveillant et se propager automatiquement dans les environnements et dépôts de développement.
Plusieurs attaques de la chaîne d'approvisionnement logicielle ont récemment frappé l'écosystème **npm**, les acteurs malveillants déployant des versions malveillantes et empoisonnées de plus de 50 packages légitimes. Ces campagnes visent à distribuer un voleur d'informations basé sur **Rust** et un ver auto-répliquant, présentant des risques importants pour les professionnels de la sécurité informatique et les utilisateurs soucieux de leur vie privée.

## L'ascension d'IronWorm
La société de sécurité **JFrog** a détaillé le voleur d'informations basé sur **Rust**, nommé **IronWorm**. Ce malware sophistiqué est conçu pour extraire tous les secrets qu'il peut trouver sur la machine d'un développeur, employant un rootkit noyau **eBPF** pour la furtivité et communiquant avec ses opérateurs via **Tor**.
**IronWorm** utilise les identifiants volés comme mécanisme de propagation, établissant des parallèles avec le tristement célèbre ver **Shai-Hulud**. En se publiant sur le registre **npm** via des packages trojanisés, il réalise un vecteur d'attaque auto-réplicatif.
L'activité malveillante a été retracée jusqu'à un compte **npm** compromis, "asteroiddao", qui a publié des versions de packages contenant le binaire ELF **Rust** exécuté via un hook `preinstall`. Le malware cible 86 variables d'environnement et divers fichiers pouvant contenir des identifiants pour des services tels que **OpenAI Codex**, **Anthropic**, **Claude**, **Google Gemini**, **Cursor**, **Amazon Web Services (AWS)**, **Docker**, **Kubernetes**, **npm**, des configurations de vault, et des fichiers du portefeuille de cryptomonnaies **Exodus**.
Un détail inhabituel est la logique du voleur pour ignorer le portefeuille de cryptomonnaies de l'acteur malveillant, qui ne montre actuellement aucune transaction enregistrée.
**JFrog** décrit **IronWorm** comme "une arme de chaîne d'approvisionnement conçue pour trouver des secrets, modifier des projets et injecter du code malveillant pour se propager sur **GitHub**." Des commits malveillants, couvrant neuf organisations **GitHub**, ont été introduits sous le nom d'auteur "claude" ([email protected]) dans une tentative apparente d'imiter le chatbot IA d'**Anthropic**.
Une analyse plus approfondie a révélé que le compte **npm** compromis `asteroiddao` correspond à l'organisation **GitHub** `asteroid-dao`, avec `ocrybit` comme membre. Le malware a volé les identifiants de `ocrybit`, les utilisant pour pousser des commits dans les dépôts accessibles, plantant du malware dans d'autres packages pour une infection en aval.
Cette charge utile est également équipée pour remplacer les flux de travail **GitHub Actions** existants par un flux capable de récolter des secrets, de les écrire dans un fichier d'apparence inoffensive et de les télécharger comme artefact de build, éliminant ainsi le besoin d'un serveur de commande et contrôle (C2) externe. Dans les environnements **CI**, il abuse du flux **Trusted Publishing** de **npm** pour obtenir des jetons de courte durée et pousser des versions empoisonnées vers le registre. Le malware intègre également une charge utile **eBPF** agissant comme un rootkit au niveau du noyau pour masquer les processus, bien que cela échoue sur les systèmes avec le verrouillage du noyau activé.
## Le ver Miasma refait surface
Parallèlement, **Endor Labs** et **StepSecurity** ont divulgué une campagne d'attaque de chaîne d'approvisionnement distincte. Cette campagne a compromis 57 packages **npm** à travers plus de 286 versions malveillantes pour distribuer une nouvelle variante du ver **Miasma**. Ce ver avait précédemment infecté 32 packages sur plus de 90 versions sous l'espace de noms **npm** `@redhat-cloud-services` en 72 secondes.
Certains des packages affectés incluent :
* `ai-sdk-ollama`
* `autotel`
* `awaitly`
* `effect-analyzer`
* `eslint-plugin-awaitly`
* `executable-stories-cypress`
* `http-uploader-dev`
* `mountly`
* `node-env-resolver`
* `node-env-resolver-aws`

Les données volées lors de cette campagne ont été exfiltrées vers un compte **GitHub** désormais inaccessible, `liuende501`, qui a hébergé 236 dépôts. La source de la suppression du compte (GitHub ou l'acteur malveillant) reste inconnue.
Le chercheur de **StepSecurity**, Sai Likhith, a mis en évidence une technique novatrice baptisée "**Phantom Gyp**." Au lieu de s'appuyer sur les scripts de cycle de vie `preinstall` ou `postinstall` couramment surveillés, l'attaquant abuse d'un fichier `binding.gyp` de 157 octets pour déclencher l'exécution de code lors de `npm install`, contournant ainsi de nombreuses vérifications de sécurité.
Similaire aux incidents **Miasma** précédents, cette chaîne d'attaque télécharge et installe le runtime JavaScript **Bun**, l'utilisant pour charger un collecteur d'identifiants complet. Ce collecteur est conçu pour extraire des secrets de **AWS**, **Google Cloud**, **Microsoft Azure**, **HashiCorp Vault**, **Docker**, **Kubernetes**, **GitHub Actions**, **npm**, **RubyGems**, **PyPI**, **SSH**, des gestionnaires de mots de passe et des assistants IA.
"La capacité la plus nouvelle et la plus préoccupante de cette variante est sa cible des configurations d'assistants de codage IA", a noté **StepSecurity**. Le malware injecte des fichiers de backdoor persistants dans les dépôts de projets qui s'exécutent chaque fois qu'un développeur ouvre le projet dans un IDE assisté par IA.
Il est fortement conseillé aux développeurs qui ont installé une version affectée de révoquer leurs identifiants, de désactiver les scripts d'installation et les reconstructions natives par défaut, et de s'assurer que les packages sont épinglés avec des sommes de contrôle d'intégrité.
**Red Hat** a révélé que la cause profonde de l'incident précédent de la chaîne d'approvisionnement **Miasma** était probablement un compte **GitHub** compromis utilisé pour pousser des commits non autorisés vers des dépôts au sein de l'organisation **GitHub** **RedHatInsights**.
L'analyse de la campagne par **Microsoft** a noté : "La charge utile a fonctionné sous Linux, macOS et Windows en téléchargeant dynamiquement le runtime **Bun** correct pour chaque plateforme, bien que les runners CI/CD Linux aient semblé être la cible principale." Dans les systèmes de développement, le malware a volé des clés **SSH**, des identifiants d'interface de ligne de commande (CLI), des données de navigateur et de portefeuille. Dans les environnements CI/CD, il a extrait la mémoire des runners **GitHub Actions** pour des secrets, escaladé les privilèges en utilisant `sudo` sans mot de passe, et republié des packages empoisonnés avec une fausse provenance **Supply-chain Levels for Software Artifacts (SLSA)** pour continuer la propagation en aval.
## Chaîne d'attaque et persistance évolutives
La charge utile **Miasma** est considérée comme un dérivé du ver **Shai-Hulud**, précédemment utilisé par **TeamPCP** dans d'autres campagnes, avec des modifications largement cosmétiques. L'attribution des dernières attaques reste floue, d'autant plus que **TeamPCP** a publié publiquement le code de **Shai-Hulud**.

**OX Security** a découvert des étapes supplémentaires dans la chaîne d'attaque **Miasma**, y compris des recherches de commits **GitHub** contenant la chaîne "firedalazer" (remplaçant le dead drop précédemment signalé "**FIRESCALE**") pour récupérer une autre charge utile - un fichier JavaScript (`index.js`) contenant une version alternative du ver **Shai-Hulud**, créant ainsi une boucle d'infection perpétuelle. Dans ce scénario, les données volées sont exfiltrées vers des dépôts **GitHub** publics.
Ces campagnes en cours soulignent le besoin critique de mesures de sécurité robustes pour la chaîne d'approvisionnement, d'une surveillance continue et d'une vigilance des développeurs pour se protéger contre des malwares de plus en plus sophistiqués.