Le populaire package npm 'node-ipc' compromis dans une attaque de la chaîne d'approvisionnement, vol de credentials
Une nouvelle attaque de la chaîne d'approvisionnement a ciblé le populaire package **node-ipc**, injectant un malware voleur de credentials dans des versions récemment publiées. Le package compromis, largement utilisé pour la communication inter-processus, représente un risque important pour les développeurs et leurs systèmes.
Des pirates ont injecté un malware voleur de credentials dans de nouvelles versions publiées de **node-ipc**, un populaire package de communication inter-processus, dans le cadre d'une nouvelle attaque de la chaîne d'approvisionnement ciblant npm.
Le package **node-ipc** est un module Node.js qui permet à divers processus de communiquer via toutes sortes de sockets, y compris Unix, Windows, UDP, TLS et TCP.
Malgré la publication par le mainteneur en mars 2022 de [versions armées](https://www.bleepingcomputer.com/news/security/big-sabotage-famous-npm-package-deletes-files-to-protest-ukraine-war/) qui ciblaient des systèmes basés en Russie et en Biélorussie avec un module d'écrasement de données, en protestation contre l'invasion russe de l'Ukraine, le package compte toujours plus de 690 000 téléchargements hebdomadaires sur npm.
### Découverte de l'attaque
La récente attaque de la chaîne d'approvisionnement a été détectée par plusieurs entreprises de sécurité applicative, notamment **Socket**, **Ox Security** et **Upwind**, qui ont confirmé les trois versions suivantes comme étant malveillantes :
* [email protected]
* [email protected]
* [email protected]
Le code malveillant se cache dans le point d'entrée CommonJS (node-ipc.cjs) et s'exécute automatiquement chaque fois que des applications sont chargées.
Le malware est fortement obfusqué et identifie les systèmes infectés, collecte les variables d'environnement et les fichiers locaux sensibles, compresse les données volées dans des archives, et les exfiltre via des requêtes DNS TXT.
Le dernier compromis semble être l'œuvre d'un acteur externe qui a compromis le compte d'un mainteneur inactif nommé 'atiertant'.
### Données ciblées par le malware
Selon les chercheurs, l'infostealer injecté dans les nouvelles versions de **node-ipc** collecte les types d'informations suivants à partir des systèmes compromis :
* Credentials cloud d'**AWS**, **Azure**, **GCP**, **OCI**, **DigitalOcean**, et autres
* Clés SSH et configurations SSH
* Credentials Kubernetes, Docker, Helm et Terraform
* Tokens npm, GitHub, GitLab et Git CLI
* Fichiers .env et credentials de base de données
* Historiques de shell et secrets CI/CD
* Fichiers du trousseau macOS et keyrings Linux
* Fichiers de profil et de base de données de clés Firefox (sur macOS)
* Stockage local de Microsoft Teams et chemins IndexedDB
Le malware ignore les fichiers de plus de 4 MiB et évite de scanner les répertoires .git et node_modules pour augmenter l'efficacité et réduire le bruit opérationnel sur l'hôte.

### Exfiltration via des enregistrements DNS TXT
Une caractéristique opérationnelle notable est l'utilisation de requêtes DNS TXT au lieu du trafic conventionnel de commande et de contrôle (C2) basé sur HTTP pour l'exfiltration des données. Les attaquants utilisent un faux domaine à thème Azure (sh[.]azurestaticprovider[.]net:443) comme résolveur bootstrap, transmettant les données à 'bt[.]node[.]js' avec des préfixes de requête tels que xh, xd et xf.
Selon **Socket**, l'exfiltration d'une archive compressée de 500 Ko pourrait générer environ 29 400 requêtes DNS TXT, aidant le trafic à se fondre dans l'activité DNS normale.
Avant la soumission, le malware stocke les données collectées dans des archives temporaires compressées tar.gz, qui sont supprimées après exfiltration pour réduire les traces forensiques.
Le malware n'établit pas de persistance ni ne télécharge de payloads secondaires, l'opération semble donc axée sur le vol rapide de credentials et l'exfiltration.
### Étapes d'atténuation
Les développeurs potentiellement impactés doivent immédiatement supprimer les versions affectées, faire pivoter les secrets et les credentials exposés, et inspecter les lockfiles et les caches npm.