Des cybercriminels ont publié plus de six cents paquets malveillants dans l’index Node Package Manager (npm) aujourd’hui. Cette action s’inscrit dans une nouvelle campagne de chaîne d’approvisionnement qui utilise le pirate Shai-Hulud.
La majorité des paquets affectés appartiennent à l’écosystème @antv, qui propose des bibliothèques pour créer des graphiques, visualiser des données, concevoir des organigrammes et réaliser des cartes. Des paquets populaires en dehors de cet espace de noms ont aussi été compromis.
Comme lors de la campagne précédente qui ciblait les paquets TanStack et Mistral, la charge utile vole des clés secrètes depuis les environnements de développement et les pipelines d’intégration continue. Elle les exfiltre ensuite via le réseau Session P2P pour compliquer la détection et l’intervention.
Les pirates ont aussi employé GitHub comme mécanisme de repli pour l’exfiltration. Quand ils ont trouvé des jetons de publication, ils ont envoyé les données volées dans des dépôts créés sous les comptes des victimes.
Selon la société de sécurité Socket, les hackers ont mis en ligne 639 versions malveillantes réparties sur 323 paquets uniques en à peine une heure. Parmi les bibliothèques touchées, on compte :
- 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 indiquent que certains de ces paquets, comme timeago.js, size-sensor et jest-canvas-mock, n’avaient pas reçu de mise à jour légitime depuis longtemps. Ils étaient donc moins susceptibles d’avoir configuré la fonctionnalité de sécurité de publication fiable OIDC.
Par exemple, jest-canvas-mock compte toujours dix millions de téléchargements mensuels, mais son développement est à l’arrêt depuis environ trois ans.
Les experts de Socket tiennent à jour une liste des artefacts compromis par toutes les attaques Shai-Hulud, qui dépasse désormais mille entrées.
Ces campagnes ont débuté en septembre dernier. Elles continuent d’affecter de multiples écosystèmes logiciels, principalement npm, et dans une moindre mesure PyPI et Composer.
Le malware pirate les comptes des mainteneurs ou vole leurs jetons de publication. Il pousse ensuite des paquets légitimes qui contiennent un code malveillant. Ce code dérobe les secrets des développeurs et des systèmes d’intégration, et il peut se propager à d’autres projets grâce aux identifiants volés.
La dernière vague implique l’injection d’une charge utile ‘index.js’ très obfusquée. Celle-ci tente de voler les identifiants GitHub, npm, ainsi que les accès pour le cloud, Kubernetes, Vault, Docker, les bases de données et le protocole SSH.
Elle vise surtout les postes de travail des développeurs et les environnements d’intégration continue, comme GitHub Actions, GitLab CI, Jenkins, Azure DevOps, CircleCI, Vercel, Netlify et d’autres plateformes de construction.
Les données subtilisées sont sérialisées, compressées avec Gzip, chiffrées avec AES-256-GCM et encapsulées avec RSA-OAEP afin de rendre l’inspection réseau plus ardue.
Quand des identifiants GitHub sont disponibles, le malware utilise l’API de la plateforme pour créer automatiquement de nouveaux dépôts sous le compte de la victime. Il y télécharge ensuite les informations volées.
Socket a identifié 1900 dépôts GitHub publics qui correspondent aux marqueurs de cette campagne. Un rapport plus récent de la plateforme de sécurité Aikido précise que l’attaquant a déjà publié plus de 2700 dépôts frauduleux sur GitHub en utilisant des jetons volés.

Source : Socket
D’après Endor Labs, une nouveauté clé de cette dernière variante de Shai-Hulud est sa capacité à générer des attestations de provenance Sigstore valides. Pour cela, elle exploite des jetons OIDC provenant d’environnements d’intégration compromis et les soumet à Fulcio et Reko.
En conséquence, des paquets npm malveillants peuvent sembler signés de façon légitime et passer les vérifications standard de provenance, même s’ils contiennent un malware qui vole des identifiants.
La capacité d’auto-propagation est aussi présente dans cette attaque. Le malware valide les jetons npm volés, répertorie les paquets détenus par la victime, télécharge les archives, injecte la charge malveillante, et republie les paquets infectés avec des numéros de version incrémentés.
Comme le code source de Shai-Hulud a fuité récemment sur GitHub par le groupe de pirates TeamPCP et qu’il est déjà employé dans des attaques, l’attribution de cette nouvelle campagne est plus complexe.
Socket affirme que cette variante diffère techniquement des premières charges utiles Mini Shai-Hulud, mais qu’elle partage les mêmes caractéristiques opérationnelles.
« Les charges utiles AntV sont différentes des artefacts Mini Shai-Hulud plus anciens, comme router_init.js de TanStack ou router_runtime.js lié à Intercom », précise Socket.
« L’échantillon AntV utilise un fichier index.js à la racine, un point de terminaison de commande principal différent et un corps de charge plus léger. Cependant, le modèle opérationnel central reste cohérent. »
Les développeurs qui ont téléchargé l’un des paquets npm infectés doivent les désinstaller sans attendre. Ils doivent aussi renouveler toutes les clés secrètes accessibles par les systèmes compromis.
