En bref
Que s'est-il passé ?
Le 17 juin 2026 entre 01:01 et 02:39 UTC, 57 paquets de l'écosystème @mastra (framework d'agents IA), totalisant plus de 1,1 million de téléchargements hebdomadaires, sont compromis. La porte d'entrée est une dépendance typosquattée, easy-day-js, qui imite le populaire dayjs en copiant son auteur npm (iamkun), son dépôt et sa licence MIT.
La dépendance `"easy-day-js": "^1.11.21"` est ajoutée aux paquets @mastra. Le caret force npm à résoudre vers la dernière version correspondante, la 1.11.22 malveillante publiée à 01:01 UTC. Son hook postinstall exécute `setup.cjs` (4 572 octets), un dropper obfusqué qui télécharge une charge de seconde étape depuis un serveur de l'attaquant puis s'auto-supprime.
Filtrage egress au moment de l'installation (un voleur qui ne peut pas joindre son C2 est neutralisé), lockfile et versions figées pour empêcher la résolution automatique vers une version piégée, cooldown registre avant de servir une version fraîche, et inventaire npm des postes développeurs.
Chronologie de l'attaque
easy-day-js@1.11.21 est publiée à 07:05 UTC, sans charge malveillante.
easy-day-js@1.11.22 est mise en ligne à 01:01 UTC et ajoutée en dépendance des paquets @mastra.
Entre 01:12 et 02:39 UTC, 57 paquets @mastra (286+ versions) sont publiés avec la dépendance piégée.
Comment l'attaquant a procédé
Cet incident met en jeu les vecteurs d'attaque suivants du catalogue SOCLE ; chacun renvoie à sa fiche, où l'on trouve les exigences qui le neutralisent :
La leçon à en tirer
Bloquer le réseau sortant pendant l'installation des dépendances ; figer les versions (lockfile, pas de caret) ; inventorier les paquets npm sur les postes développeurs.
Les exigences SOCLE qui auraient limité cet incident
Cet incident se rattache à 5 exigences du référentiel, par domaine. Les satisfaire n'aurait pas forcément tout empêché, mais aurait réduit la probabilité de l'attaque, limité son impact ou accéléré sa détection :