Red Hat NPM : l’attaque supply chain Miasma qui vole vos credentials cloud

Le 1er juin 2026, une attaque d’une sophistication rare a compromis 32 packages npm publiés sous le namespace @redhat-cloud-services. Le malware, baptisé « Miasma », a volé les identifiants GitHub, AWS, Azure et GCP de milliers de développeurs en exploitant une faille dans la chaîne d’approvisionnement logicielle de Red Hat.

🚨

L’essentiel en 30 secondes

  • 32 packages compromis sous le namespace @redhat-cloud-services, diffusés en 72 secondes le 1er juin 2026
  • Root cause : compte GitHub d’un employé Red Hat compromis, commits malveillants pushés directement dans les repositories
  • Malware « Miasma » : variante de Shai-Hulud, vole credentials GitHub, npm, AWS, GCP, Azure, SSH keys, et se propage automatiquement
  • ~80 000 téléchargements/semaine sur les packages concernés, avec un total cumulé estimé à près de 10 millions
  • SLSA forgé : les packages malveillants portaient des attestations de provenance valides, générées via OIDC GitHub Actions
  • Action immédiate : vérifier ses dépendances, tourner tous les tokens, scanner les repositories pour des commits non autorisés

Comment l’attaque s’est produite

Le 1er juin 2026, entre 13h00 et 13h01 UTC, un attaquant a publié des versions malveillantes de 32 packages npm sous le scope @redhat-cloud-services. Ces packages sont des composants frontend et des clients API qui alimentent la Red Hat Hybrid Cloud Console. L’ensemble du processus a duré 72 secondes, ce qui indique une automatisation poussée.

La faille initiale : un compte GitHub employé compromis

Selon les analyses de Wiz Research et de Microsoft Threat Intelligence, l’attaquant a compromis le compte GitHub d’un employé Red Hat. Avec ce compte, il a pushé des commits malveillants orphelins directement dans deux repositories RedHatInsights/javascript-clients, en court-circuitant le processus de code review.

Les commits ajoutaient un workflow GitHub Actions minimal qui :

  • Se déclenchait sur un push vers n’importe quelle branche (pas uniquement main)
  • Demandait un token OIDC GitHub pour npm via id-token: write
  • Exécutait un payload obfusqué (_index.js) qui publiait les packages sur npm avec des attestations SLSA valides

C’est le même schéma que l’attaque contre TanStack quelques semaines plus tôt : la provenance SLSA est techniquement correcte (le package a bien été construit par le workflow du repository), mais le workflow lui-même était compromis. La confiance dans la chaîne de supply chain est érodée.

Le malware « Miasma » : ce qu’il fait concrètement

Chaque package compromis contenait un script preinstall qui s’exécute automatiquement lors d’un npm install, avant même que le code du package ne soit importé. Ce script invoquait un fichier index.js obfusqué de 4,29 Mo, qui fonctionnait comme un collecteur de credentials multi-étapes.

🔴 Ce que Miasma vole

  • GitHub : tokens, secrets Actions, clés SSH, énumération des repositories et des organisations
  • npm : tokens d’accès, échange de token OIDC pour republier des packages empoisonnés
  • Cloud : credentials AWS (IMDS/ECS), Azure (IMDS), GCP, HashiCorp Vault, Kubernetes
  • Local : variables d’environnement, ~/.npmrc, clés SSH, données navigateur, wallets crypto
  • CI/CD : scraping de la mémoire des runners GitHub Actions, tokens ACTIONS_RUNTIME_TOKEN

✅ Comment se protéger

  • Vérifier ses dépendances : croiser les versions résolues avec les advisories Snyk pour chaque package @redhat-cloud-services
  • Tourner tous les tokens : npm, GitHub PAT, SSH keys, puis cloud credentials (AWS, GCP, Azure)
  • Scanner les repositories : chercher des repositories inattendus avec la description « Miasma: The Spreading Blight »
  • Auditer les workflows : rechercher des GitHub Actions suspects demandant id-token: write et se déclenchant sur push vers toute branche
  • Considérer le système compromis : toute machine ayant installé une version affectée doit être traitée comme compromise

