Osegi
Sécurité·2 min de lecture

bee-js 13.3.0 sur npm : un code malveillant visait les clés de wallets

La version 13.3.0 de la bibliothèque Swarm @ethersphere/bee-js est sortie par le circuit de publication officiel et cherchait à voler des clés de portefeuilles dès l'installation.

Laptop screen showing JavaScript code with a red warning icon and a crypto wallet key being pulled away.
Image: Хабр

Si vous avez installé @ethersphere/bee-js 13.3.0 depuis npm, le mal a peut-être été fait avant même le lancement de votre application. La société CodeScoring classe cette version de la bibliothèque JavaScript du stockage distribué Swarm comme malveillante depuis le 9 novembre. Elle tentait de voler les clés de portefeuilles crypto.

La manière dont elle a été diffusée est ce qu'il y a de plus gênant. Elle est passée par le processus de publication habituel du projet. Un commit a été poussé directement dans le dépôt officiel sous le compte de release bee-worker, puis une version a été créée, ce qui a déclenché le workflow GitHub Actions existant. Selon Socket, les informations de build sur npm renvoyaient au dépôt officiel et au processus de publication normal. Le code malveillant était déjà dans les sources.

Les attaquants ont fait en sorte qu'un script s'exécute automatiquement à l'installation. Dans les commentaires du code, l'appel à leur serveur était présenté comme l'envoi de statistiques. En réalité, le script récupérait du JavaScript et l'exécutait aussitôt, avec les droits de la personne qui installait le paquet.

Que faisait le code malveillant de bee-js ?

La charge utile cherchait dans les données de Swarm Desktop une clé de portefeuille chiffrée et un fichier de configuration. Si la configuration contenait le mot de passe de la clé, ces deux fichiers suffisaient à prendre le contrôle du portefeuille. Le code tentait aussi de s'installer durablement pour survivre à la fin de l'installation.

Sous Linux et macOS, l'attaque se poursuivait avec une porte dérobée permettant d'exécuter des commandes à distance. Elle lisait l'adresse de son serveur de commande dans un contrat intelligent Ethereum. L'opérateur pouvait donc la changer d'une seule transaction, sans publier de nouvelle version.

Comment savoir si l'on est concerné ?

La version pouvait arriver de façon indirecte. Les plages de dépendances de plusieurs outils Swarm autorisaient la 13.3.0 : chercher la dépendance directe dans le manifeste ne suffit pas. Il faut vérifier la version réellement résolue dans le fichier de verrouillage.

Les équipes doivent examiner leurs fichiers de verrouillage, caches de paquets et journaux d'installation en CI à la recherche de la 13.3.0. Si elle a été installée avec les scripts autorisés, ou si Swarm Desktop 0.56.2 a été lancé, la machine ou le runner de CI doit être examiné. Pour un runner, cela concerne aussi les jetons de publication de paquets et l'accès au code source.

Des apps à découvrir

SUMO : le puzzle de nombres

Touche les bonnes cases, additionne, atteins l'objectif. Facile à apprendre, difficile à maîtriser. Gratuit, pour tous les âges.

Mots-clés:npmswarmbee-jssupply chain attackcrypto walletgithub actions

Plus d'actus de ce jour

Tout voir →

Plus dans: Sécurité

Tout voir →