Aller au contenu
Guide

Le ver Miasma a frappé les packages npm de Red Hat : détecter, faire pivoter, remplacer

| 8 min read

Un ver npm auto-propagé a touché 7 packages @redhat-cloud-services le 29 mai 2026. Il cache la persistance dans Claude Code et VS Code. Un script de détection de 60 secondes, une passe de rotation et le correctif structurel.

Code on a terminal representing an npm supply chain worm incident response
Photo by Growtika on Unsplash

Le 1er juin 2026, les chercheurs ont attrapé un ver npm auto-propagé, vivant depuis le 29 mai. Sa carte de visite est un message d'engagement : « Miasma : The Spreading Blight ». Un Red Hat compromis Le compte GitHub d'un employé a poussé les commits orphelins malveillants directement dans RedHatInsights référentiels, contournant la révision du code et sept @redhat-cloud-services forfaits envoyé une charge utile de vol d'informations d'identification à tous ceux qui les ont installés.

Deux choses font que Miasma mérite un nouveau runbook. Il fonctionne dans un preinstall crochet, donc ça incendies avant postinstall et même une installation annulée peut la déclencher. Et ça plante persistance dans vos outils de développement : un hook SessionStart dans Claude Code et un tasks.json avec "runOn": "folderOpen" dans les projets VS Code. Suppression node_modules ne fait rien à ceux-là. Voici le playbook de détection, rotation et remplacement.

Les sept paquets compromis

Tout le monde est sous le @redhat-cloud-services portée:

  • vulnerabilities-client
  • tsc-transform-imports
  • topological-inventory-client
  • sources-client
  • rule-components
  • remediations-client
  • rbac-client

Étape 1 : détecter en moins de 60 secondes

Trois signaux : un package compromis dans votre arborescence, un artefact de persistance dans Claude Code ou VS Code et trafic exfil déguisé en appels à api.anthropic[.]com:443/v1/api. Courir ceci depuis n'importe quel hôte avec npm et git:

Tout coup signifie que vous passez à l'étape 2. Le ver termine sa récolte avant que vous ayez fini de lire le avisé, donc un seul signal suffit pour commencer à tourner.

L’astuce de la persistance est la partie qui mord les équipes qui nettoient trop vite. Vous pouvez supprimer le mauvais colis, reconstruire node_modules, et j'ai toujours un hook SessionStart ~/.claude/settings.json qui réexécute la charge utile la prochaine fois que vous ouvrez Claude Coder. Audit ~/.claude/settings.json, .vscode/tasks.json, et .github/workflows à la main avant d'appeler un hôte propre.

Étape 2 : confirmer la fenêtre de publication avec l'API npm

Avant d'épingler une version "sûre", vérifiez quand elle a été publiée. Les versions malveillantes ont atterri sur Le 29 mai, toute sortie datée de ce jour ou plus tard est suspecte. Le point de terminaison botoi npm renvoie le horodatage modifié et liste des responsables sans npm install:

UNE modified horodatage le ou après 2026-05-29 signifie épingler au dernier connu bonne version publiée avant cette date, pas la dernière. La forme GET est mise en cache sur le CDN, vous peut intégrer cela dans une vérification d'approbation de dépendance qui s'exécute à chaque demande d'extraction.

Étape 3 : faites pivoter, puis frottez les bûches

Miasma récolte les secrets de GitHub Actions, les jetons npm, les informations d'identification cloud, Kubernetes et Vault matériel, clés SSH et informations d’identification Git. Rotation dans cet ordre : les jetons npm arrêtent les nouvelles publications, Les PAT GitHub arrêtent les écritures du référentiel, les clés cloud IAM arrêtent l'exfil des données, puis Vault et SSH. Ne enquêtez d’abord ; faites pivoter, puis enquêtez.

La charge utile transfère ces secrets dans les journaux qui circulent dans Datadog, Sentry et votre billetterie système. Acheminez les champs à haut risque via un détecteur secret et fermez-les avant qu'ils n'atteignent un index interrogeable :

Étape 4 : bloquer la prochaine vague avec un garde CI

Miasma a besoin de trois choses sur votre coureur : une version compromise, un hook de cycle de vie qui s'exécute et un fichier de persistance qu'il peut écrire. Cassez n'importe qui. Cette vérification GitHub Actions désactive le cycle de vie scripts pour le travail, échoue sur les marqueurs de persistance Miasma, signale les packages de portée Red Hat et nécessite une provenance signée sur les dépôts d'exécution :

Garder ignore-scripts activé par défaut et maintenez une courte liste verte pour les packages qui construire légitimement (TypeScript, esbuild, Sharp). Un hook préinstallé qui ne fonctionne jamais ne peut pas récolter n'importe quoi.