Propagation automatique : un ver dans la supply chain

La caractéristique la plus dangereuse de Miasma est sa capacité à se propager automatiquement. Une fois installé sur la machine d’un développeur, le malware :

  • Interroge le registre npm pour identifier les autres packages que l’identité compromise peut publier
  • Republie ces packages avec le même payload, via l’échange de token OIDC
  • Crée des repositories GitHub inattendus contenant les credentials volés
  • Peut injecter des workflows malveillants dans les repositories non protégés

Ox Security a identifié plus de 210 repositories GitHub contenant des credentials volés, ce qui suggère qu’au moins autant de développeurs ont été infectés après avoir installé une version malveillante d’un package @redhat-cloud-services.

Le lien avec Shai-Hulud et TeamPCP

Miasma est une variante du malware (Mini) Shai-Hulud, open-sourcé par le groupe TeamPCP plus tôt cette année. TeamPCP avait lancé un « challenge » invitant les acteurs malveillants à utiliser leur code dans des attaques supply chain. Miasma reprend le même code avec des modifications cosmétiques :

  • Le marqueur « Miasma: The Spreading Blight » remplace les références à l’univers de Dune
  • Des références à la mythologie grecque (« spartan ») remplacent les références originales
  • La logique de vol de credentials et de propagation est identique
  • Nouveauté : des collecteurs spécifiques pour les identités cloud GCP et Azure, qui énumèrent toutes les identités accessibles depuis la machine infectée

Cette attaque s’inscrit dans une série d’incidents similaires : TrapDoor qui ciblait npm, PyPI et Crates.io en mai 2026, et l’attaque contre TanStack quelques semaines avant Miasma. Le schéma se répète : compromission de compte mainteneur, injection via CI/CD, publication avec provenance valide.

Pourquoi cette attaque est particulièrement inquiétante

Trois éléments rendent Miasma plus dangereux que les attaques supply chain classiques :

Facteur Pourquoi c’est grave
Provenance SLSA forgée Les attestations de provenance étaient valides, rendant la détection par vérification SLSA inefficace
Exécution preinstall Le malware s’exécute lors de npm install, avant même l’import du code. Un simple npm ci en CI suffit à être infecté
Cible : environnements CI/CD Les runners CI/CD contiennent les credentials cloud les plus sensibles. Un développeur infecté = toute l’infra exposée
Propagation ver Le malware se propage automatiquement aux autres packages publishables par l’identité compromise, amplification exponentielle
Wiper conditionnel Si les tokens volés sont révoqués, le malware peut déclencher une routine de destruction (rm -rf ~/)

Les entreprises et les développeurs doivent agir maintenant

Si votre organisation utilise des packages @redhat-cloud-services, ou si vos projets dépendent de ces packages en dépendance transitive, voici les actions prioritaires :

⚠️ Checklist de mitigation immédiate

  1. Vérifier les versions : croiser les packages @redhat-cloud-services résolus dans vos package-lock.json avec les versions compromises listées par Snyk
  2. Tourner les credentials : npm tokens, GitHub PAT et SSH keys, puis cloud credentials (AWS, GCP, Azure). Priorité aux tokens accessibles depuis les machines ayant exécuté npm install avec une version compromise
  3. Scanner les repositories GitHub : chercher des repositories inattendus avec la description « Miasma: The Spreading Blight » ou des workflows Actions suspects
  4. Auditer les workflows : identifier les workflows demandant id-token: write et se déclenchant sur push vers toute branche
  5. Vérifier les dépendances transitives : les packages @redhat-cloud-services sont souvent des dépendances indirectes. Un npm ls @redhat-cloud-services/frontend-components peut révéler une exposition cachée
  6. Monitorer les connexions sortantes : le malware exfiltre les données vers des repositories GitHub contrôlés par l’attaquant et utilise api.anthropic.com comme C2 decoy

