ua-parser-js est détourné pour extraire des cryptomonnaies
Le paquet ua-parser-js est utilisé pour analyser l'agent utilisateur d'un navigateur afin d'identifier le navigateur, le moteur, le système d'exploitation, le processeur et le type/modèle de périphérique d'un visiteur. Il est très populaire, avec des millions de téléchargements (environ 7 millions) par semaine et plus de 24 millions de téléchargements depuis le début de ce mois. En outre, le paquet est utilisé dans plus d'un millier d'autres projets, y compris ceux de Facebook, Microsoft, Amazon, Instagram, Google, Slack, Mozilla, Discord, Elastic, Intuit, Reddit, et de nombreuses autres entreprises bien connues.
Mais plusieurs versions du paquet ont été détournées pour un usage malveillant. Il semble en effet qu'un ATO (account takeover - prise de contrôle de compte) se soit produit, le compte de l'auteur ayant été détourné en raison d'une fuite de mot de passe ou d'une tentative de force brute. « J’ai remarqué quelque chose d’inhabituel quand mon adresse e-mail a été soudainement floodée par des spams provenant de centaines de sites », a déclaré le développeur d’ua-parser-js, Faisal Salman, dans un rapport de bogue sur GitHub. Il s'est fait pirater et des versions malveillantes de son package avaient été publiées par les attaquants.
Au total, trois nouvelles versions du paquet ont été publiées dans le but d'inciter les utilisateurs à les télécharger. Alors que la version précédente (propre) était 0.7.28, l'attaquant a publié des paquets identiques 0.7.29, 0.8.0 et 1.0.0, chacun contenant du code malveillant activé à l'installation. L'auteur du paquet a rapidement réagi en publiant les versions 0.7.30, 0.8.1 et 1.0.1 afin de minimiser le nombre de personnes installant par inadvertance un paquet malveillant. Cette capture d'écran annotée des informations du registre montre qu'il s'est écoulé environ 4 heures entre l'attaque et la solution de contournement :
Malheureusement, le code malveillant serait resté téléchargeable environ 3 heures après la correction. Selon des experts, la plupart des paquets malveillants téléchargés quotidiennement sur npm tentent de voler des clés d'environnement de manière générique. Cependant, ces versions compromises ciblaient Windows et Linux + macOS d'une manière légèrement différente. Alors que les versions du script téléchargeaient et exécutaient une application d'extraction de cryptomonnaies sur macOS et les systèmes d'exploitation Linux, la version Windows comprenait également un cheval de Troie.
Toutefois, les analystes de BleepingComputer - qui ont eu accès au code malveillant - ont déclaré que bien que l'application d'extraction de cryptomonnaies soit passée inaperçue par la majorité des logiciels antivirus Windows le cheval de Troie aurait été détecté et arrêté par au moins une douzaine d'entre eux, dont les plus populaires comme Gdata et Symantec. Dans les cas de Linux et macOS, bien que l'on ne puisse pas éliminer pour le moment la probabilité qu'il comprenne également le cheval de Troie intégré à l'outil de minage de cryptomonnaie, l'expérience antérieure avec ce code indique que ce n'est pas le cas.
Selon les analystes de BleepingComputer, lorsque les paquets compromis sont installés sur l'appareil d'un utilisateur, un script "preinstall.js" vérifie le type de système d'exploitation utilisé sur l'appareil et lance soit un script shell Linux, soit un fichier batch Windows. Si le paquet se trouve sur un appareil Linux, un script "preinstall.sh" sera exécuté pour vérifier si l'utilisateur se trouve en Russie, en Ukraine, au Belarus et au Kazakhstan. Si le périphérique n'est pas situé dans ces pays, le script téléchargera le programme "jsextension" depuis 159[.]148[.]186[.]228 et l'exécutera.
Le programm jsextension est un mineur de la cryptomonnaie Monero XMRig, qui n'utilisera que 50 % du processeur de l'appareil pour éviter d'être facilement détecté. Pour les appareils Windows, le fichier batch télécharge également le mineur de XMRig Monero, l'enregistre sous le nom de "jsextension .exe" [VirusTotal] et l'exécute. En outre, le fichier batch téléchargera un fichier sdd.dll et l'enregistrera sous le nom de create.dll. La DLL téléchargée est un cheval de Troie voleur de mots de passe (probablement DanaBot) qui tentera de voler les mots de passe stockés sur l'appareil.
Lorsque la DLL est chargée à l'aide de la commande regsvr32.exe -s create.dll, elle tente de voler les mots de passe d'une grande variété de programmes, notamment les clients FTP, VNC, les logiciels de messagerie, les clients de messagerie électronique et les navigateurs.
Alors, que doivent faire les utilisateurs de ua-parser-js ?
En plus de voler les mots de passe des programmes ci-dessus, la DLL exécutera un script PowerShell pour voler les mots de passe du gestionnaire d'identifiants de Windows. Cette attaque semble avoir été menée par le même acteur de la menace qui se cache derrière d'autres paquets npm malveillants découverts cette semaine. Les chercheurs de la société de sécurité open source Sonatype ont découvert trois paquets npm malveillants utilisés pour déployer des applications de minage de cryptomonnaies sur des appareils Linux et Windows d'une manière presque identique.
En raison de l'impact généralisé de cette attaque de la chaîne d'approvisionnement, il est fortement conseillé à tous les utilisateurs du ua-parser-js de vérifier l'absence de logiciels malveillants dans leurs projets. Cela implique de vérifier l'existence de jsextension.exe (Windows) ou de jsextension (Linux) et de les supprimer s'ils sont trouvés. Pour les utilisateurs de Windows, vous devez analyser votre appareil à la recherche d'un fichier create.dll et le supprimer immédiatement. Seul Windows a été infecté par le cheval de Troie voleur de mots de passe.
Mais il est sage pour les utilisateurs de Linux de supposer que leur appareil a été entièrement compromis. Par ailleurs, WhiteSource - une société qui analyse les composants open source à la recherche de vulnérabilité - estime que vous êtes responsable de votre chaîne d'approvisionnement en logiciels libres. Selon lui, cet incident n'est que la partie émergée de l'iceberg des incidents qui se produisent dans l'écosystème npm.
WhiteSource dit avoir identifié et signalé au cours du mois dernier plus de 350 paquets npm uniques comportant une ou plusieurs versions malveillantes, soit prises en charge via des ATO, soit créées dans le seul but de causer divers types de dommages aux utilisateurs finaux. Ainsi, pour prévenir les attaques de la chaîne d'approvisionnement, il vous recommande de ne jamais utiliser le même mot de passe pour plusieurs sites Web et de toujours activer le 2FA (l'authentification à double facteur) si vous êtes un responsable de paquets.
Source : Rapport de bogue pour ua-parser-js
Et vous ?
Quel est votre avis sur le sujet ?
Avez-vous été infecté par les versions malveillantes du paquet ua-parser-js ? Si oui, quels ont été les impacts ?
Que pensez-vous du détournement répété des paquets npm populaires au cours des derniers mois ? L'écosystème est-il toujours sûr ?
Voir aussi
Quatre packages npm trouvés en train d'ouvrir des shells sur des systèmes Linux et Windows. Tout ordinateur avec l'un de ces packages installés « doit être considéré comme totalement compromis »
Un projet Node.js sur deux audité par les outils de npm aurait au moins une vulnérabilité, une sur dix d'entre elles est critique
Des hackers ont glissé une porte dérobée dans une bibliothèque open source largement utilisée pour voler des bitcoins
Plus de 75% des vulnérabilités dans les projets open source résident dans des dépendances indirectes, plutôt que dans les composants directement chargés