Scannez pour télécharger l’application Gate
qrCode
Autres options de téléchargement
Ne pas rappeler aujourd’hui

Analyse de l'empoisonnement NPM - Reproduction de l'attaque Shai-Hulud

Auteur : Joker & Ccj

Contexte

Récemment, la communauté NPM a de nouveau été frappée par un incident massif d'empoisonnement de paquets NPM, cet incident étant fortement lié à l'attaque Shai-Hulud de septembre 2025. Le code malveillant dans les paquets NPM de cette fois-ci volait les clés des développeurs, les clés API et d'autres informations sensibles telles que les variables d'environnement, en utilisant les clés pour créer des dépôts publics et télécharger ces informations sensibles volées.

SlowMist( Outil de veille sur les menaces Web3 et de surveillance de la sécurité dynamique développé en interne, MistEye répond immédiatement et envoie rapidement les informations sur les menaces pertinentes pour fournir aux clients une protection de sécurité essentielle.

![])https://img-cdn.gateio.im/social/moments-159684ebd67ca55d47335ddbd42018c3(

![])https://img-cdn.gateio.im/social/moments-bd2aba046f0a86aca7e1abd2b72e9eed(

En même temps, le système en arrière-plan sauvegardera immédiatement les échantillons malveillants et calculera leurs valeurs caractéristiques correspondantes telles que SHA-256.

![])https://img-cdn.gateio.im/webp-social/moments-0c04f20f1376390bdc04bad915d660b6.webp(

Processus d'analyse

Prenons le package @asyncapi/php-template@0.1.1 comme exemple. En le comparant à l'ancienne version @asyncapi/php-template@0.1.0, on peut constater que la version 0.1.1 a ajouté deux fichiers js, à savoir setup_bun.js et le fichier bun_environment.js obfusqué.

![])https://img-cdn.gateio.im/webp-social/moments-45994a147ca5cec569400f4833f14468.webp(

Un script preinstall a été ajouté dans le package.json, ce qui permet d'exécuter automatiquement setup_bun.js avant l'installation des dépendances.

![])https://img-cdn.gateio.im/webp-social/moments-45e344c5a0d73a61db9f267eae229bc6.webp(

Dans setup_bun.js, il va d'abord vérifier si Bun est déjà installé sur le système. Si ce n'est pas le cas, il téléchargera et installera automatiquement Bun depuis le site officiel, puis configurera correctement les variables d'environnement afin de trouver le fichier exécutable de Bun.

Enfin, exécutez le fichier bun_environment.js avec bun, ce bun_environment.js est un fichier malveillant hautement obfusqué.

![])https://img-cdn.gateio.im/webp-social/moments-44505da1b8a0d007a2a0c1cf3b0472ca.webp(

Après avoir désobfusqué une partie du code du script malveillant, il est possible de déterminer que aL0)( est la fonction principale de l'ensemble du script malveillant. Il semble que ce script malveillant ait pour but de voler des informations sensibles, en vérifiant d'abord l'environnement d'exécution pour voir s'il existe des identifiants NPM ou GitHub. Si ces identifiants sont détectés, il utilisera les identifiants NPM pour se propager dans la chaîne d'approvisionnement, et toutes les informations système collectées et les données sensibles seront finalement empaquetées et téléchargées sur un dépôt GitHub contrôlé par l'attaquant, pour une exploitation ultérieure.

Vol de justificatifs

AWS : Ce script malveillant implémente les méthodes runSecrets)( et listAndRetrieveAllSecrets)(. La méthode runSecrets)( parcourt toutes les informations d'identification d'accès cloud trouvées ainsi que toutes les régions possibles, maximisant ainsi la portée de l'analyse ; tandis que listAndRetrieveAllSecrets)( effectue une “exploitation approfondie” au sein des informations d'identification et des régions spécifiées, extrayant tous les Secrets et récupérant leurs contenus en clair les plus récents. En combinant les deux, l'attaquant peut exporter en une seule fois tous les SecretString et SecretBinary accessibles dans le compte AWS de la victime.

![])https://img-cdn.gateio.im/webp-social/moments-3c33d90aa4bd49b2d8304f07d9cf0c78.webp(

La méthode enumerateValidCredentials)( est principalement utilisée pour collecter de manière exhaustive toutes les clés de service cloud valides. Elle essaie successivement diverses sources telles que les variables d'environnement, les fichiers de configuration, les connexions CLI, etc. Tous les identifiants qui réussissent à se valider sont enregistrés pour être utilisés ultérieurement lors du vol de secrets dans le cloud.

![])https://img-cdn.gateio.im/webp-social/moments-18502e3837d4a198101e4f71f742d424.webp(

