Avant-propos

L’équipe Unit 42 de Palo Alto Networks enquête sur une attaque active et de grande ampleur de la supply chain logicielle visant l’écosystème npm (Node Package Manager). Un ver inédit et auto-réplicatif, actuellement baptisé « Shai-Hulud », est à l’origine de la compromission de plus de 180 paquets logiciels.

Cette attaque marque une évolution majeure des cybermenaces liées à la supply chain, en exploitant une propagation automatisée pour agir à grande échelle. Unit 42 estime également, avec un niveau de confiance modéré, qu’un LLM a été utilisé pour générer le script bash malveillant, sur la base de commentaires et d’emojis.

Les clients de Palo Alto Networks bénéficient d’une meilleure protection et de mesures de d’atténuation contre différents aspects de cette attaque grâce à nos produits et services. Citons notamment :

L’équipe Unit 42 de réponse aux incidents peut également intervenir en cas de compromission ou réaliser une évaluation proactive afin de réduire votre niveau de risque.

Unit 42 – Thématiques connexes Supply Chain, Collecte d’identifiants, Hameçonnage, JavaScript

Paquets npm et supply chain – Le contexte

L’attaque pourrait provenir d’une campagne d’hameçonnage visant à collecter des identifiants, en usurpant l’identité de npm et en demandant aux développeurs de « mettre à jour » leurs options d’authentification multifacteur (MFA). Une fois l’accès initial obtenu, l’acteur de la menace a déployé un payload malveillant opérant comme un ver et déclenchant une séquence d’attaque en plusieurs étapes. Sur la base de commentaires et d’emojis dans le script bash, Unit 42 estime, avec un niveau de confiance modéré, que l’acteur de la menace s’est appuyé sur un LLM pour l’écriture du code malveillant.

Les versions compromises des paquets logiciels contiennent un ver qui exécute un script post-installation. Ce malware explore l’environnement infecté à la recherche d’identifiants, notamment :

  • Les fichiers .npmrc (pour les jetons npm)
  • Les variables d’environnement et fichiers de configuration ciblant spécifiquement les GitHub Personal Access Tokens (PAT) et les clés API de services cloud tels que :
    • Amazon Web Services (AWS)
    • Google Cloud Platform (GCP)
    • Microsoft Azure

Les matériels d'authentification récoltés sont exfiltrés vers un terminal contrôlé par l’acteur. Le logiciel malveillant crée ensuite, de manière programmatique, un référentiel GitHub public nommé « Shai-Hulud » sous le compte de la victime. Il effectue un commit contenant les secrets volés et les expose publiquement.

En utilisant le jeton npm dérobé, le malware s’authentifie auprès du registre npm au nom du développeur compromis. Il identifie alors d’autres paquets logiciels maintenus par ce développeur, y injecte du code malveillant et publie les nouvelles versions compromises sur le registre. Ce processus automatisé permet au malware de se propager de façon exponentielle, sans intervention directe de l’acteur.

Portée actuelle de l’attaque

L’ampleur de la compromission est considérable et touche de nombreux paquets logiciels, dont la bibliothèque @ctrl/tinycolor, très populaire, qui enregistre des millions de téléchargements chaque semaine.

Le vol d’identifiants dans le cadre de cette campagne peut conduire directement à la compromission de services cloud (AWS, Azure ou GCP), au vol de données depuis des buckets de stockage, au déploiement de ransomware, au cryptomining ou encore à la suppression d’environnements de production. Il peut également déboucher sur le vol direct de bases de données et le détournement de services tiers à des fins d’hameçonnage. Enfin, le vol de clés SSH peut permettre le mouvement latéral au sein des réseaux compromis.

Recommandations provisoires

  1. Rotation des identifiants : procédez immédiatement à la rotation de tous les identifiants développeur. Cela inclut les jetons d’accès npm, les GitHub Personal Access Tokens (PAT), les clés SSH ainsi que toutes les clés d’accès programmatiques utilisées pour les services cloud et tiers. Considérez que tout secret présent sur la machine d’un développeur a pu être compromis.
  2. Audit des dépendances : réalisez sans délai un audit complet de toutes les dépendances de vos projets. Utilisez des outils comme npm audit pour identifier les versions de paquets logiciels vulnérables. Vérifiez avec attention vos fichiers package-lock.json ou yarn.lock et assurez-vous que vous n’utilisez pas de paquets logiciels déjà compromis. Supprimez ou mettez à jour les dépendances affectées immédiatement.
  3. Revue de la sécurité des comptes GitHub : chaque développeur doit vérifier son compte GitHub afin de détecter la présence de référentiels publics non reconnus (en particulier « Shai-Hulud »), de commits suspects ou de modifications inattendues dans les workflows GitHub Actions susceptibles d’établir une persistance.
  4. Application stricte du MFA : assurez-vous que l’authentification MFA soit strictement appliquée sur tous les comptes développeur, en particulier sur les plateformes critiques telles que GitHub et npm, afin d’éviter toute exploitation des identifiants.

Requêtes de chasse aux menaces d’Unit 42

Conclusion