Étape 5 : rétrécir la surface pouvant accueillir un ver

Les packages les plus souvent empoisonnés au cours des vagues 2026 regroupent un seul appel réseau : clients API, des aides à la validation et de petits utilitaires. Chacun est candidat à supprimer et à remplacer par un Appel HTTPS révocable qui n’exécute aucun code local.

Catégorie Dépendance npm typique Remplacement HTTP Rayon d'explosion en cas de violation
Analyse secrète et PII secretlint, détecteur pii /v1/pii/detect Faire pivoter une clé API
Métadonnées du package wrappers de client de registre npm /v1/npm/{package} Faire pivoter une clé API
Validation par e-mail validateur, validateur de courrier électronique approfondi /v1/email/validate Faire pivoter une clé API
Vérification des violations packages clients hibp /v1/breach/check Faire pivoter une clé API

Points clés à retenir

  • Vérifiez les fichiers de persistance de l'outil de développement. Le miasme se cache dans ~/.claude/settings.json et .vscode/tasks.json. Suppression du paquet ne retire pas le crochet.
  • Épingler par date de publication. Tout ce qui se trouve dans les sept colis datés du ou après 2026-05-29 est suspect. Utiliser /v1/npm/{package} à confirmer.
  • Faites pivoter avant d’enquêter. Jetons npm, PAT GitHub, clés cloud, Vault, SSH. Exfil se termine en quelques secondes.
  • Désactivez les scripts de cycle de vie par défaut. Un hook de préinstallation qui ne s'exécute jamais ne peut pas voler n'importe quoi.
  • Rétrécissez la surface. Remplacer les packages npm à appel unique par HTTP révocable points finaux. Une clé violée meurt en une seule requête.

Botoi exposes /v1/npm/{package}, /v1/pii/detect, /v1/breach/check, et environ 200 autres points de terminaison à usage unique derrière une clé API avec 5 req/min gratuits. Connectez-les à votre runbook d'incidents ou connectez le Serveur MCP à Claude Codez pour que votre assistant exécute le script de détection pour vous. Commencez par le documents interactifs.

FAQ

Qu’est-ce que l’attaque de la chaîne d’approvisionnement Miasma ?
Miasma est un ver npm à propagation automatique découvert le 1er juin 2026, avec son premier commit « Miasma: The Spreading Blight » daté du 29 mai 2026. Un compte GitHub d'un employé de Red Hat compromis a poussé des commits orphelins malveillants vers les référentiels RedHatInsights, contournant la révision du code, et sept packages npm @redhat-cloud-services ont été publiés avec un hook de préinstallation obscurci qui collecte les informations d'identification et se propage à de nouveaux hôtes.
Quels paquets ont été compromis ?
Sept packages sous la portée @redhat-cloud-services : client de vulnérabilités, tsc-transform-imports, client d'inventaire topologique, client de sources, composants de règles, client de remédiation et client rbac. Si votre fichier de verrouillage a extrait l'un de ces éléments après le 29 mai 2026, considérez l'hôte comme compromis et alternez chaque identifiant qu'il a touché.
En quoi Miasma est-il différent des vers npm antérieurs ?
Miasma s'exécute dans un hook de préinstallation, il se déclenche donc avant la post-installation et même une installation annulée peut le déclencher, et il implante la persistance dans les outils de développement, pas seulement dans CI. Il injecte un hook SessionStart dans Claude Code, écrit un fichier Tasks.json avec runOn FolderOpen dans les projets VS Code et génère une charge utile cryptée de manière unique par infection pour éviter l'analyse des signatures. La suppression de node_modules ne le supprime pas.
Que vole le ver et où l'envoie-t-il ?
Secrets GitHub Actions, jetons npm, informations d'identification cloud, matériel Kubernetes et Vault, clés SSH et informations d'identification Git. Il déguise l'exfiltration en trafic vers api.anthropic[.]com sur le port 443 et revient à GitHub comme canal secondaire, de sorte que le filtrage de sortie sur des domaines inconnus seul ne le détectera pas.
Comment les API HTTP à usage unique réduisent-elles ce risque ?
Un package avec un hook de préinstallation exécute du code arbitraire sur chaque machine qui l'installe. Un appel HTTPS vers une API à usage unique n'exécute rien localement et est contrôlé par une clé révocable. Si le fournisseur d'API est violé, vous faites pivoter une clé. Si un package de votre arborescence est piraté, le malware est déjà exécuté. L'échange représente un faible coût de latence pour un petit rayon d'explosion et une révocation instantanée.

Commencez a construire avec botoi

150+ endpoints API pour la recherche, le traitement de texte, la generation d'images et les utilitaires pour developpeurs. Offre gratuite, sans carte bancaire.