Campagne Shai-Hulud massive : plus de 600 packages npm compromis, ciblage des secrets de développeurs
Une nouvelle attaque de la chaîne d'approvisionnement **Shai-Hulud** a injecté du code malveillant dans plus de 600 packages du registre Node Package Manager (**npm**). La campagne, ciblant principalement l'écosystème `@antv`, vole les secrets des développeurs et des environnements CI/CD, les exfiltrant via le réseau Session P2P et GitHub.

Des acteurs malveillants ont publié plus de 600 packages malveillants dans l'index du **Node Package Manager (npm)** dans le cadre d'une nouvelle campagne de la chaîne d'approvisionnement **Shai-Hulud**.
La plupart des packages affectés se trouvent dans l'écosystème `@antv`, qui comprend des bibliothèques pour la création de graphiques, la visualisation de graphes, la création de diagrammes de flux et la cartographie. Cependant, des packages populaires en dehors de cet espace de noms ont également été compromis.
### Attaque d'une heure
Comme lors de la précédente campagne **Shai-Hulud** ayant affecté les packages **TanStack** et **Mistral**, le payload collecte les secrets des environnements de développement et CI/CD et les exfiltre via le réseau Session P2P pour compliquer les efforts de détection et de neutralisation.
L'acteur malveillant a également utilisé **GitHub** comme mécanisme d'exfiltration de secours et a publié les données volées dans des dépôts sous les comptes des victimes lorsque les jetons utilisés pour la publication ont été trouvés.
Selon la société de sécurité applicative **Socket**, les pirates ont publié 639 versions malveillantes réparties sur 323 packages uniques en environ une heure le 19 mai, entre 01h56 UTC et 02h56 UTC.
L'attaque a commencé par la compromission du compte npm `atool`, qui publie les packages dans l'espace de noms `@antv`. Parmi les bibliothèques impactées figurent :
* echarts-for-react
* @antv/g2
* @antv/g6
* @antv/x6
* @antv/l7
* @antv/g2plot
* @antv/graphin
* timeago.js
* size-sensor
* canvas-nest.js
Les chercheurs d'**Endor Labs** soulignent que certains des packages (par exemple, timeago.js, size-sensor et jest-canvas-mock) n'avaient pas reçu de mise à jour légitime depuis longtemps et étaient moins susceptibles d'avoir leur fonctionnalité de sécurité de publication de confiance OIDC configurée.
Par exemple, bien que *jest-canvas-mock* ait encore 10 millions de téléchargements mensuels, il est inactif depuis environ 3 ans.
Les chercheurs de **Socket** maintiennent une liste des artefacts de packages affectés par toutes les attaques **Shai-Hulud**, qui compte désormais plus de 1 000 entrées.
Les campagnes **Shai-Hulud** ont débuté en septembre dernier et continuent d'affecter plusieurs écosystèmes logiciels, tels que npm, PyPI et Composer, dans une moindre mesure.
### Publication sur GitHub
Le malware compromet les comptes des mainteneurs ou les jetons de publication pour pousser des packages légitimes avec du code malveillant qui vole les secrets des développeurs et des environnements CI/CD, et peut se propager à d'autres projets en utilisant les identifiants volés.
La dernière vague implique l'injection d'un payload `index.js` fortement obfusqué qui tente de voler les identifiants **GitHub**, npm, cloud, Kubernetes, Vault, Docker, base de données et SSH.
Il cible principalement les postes de travail des développeurs et les environnements CI/CD, y compris **GitHub Actions**, GitLab CI, Jenkins, Azure DevOps, CircleCI, Vercel, Netlify et d'autres plateformes de build.
Les données volées sont sérialisées, compressées Gzip, chiffrées AES-256-GCM et encapsulées RSA-OAEP pour rendre l'inspection réseau plus difficile.
Lorsque des identifiants **GitHub** sont disponibles, le malware utilise l'API **GitHub** pour créer automatiquement de nouveaux dépôts sous le compte de la victime et y téléverser les données volées.
Les dépôts publiés à la suite de cette attaque contiennent un fichier Readme avec la chaîne `niaga og ew ereh :duluh-iahs`, qui est l'inverse de *Shai-Hulud: Here We Go Again*, une phrase utilisée dans la fuite du malware **Shai-Hulud** la semaine dernière.
Un rapport de la plateforme de sécurité logicielle **Aikido** note qu'il existe plus de 2 700 dépôts non autorisés sur **GitHub** correspondant aux marqueurs de la campagne.
Une recherche avant la publication de cet article montre qu'il existe actuellement au moins 2 900 dépôts **GitHub** générés par la dernière campagne de la chaîne d'approvisionnement **Shai-Hulud**.

