
Les chercheurs en sécurité ont identifié au moins 187 packages npm compromis lors d’une attaque en cours de la chaîne d’approvisionnement, avec une charge utile malveillante se propageant d’elle-même pour infecter d’autres packages.
La campagne coordonnée de type ver baptisée « Shai-Hulud » a débuté hier avec le compromis du package npm @ ctrl / tinycolor, qui reçoit plus de 2 millions de téléchargements hebdomadaires.
Depuis lors, la campagne s’est considérablement élargie et inclut désormais des packages publiés sous l’espace de noms npm de CrowdStrike.
De tinycolor à l’attaque collective
Hier, Daniel Pereira, ingénieur logiciel principal, a alerté la communauté sur une attaque à grande échelle de la chaîne d’approvisionnement logicielle affectant le plus grand registre JavaScript au monde, npmjs.com.
« Il y a un malware qui se propage en direct dans npm au moment où vous lisez ceci », a écrit l’ingénieur, avertissant tout le monde de s’abstenir d’installer les dernières versions du projet @ctrl/tinycolor.

Pereira avait essayé d’attirer l’attention de GitHub au cours des dernières 24 heures par des canaux plus discrets pour discuter de l’attaque en cours car « de nombreux dépôts ont été ciblés », et divulguer publiquement l’attaque pourrait mettre les gens en danger.
« Mais contacter GitHub est trop difficile. Par exemple, des secrets sont exposés dans des dépôts. C’est sérieux », a écrit l’ingénieur.
La société de sécurité de la chaîne d’approvisionnement logicielle Socket a commencé à enquêter sur la compromission et a identifié au moins 40 paquets compromis dans cette campagne. Aujourd’hui, les chercheurs en Socket et en Aïkido ont identifié des paquets supplémentaires, portant le nombre à au moins 187.
StepSecurity a également publié une ventilation technique avec des extraits déobfusqués et des diagrammes de flux d’attaque, confirmant en grande partie les conclusions initiales de Socket.
Les packages concernés incluent plusieurs packages publiés par le compte npmjs de CrowdStrike crowdstrike-publisher.
Breachtrace a contacté le fournisseur de solutions de cybersécurité pour obtenir ses commentaires:
« Après avoir détecté plusieurs packages malveillants de Gestionnaire de packages de nœuds (NPM) dans le registre public NPM, un référentiel open source tiers, nous les avons rapidement supprimés et avons fait pivoter de manière proactive nos clés dans les registres publics », a déclaré un porte-parole de CrowdStrike à Breachtrace .
« Ces packages ne sont pas utilisés dans le capteur Falcon, la plateforme n’est pas impactée et les clients restent protégés. Nous travaillons avec NPM et menons une enquête approfondie. »
Un ver auto-propagateur utilise TruffleHog pour voler des secrets
Les versions compromises incluent un mécanisme d’auto-propagation qui cible d’autres paquets du même responsable.
Le malware télécharge chaque paquet par un responsable, modifie son paquet.json, injecte un paquet.le script js (illustré ci-dessous), remballe l’archive et la republie, « permettant ainsi la cheval de Troie automatique des packages en aval », comme l’ont expliqué les chercheurs de Socket.

Le paquet.js script utilise TruffleHog, un scanner secret légitime qui peut être utilisé par les développeurs et les professionnels de la sécurité pour trouver des informations sensibles divulguées accidentellement, telles que des clés API, des mots de passe et des jetons dans des référentiels de code et d’autres sources de données.
Le script malveillant, cependant, abuse de l’outil pour rechercher sur l’hôte des jetons et des informations d’identification cloud.
« Il valide et utilise les informations d’identification du développeur et du CI, crée un flux de travail d’actions GitHub dans les référentiels et exfiltrent les résultats vers un webhook codé en dur (hxxps: / / webhook[.] site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7) », explique Socket.
Le nom « Shai-Hulud » vient du shai-hulud.fichiers de flux de travail yaml utilisés par les logiciels malveillants trouvés dans les versions compromises, et fait référence aux vers de sable géants de la série Dune de Frank Herbert.
« Bien qu’il ne s’agisse pas d’une référence unique, sa présence renforce le fait que l’attaquant a délibérément qualifié la campagne de » Shai-Hulud » », ont déclaré aujourd’hui les chercheurs de Socket Kush Pandya et Peter van der Zee.
Le malware trouvé dans les packages supplémentaires identifiés aujourd’hui est identique au volet précédent qui utilisait bundle.js à:
- Téléchargez et exécutez l’outil d’analyse secret légitime, TruffleHog
- Recherchez sur l’hôte des secrets tels que des jetons et des informations d’identification dans le cloud
- Vérifiez si le développeur découvert et les informations d’identification CI sont valides
- Créer des flux de travail d’actions GitHub non autorisés dans les référentiels
- Exfiltrer des données sensibles vers un point de terminaison de webhook codé en dur
L’incident fait suite à des attaques à grande échelle en cours telles que « s1ngularity » de nx
Ce qui distingue cette attaque de la chaîne d’approvisionnement, au-delà des paquets populaires qu’elle a touchés, c’est son timing.
L’attaque fait suite à deux attaques très médiatisées de la chaîne d’approvisionnement survenues le même mois.
La première semaine de septembre, des logiciels malveillants alimentés par l’IA ont frappé 2 180 comptes GitHub dans ce qui a été surnommé l’attaque « s1ngularity ».
Alors que la cause profonde de l’attaque d’aujourd’hui fait toujours l’objet d’une enquête, les praticiens, y compris Pereira, émettent l’hypothèse que l’attaque d’aujourd’hui pourrait avoir été orchestrée par les attaquants derrière « s1ngularity ».
Plus tôt ce mois – ci, les mainteneurs des populaires packages chalk et debug npm ont également été victimes d’hameçonnage, lors d’une attaque distincte, ce qui a compromis leurs projets.
Les effets d’entraînement de ces attaques s’étendent profondément dans la chaîne de dépendance, affectant potentiellement des projets largement utilisés tels que Google Gemini CLI, qui a publié une déclaration ce week-end:
« Nous voulons être clairs: le code source de la CLI Gemini lui-même n’a pas été compromis et nos serveurs restent sécurisés », a écrit Ryan J. Salva, directeur principal de la gestion des produits de Google.
« Cependant, cet incident peut avoir affecté les utilisateurs qui ont installé ou mis à jour l’interface de ligne de commande Gemini pendant la fenêtre d’attaque à l’aide de la méthode d’installation NPM. Nous fournissons des détails sur l’incident, clarifions qui est touché et décrivons les mesures que les utilisateurs doivent prendre pour s’assurer que leurs systèmes sont sécurisés. »
Ces attaques en cours démontrent la fragilité de la chaîne d’approvisionnement logicielle moderne, où une seule pull request malveillante ou un compte de responsable compromis peut se répercuter sur des centaines de projets.
Alors que des fournisseurs comme Google et CrowdStrike soulignent que leurs plates-formes principales restent sécurisées, l’incident souligne le besoin urgent pour les développeurs de protéger leurs versions logicielles et leurs pipelines.
Les utilisateurs concernés doivent auditer leurs environnements et leurs journaux à la recherche de signes de compromission, faire pivoter tous les secrets et jetons CI/CD, et examiner les arborescences de dépendances à la recherche de versions malveillantes. L’épinglage des dépendances aux versions approuvées et la limitation de la portée des informations d’identification de publication restent des étapes essentielles pour réduire l’exposition aux compromis au niveau du package.