Les packages typosquattés s’exécutent automatiquement lors de l’installation, empreintent les victimes par IP et déploient un binaire PyInstaller pour récolter les informations d’identification des navigateurs, des clés SSH, des jetons API et des fichiers de configuration cloud.
Dans le cadre d’une campagne de chaîne d’approvisionnement en plusieurs étapes récemment divulguée, un acteur malveillant a publié dix packages npm typosquattés qui imitent des bibliothèques populaires pour déployer un voleur d’informations d’identification multiplateforme.
Selon une analyse de Socket, les packages ont été publiés le 4 juillet et ont collectivement accumulé près de 10 000 téléchargements en quatre mois avant d’être signalés pour suppression.
« Chaque package exploite le hook post-installation de npm pour s’exécuter immédiatement après l’installation, en se lançant dans une nouvelle fenêtre de terminal pour éviter toute détection pendant le processus d’installation », ont noté les chercheurs de Socket dans un article de blog.
Une fois installés, ces packages lancent automatiquement une fausse invite CAPTCHA, faisant croire aux développeurs qu’elle fait partie d’un processus d’installation légitime. En parallèle, la chaîne d’attaque prend l’adresse IP de la victime et récupère un binaire contenant PyInstaller conçu pour récolter les informations d’identification des trousseaux de clés, des navigateurs, des clés SSH, des jetons API et des fichiers de configuration cloud.
script de postinstallation npm avec obscurcissement
Les packages malveillants exploitent un cycle de vie npm intégré, le script de post-installation, pour lancer l’attaque sans aucune étape supplémentaire de l’utilisateur. Socket a découvert que ces packages étaient conçus pour détecter le système d’exploitation sur lequel ils s’exécutaient, puis ouvrir automatiquement une nouvelle fenêtre de terminal pour lancer le script de malware caché.
En exécutant la charge utile dans une fenêtre séparée, l’acteur masque l’activité des journaux d’installation, ont noté les chercheurs.
De plus, la charge utile JavaScript ouvre un faux CAPTCHA à l’aide de la ligne de lecture de Node et imprime des messages convaincants tels que « installation du package discord.js… » avec des numéros de version et un nombre de contributeurs réalistes. Cette étape d’ingénierie sociale retarde les connexions évidentes à l’installation de npm et peut faire croire aux développeurs et aux défenseurs automatisés que le package effectue un travail de configuration inoffensif.
L’analyse de Socket a également montré que le JavaScript lui-même est profondément obscurci sur quatre couches distinctes : un auto-décodeur IIFE, un chiffrement XOR saisi à partir de la source du décodeur, un texte de charge utile codé en URI et un obscurcissement du flux de contrôle utilisant des bases numériques mixtes – rendant la détection statique et la révision occasionnelle du code beaucoup plus difficiles.
« Ce malware démontre plusieurs techniques avancées rarement vues ensemble dans les attaques de chaîne d’approvisionnement NPM », ont déclaré les chercheurs. « La campagne combine quatre couches d’obscurcissement, d’ingénierie sociale via de faux CAPTCHA et de fausses installations de packages légitimes, et une exécution automatisée sans interaction supplémentaire de l’utilisateur après la fausse invite CAPTCHA. »
Charge utile pour les empreintes IP et le vol d’informations d’identification
Une fois la fausse interaction CAPTCHA effectuée, le programme d’installation envoie l’adresse IP de la victime au serveur de l’attaquant, une étape qui permet le suivi, le géorepérage et l’exclusion des cibles indésirables.
Il télécharge ensuite la charge utile à partir du même hôte, qui est une application Pyinstaller de 24 Mo contenant des centaines de milliers de chaînes et plusieurs binaires, indiquant un voleur riche en fonctionnalités.
Socket a ensuite analysé les binaires pour effectuer une collecte agressive du système de fichiers et des informations d’identification, ciblant les magasins de mots de passe du navigateur et les cookies, les clés SSH, les porte-clés du système d’exploitation (Windows Credential Manager, le trousseau macOS, Linux SecretService), les fichiers de configuration cloud, les jetons SDK et d’autres artefacts pouvant conduire à un « accès à long terme » aux référentiels de code, aux consoles cloud et aux ressources de l’entreprise. L’exfiltration transfère les données vers l’hôte de l’acteur menaçant, fournissant ainsi un point central de collecte des secrets récoltés. Socket a publié une liste complète des dix noms de packages malveillants, leurs hachages et l’adresse e-mail associée de l’attaquant pour aider les développeurs et les défenseurs à identifier les compromissions potentielles.
Les bibliothèques populaires typosquattées dans la campagne incluent TypeScript, discord.js, ethers.js, nodemon, react-router-dom et zustand. La popularité de npm en a fait une cible croissante pour les programmes d’imposture, les fraudeurs ayant mené des espionnages massifs et des attaques contre la chaîne d’approvisionnement au cours des derniers mois.



