AIO APEX

144 paquets npm de Mastra compromis avec une porte dérobée lors d'une attaque de 88 minutes sur la chaîne d'approvisionnement

Socket
Partager:
144 paquets npm de Mastra compromis avec une porte dérobée lors d'une attaque de 88 minutes sur la chaîne d'approvisionnement

Des chercheurs en sécurité chez Socket ont divulgué une attaque sur la chaîne d'approvisionnement qui a compromis 144 paquets dans l'espace de noms @mastra sur npm le 17 juin 2026. L'attaquant a piraté un compte de contributeur disposant de droits de publication sur le framework d'agents IA Mastra, puis a mené une campagne automatisée sur 88 minutes qui a republié chaque paquet affecté avec une dépendance typosquattée injectée comme exigence de production. Tout développeur, exécuteur CI ou système de build ayant installé un paquet @mastra/* après le 16 juin doit considérer cet environnement comme potentiellement compromis, selon l'analyse de Socket.

Mastra est un framework TypeScript pour construire des agents IA, et son paquet principal (@mastra/core) reçoit plus de 918 000 téléchargements hebdomadaires. L'ampleur de l'attaque — 144 paquets sur l'ensemble de l'espace de noms, et non une seule cible de grande valeur — signifie que les développeurs installant une partie quelconque de l'écosystème Mastra pendant la fenêtre d'attaque ont été exposés.

Comment l'attaque a fonctionné

L'attaquant n'a pas modifié directement le code de Mastra. Au lieu de cela, il a ajouté une dépendance appelée easy-day-js à chaque paquet republié. Le nom est un typosquat délibéré de la bibliothèque de dates largement utilisée dayjs — suffisamment proche pour que l'analyse automatique des dépendances puisse l'ignorer.

Le paquet malveillant easy-day-js contenait un hook postinstall — un script que npm exécute automatiquement lors de npm install, avant qu'un développeur n'importe ou n'exécute du code provenant du paquet. Ce hook a téléchargé et exécuté une charge utile en deux étapes :

  • Étape 1 (setup.cjs) : Un chargeur obscurci qui a désactivé la vérification des certificats TLS, s'est connecté à l'infrastructure de l'attaquant à 23.254.164[.]92:8000, a téléchargé la charge utile de la deuxième étape, l'a lancée comme un processus d'arrière-plan détaché, puis s'est supprimé pour effacer les traces.
  • Étape 2 (protocal.cjs) : Un voleur d'informations multiplateforme d'environ 41 Ko avec des mécanismes de persistance pour Windows (clé de registre Run), macOS (LaunchAgent) et Linux (unité systemd). L'implant a inventorié 166 extensions de navigateur pour portefeuilles de cryptomonnaies, a récolté l'historique de navigation de Chrome, Edge et Brave, et a ouvert un canal de commande et de contrôle capable d'exécuter du code arbitraire ultérieur.

La fenêtre d'attaque s'est déroulée de 01h12 à 02h39 UTC le 17 juin. Les journaux d'audit de npm montrent qu'un seul compte — ehindero, un contributeur dont l'accès de publication à la portée @mastra n'a jamais été révoqué — a publié les 142 versions de paquets malveillants pendant ces 88 minutes. L'équipe de sécurité de Microsoft a également identifié et signalé l'attaque, selon des rapports supplémentaires.

Qui est à risque

Tout système ayant exécuté npm install avec une dépendance @mastra/* entre le 16 juin et le retrait des versions malveillantes représente un compromis potentiel. Cela inclut les ordinateurs portables des développeurs, les exécuteurs de pipelines CI/CD, les systèmes de build Docker et les environnements de build cloud. Étant donné que la charge utile s'exécute pendant l'installation via un hook postinstall — et non au moment de l'exécution de l'application — même les systèmes qui n'ont pas exécuté l'application sont affectés s'ils ont exécuté npm install.

Étapes de remédiation

Socket et d'autres chercheurs en sécurité recommandent de considérer tout système affecté comme entièrement compromis. Actions spécifiques :

  • Supprimer la persistance : supprimer les entrées de registre Run de Windows, les fichiers plist LaunchAgent de macOS et les unités systemd de Linux associées à l'implant.
  • Faire tourner toutes les informations d'identification présentes sur les machines affectées : jetons npm, informations d'identification des fournisseurs cloud (AWS, GCP, Azure), clés SSH et clés API.
  • Faire tourner les portefeuilles de cryptomonnaies sur un périphérique propre et non affecté — l'implant ciblait spécifiquement 166 extensions de portefeuille de navigateur.
  • Auditer les pipelines CI/CD pour détecter les signes d'accès non autorisé ou de secrets exfiltrés.

Pour une protection future, Socket recommande d'ajouter --ignore-scripts aux commandes npm install dans les pipelines CI pour désactiver les hooks postinstall par défaut — une atténuation simple qui aurait bloqué ce vecteur d'attaque spécifique entièrement.

L'organisation @mastra a supprimé les versions malveillantes des paquets de npm. Les développeurs doivent mettre à jour vers des versions propres et vérifier que easy-day-js n'apparaît dans aucun répertoire node_modules ni fichier de verrouillage.

Originally reported by Socket. Read the original article for additional details.

View original source
Partager:
144 paquets npm de Mastra compromis avec une porte dérobée lors d'une attaque de 88 minutes sur la chaîne d'approvisionnement | AIO APEX