Le ver Shai-Hulud marque une escalade majeure dans la série d’attaques npm qui ciblent la communauté open source. Il fait suite à des incidents récents tels que la compromission de s1ngularity/Nx, impliquant le vol d’identifiants et l’exposition de référentiels privés, ainsi qu’une vaste campagne d’hameçonnage npm observée en septembre 2024.

Son caractère auto-réplicatif est particulièrement remarquable, puisqu’il combine efficacement le vol d’identifiants avec un mécanisme de diffusion automatisée qui exploite les droits de publication existants des mainteneurs pour se propager dans l’écosystème. Nous avons en outre observé l’intégration de contenus générés par IA dans la campagne Shai-Hulud, une évolution qui fait écho à l’attaque « s1ngularity/Nx », qui utilisait clairement des outils en ligne de commande boostés par l’IA à des fins de reconnaissance. Ce phénomène illustre la menace croissante que représentent les acteurs malveillants exploitant l’IA pour leurs activités, ce qui accélère la dissémination des secrets.

La constance et le raffinement de ces méthodologies d’attaque soulignent la menace grandissante qui pèse sur les supply chains logicielles open source. Ces attaques se propagent désormais au rythme de l’intégration et du déploiement continus (CI/CD), posant des défis de sécurité durables et de plus en plus complexes pour l’ensemble de l’écosystème.

Palo Alto Networks a partagé ses conclusions avec les autres membres de la Cyber Threat Alliance (CTA). Les membres de la CTA s’appuient sur ces renseignements pour déployer rapidement des mesures de protection auprès de leurs clients et perturber de manière coordonnée les activités des cybercriminels. Cliquez ici pour en savoir plus sur la Cyber Threat Alliance.

Protections et détections de Palo Alto Networks contre les attaques de la supply chain visant les paquets npm

Les clients de Palo Alto Networks peuvent s’appuyer sur un large éventail de protections, de services et de mises à jour intégrés aux produits pour identifier et contrer cette menace.

Vous pensez que votre entreprise a été compromise ? Vous devez faire face à une urgence ? Contactez l’équipe Unit 42 de réponse à incident ou composez l’un des numéros suivants :

  • Amérique du Nord : Numéro gratuit : +1 (866) 486-4842 (866.4.UNIT42)
  • Royaume-Uni : +44 20 3743 3660
  • Europe et Moyen-Orient : +31.20.299.3130
  • Asie : +65.6983.8730
  • Japon : +81 50 1790 0200
  • Australie : +61.2.4062.7950
  • Inde : 000 800 050 45107

Advanced WildFire

Les modèles de Machine Learning d’Advanced WildFire ont été mis à jour sur la base des indicateurs de compromission (IoC) associés à cette menace.

Pare-feux de nouvelle génération avec prévention avancée des menaces

Le pare-feu de nouvelle génération (Next-Generation Firewall ), avec l'abonnement de sécurité Advanced Threat Prevention , peut aider à bloquer l'attaque via la signature de prévention des menaces suivante : 87042, 87046 et 87047.

Services de sécurité cloud pour le pare-feu de nouvelle génération

Le service Advanced URL Filtering aide à bloquer les attaques de phishing de type meddler-in-the-middle (MitM) et classe comme malveillantes les URL associées à cette activité.

Cortex XDR et XSIAM

Cortex XDR et XSIAM contribuent à la protection contre les menaces décrites dans cet article. Les agents sont conçus pour empêcher l’exécution de malwares connus, mais aussi de menaces inconnues grâce à la protection comportementale et à l’analyse locale basée sur le machine learning.

Cortex Cloud

Cortex Cloud aide à détecter les paquets malveillants et à identifier les erreurs de configuration du pipeline qui pourraient exposer les clients à des dépendances open source non testées ou non approuvées. Le scanner est conçu pour signaler les vulnérabilités, les problèmes de licence et les risques opérationnels, mais il n'a pas pour but de détecter le code malveillant dans les paquets récemment publiés. Il est essentiel d'examiner les alertes CI/CD pertinentes et de vérifier que vos applications ne s'appuient pas sur des versions de paquets npm non sanctionnées.

Cortex Cloud a publié un article de blog détaillé décrivant comment la plateforme peut être utilisée pour détecter et prévenir les attaques de la supply chain.

Prisma Cloud

Prisma Cloud contribue à détecter l’utilisation de paquets logiciels malveillants et à identifier des configurations erronées dans les pipelines susceptibles d’exposer les clients à des versions OSS non testées ou non autorisées. Toutefois, son scanner est conçu pour repérer les vulnérabilités, les problèmes de licence et les risques opérationnels, et non pour détecter du code malveillant dans de nouveaux paquets logiciels. Il est donc essentiel d’examiner attentivement les alertes CI/CD pertinentes et de s’assurer que vos applications n’utilisent pas de versions non autorisées de paquets npm.

Indicateurs de compromission

  • 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
  • b74caeaa75e077c99f7d44f46daaf9796a3be43ecf24f2a1fd381844669da777
  • dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c
  • 4b2399646573bb737c4969563303d8ee2e9ddbd1b271f1ca9e35ea78062538db
  • hxxps://webhook[.]site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7

Pour aller plus loin

Enlarged Image