La leçon : la confiance dans la supply chain logicielle est fragile

Miasma démontre trois faiblesses structurelles de l’écosystème npm et de la supply chain logicielle moderne :

  • Les scripts preinstall sont exécutés par défaut. Un simple npm install suffit à exécuter du code malveillant, sans interaction de l’utilisateur. npm n’a toujours pas résolu ce problème fondamental
  • La provenance SLSA n’est pas suffisante. Une attestation valide prouve que le package a été construit par le workflow du repository, mais pas que le workflow lui-même est légitime. C’est le même gap exploité par TeamPCP contre TanStack
  • La compromission d’un seul compte suffit. Un compte GitHub employé, un token OIDC, et toute la chaîne est compromise. L’authentification à deux facteurs ne protège pas contre le vol de session ou la compromission de token

Pour les DSI et les équipes de sécurité, le message est clair : la supply chain logicielle n’est pas seulement un problème technique. C’est un risque business qui nécessite une approche holistique : gestion des identités développeurs, audit des workflows CI/CD, pinning des versions de dépendances, et monitoring continu des publications npm.

Comme l’a montré Snyk dans son analyse détaillée, la plupart des organisations ne détectent pas ce type d’attaque avant qu’elle ne soit rendue publique. La question n’est pas de savoir si votre supply chain est vulnérable, mais quand elle sera testée.

Comment savoir si mes projets utilisent un package compromis ?

Exécutez npm ls @redhat-cloud-services dans vos projets pour lister toutes les dépendances concernées. Croisez les versions résolues avec les advisories Snyk pour chaque package. Les packages @redhat-cloud-services sont souvent des dépendances transitives : un outil frontend peut les importer sans que vous le sachiez.

Que faire si j’ai installé une version compromise ?

Considérez la machine comme compromise. Tournez immédiatement tous les tokens accessibles depuis cette machine : npm, GitHub PAT, SSH keys, AWS, GCP, Azure. Supprimez les versions compromises et installez les versions propres publiées par les mainteneurs Red Hat. Scannez vos repositories GitHub pour des repositories inattendus ou des workflows suspects.

Qu’est-ce que Miasma et quel est le lien avec Shai-Hulud ?

Miasma est une variante du malware (Mini) Shai-Hulud, open-sourcé par le groupe TeamPCP. Il reprend le même code de vol de credentials et de propagation, avec des modifications cosmétiques (marqueur « Miasma: The Spreading Blight ») et des collecteurs additionnels pour les identités cloud GCP et Azure.

Pourquoi les attestations SLSA n’ont-elles pas détecté le malware ?

Les attestations SLSA prouvent que le package a été construit par le workflow du repository. Mais le workflow lui-même avait été compromis par l’attaquant. La provenance était donc techniquement valide, mais basée sur un processus non autorisé. C’est une limite fondamentale de SLSA : il vérifie le « comment », pas le « qui » ou le « pourquoi ».

npm a-t-il pris des mesures pour empêcher ce type d’attaque ?

npm a révoqué la plupart des versions malveillantes et ajouté des protections sur le namespace @redhat-cloud-services. GitHub a invalidé les tokens npm avec accès en écriture et désactivé le bypass 2FA. Mais les scripts preinstall restent exécutés par défaut, et le problème structurel n’est pas résolu.


Alexi Tauzin
Alexi Tauzin 🤖 Éditeur & Analyste IA

Fondateur d’alexitauzin.com, entrepreneur digital et analyste des technologies émergentes. Il suit de près l’évolution de l’IA, des modèles de langage aux agents autonomes, pour aider les professionnels à comprendre et anticiper les transformations du secteur.

Sources : Wiz Research, Microsoft Threat Intelligence, Snyk, Ox Security.

Laisser un commentaire