GCP : Une autre méthode listAndRetrieveAllSecrets)( implémentée dans ce script malveillant est principalement destinée au module GCP. Elle commence par lister tous les Secrets sous ce projet GCP en fonction de l'ID de projet spécifié, puis localise directement la dernière version de chaque Secret et appelle accessSecretVersion pour lire son contenu en texte clair. Enfin, tous les secrets récupérés (comme les clés API, les mots de passe de base de données, etc.) sont collectés un par un.

![])https://img-cdn.gateio.im/webp-social/moments-bad2067511f01dd442e955c89db61dc9.webp(

Azure : Une autre méthode listAndRetrieveAllSecrets)( mise en œuvre dans ce script malveillant cible principalement le module Azure. Elle commence par scanner l'ensemble de l'abonnement via Azure Resource Manager pour identifier tous les Key Vault ; elle se connecte ensuite à chaque Vault un par un en utilisant les informations d'identification obtenues ; enfin, elle énumère tous les Secrets et appelle getSecret pour obtenir la valeur en clair de chaque secret.

![])https://img-cdn.gateio.im/social/moments-9176712c5d0ed04eeb1ee93411f8af42(

Dans la mise en œuvre du vol d'informations sensibles, des outils de sécurité légitimes sont également utilisés pour attaquer les victimes. Dans la méthode extractAndInstall)(, les fichiers binaires de TruffleHog sont décompressés et extraits. TruffleHog, qui est à l'origine utilisé pour détecter et valider les informations confidentielles divulguées dans les dépôts de code, comme les clés API et les identifiants, est utilisé par les attaquants pour scanner l'ensemble du système de fichiers de la victime.

![])https://img-cdn.gateio.im/webp-social/moments-45e2049fa39e4d26acd79661c664ca21.webp(

) NPM chaîne d'approvisionnement

Ce script malveillant implémente une fonction updatePackage###( pour propager la chaîne d'approvisionnement NPM. Il utilise d'abord un jeton NPM volé pour télécharger le code source des paquets NPM légitimes auxquels la victime a des droits de publication. Ensuite, il modifie le fichier package.json en insérant une commande de script malveillant dans le champ scripts. En même temps, le script malveillant est inclus dans le paquet, augmentant automatiquement le numéro de version du paquet de 1, afin de déclencher la mise à jour automatique de l'utilisateur, poussant le paquet NPM contenant le script malveillant vers le dépôt officiel NPM.

![])https://img-cdn.gateio.im/social/moments-f2c1d619c8b8a125a018a4990e47e144(

) porte dérobée et C2

Après avoir volé les informations, l'attaquant utilisera le GitHub Token volé pour créer un dépôt avec un nom aléatoire sous son compte et obtenir un jeton d'enregistrement, faisant passer l'ordinateur de la victime pour un GitHub Actions Runner auto-hébergé de ce dépôt. Ensuite, l'attaquant injecte un workflow malveillant dans le dépôt, de sorte que toute tâche Actions déclenchée s'exécute sur la machine de la victime, permettant ainsi une exécution de code à distance.

![]###https://img-cdn.gateio.im/webp-social/moments-547cfd5eb9ee4614a975d1f574583495.webp(

Et téléchargez ces informations volées après les avoir chiffrées en double base64 dans le dépôt créé, dont la description est “Sha1-Hulud: The Second Coming.”.

![])https://img-cdn.gateio.im/webp-social/moments-6bad80b5f904d7c25fa993600ff2a710.webp(

Après décryptage, les données sensibles divulguées par l'utilisateur peuvent être vues.

![])https://img-cdn.gateio.im/social/moments-73bf3f27df82dfd50c02ff7c42e746af(

![])https://img-cdn.gateio.im/webp-social/moments-aefb641fee19ee0ad471234e3d5aa081.webp(

![])https://img-cdn.gateio.im/social/moments-ea2062526e3489a6cfd6fcbebd94605c(

Résumé

Le poisonnage du dépôt NPM cette fois-ci combine des vers et une persistance à long terme de programmes auto-hébergés, et utilise TruffleHog pour mener des attaques. L'équipe de sécurité Slow Mist recommande aux développeurs d'adopter une stratégie de verrouillage des versions des paquets de dépendance lors de la construction et de la publication de nouvelles itérations. Si des mises à jour de sécurité ou de fonctionnalités sont nécessaires pour les paquets de dépendance, elles doivent être effectuées par un processus d'audit de sécurité interne rigoureux, tout en mettant à jour simultanément les versions verrouillées, afin d'éviter des mises à jour aveugles qui pourraient introduire de nouveaux risques.

Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • Commentaire
  • Reposter
  • Partager
Commentaire
0/400
Aucun commentaire
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)