Le principal canal d'exfiltration, cependant, est *filev2.getsession[.]org/file/* via le réseau Session P2P. le point de terminaison *t.m-kosche.com* pour l'envoi des identifiants volés.
« Sur le réseau, il s'agit d'un trafic chiffré de bout en bout sur TCP/443, indiscernable du trafic légitime de l'application Session au niveau réseau. Il n'y a pas de point de terminaison C2 [command-and-control] traditionnel à bloquer par nom d'hôte ou adresse IP », indiquent les chercheurs d'**Endor Labs**.
### Package d'apparence légitime
Une nouvelle addition clé que **Endor Labs** a repérée dans cette variante de **Shai Hulud** est sa capacité à générer des attestations de provenance **Sigstore** valides en abusant des jetons OpenID Connect (OIDC) des environnements CI compromis et en les soumettant à Fulcio et Reko.
Une capacité similaire a été observée dans le payload livré lors de l'attaque **TanStack** attribuée à TeamPCP, lorsque l'acteur malveillant a publié des versions de packages malveillants avec une attestation de provenance vérifiable Supply-chain Levels for Software Artifacts (SLSA).
En conséquence, les packages npm malveillants peuvent apparaître comme légitimement signés et passer les contrôles de vérification de provenance standard malgré la présence de malware volant des identifiants.
La capacité d'auto-propagation est également présente dans cette attaque. Le malware valide les jetons npm volés, énumère les packages appartenant à la victime, télécharge les tarballs, injecte le payload malveillant et republie les packages infectés avec des numéros de version augmentés.
Étant donné que le code de **Shai Hulud** a été récemment divulgué sur **GitHub** par le groupe malveillant TeamPCP et a déjà été utilisé dans des attaques, l'attribution de la nouvelle campagne **Shai-Hulud** est plus difficile.
### Persistance via VS Code et Claude Code
**Socket** indique que cette variante diffère techniquement des payloads Mini **Shai-Hulud** précédents mais partage les mêmes caractéristiques opérationnelles.
« Les payloads AntV diffèrent des artefacts Mini **Shai-Hulud** précédents tels que les payloads router_init.js et router_runtime.js liés à Intercom de **TanStack** », explique **Socket**.
« L'échantillon AntV utilise un index.js à la racine, un point de terminaison C2 principal différent et un corps de payload plus petit. Cependant, le modèle opérationnel de base est cohérent. »
**Aikido Security** confirme que si le modèle de base est le même, il existe quelques différences. Le payload est maintenant plus petit, et il y a une persistance via des backdoors plantées dans les configurations VS Code et Claude Code.
Les chercheurs avertissent que cela pourrait indiquer que « l'attaquant réfléchit à ce qui se passe après le nettoyage de la compromission initiale ».
La recommandation générale pour les développeurs ayant téléchargé l'un des packages npm infectés est de le supprimer immédiatement ou de revenir à une version connue et sûre publiée avant le 18 mai, puis de révoquer et de faire pivoter tous les identifiants exposés (par exemple, les jetons **GitHub**, les jetons cloud, les clés SSH).
Les rapports sur l'attaque des sociétés de sécurité applicative **Socket**, **Endor Labs**, **Aikido Security** et **Step Security** incluent des indicateurs de compromission ainsi que des conseils de détection, de remédiation et d'atténuation que les défenseurs peuvent utiliser pour protéger les environnements de développement.
**[MISE À JOUR : 10:31 EST] :** *Article mis à jour avec des informations de **Aikido Security** et **Microsoft**.*
[Le fossé de validation : les tests d'intrusion automatisés répondent à une question. Vous en avez besoin de six.](https://hubs.li/Q048zztN0)
Les outils de tests d'intrusion automatisés apportent une réelle valeur, mais ils ont été conçus pour répondre à une seule question : un attaquant peut-il se déplacer sur le réseau ? Ils n'ont pas été conçus pour tester si vos contrôles bloquent les menaces, si vos règles de détection se déclenchent ou si vos configurations cloud tiennent bon.
Ce guide couvre les 6 surfaces que vous devez réellement valider.
[Télécharger maintenant](https://hubs.li/Q048zztN0)