Ce qui se passe
Les chercheurs de TrendAI, la branche entreprise de Trend Micro, ont identifié
quatorze paquets npm publiés sous des noms d'utilitaires de calendrier et de
séries : streak-metrics-math, kit-map-vim, streak-map-cache,
streak-calc-metrics et une dizaine d'autres variations sur les mêmes mots.
Chacun embarque un binaire présenté comme un accélérateur mathématique
natif — math-core.bin, calc-cache.bin, calc-mapping.bin selon les
paquets — déposé dans dist/ ou dist/internal/. Le contenu, lui, est
identique partout : RedShell, la balise Linux du framework de commande et
contrôle RedC2 4.0.
Le détail qui change tout
La plupart des paquets npm malveillants s'exécutent depuis un script
d'installation. C'est le vecteur que couvre npm install --ignore-scripts, et
c'est aussi celui que surveillent la plupart des outils d'audit.
Ici, il n'y en a pas. Le déclencheur est le fichier d'entrée du paquet,
dist/index.mjs, qui joue le rôle de chargeur : il ré-exporte proprement les
fonctions de dates promises, puis localise le binaire, le marque exécutable et
le lance en processus d'arrière-plan détaché.
« Aucun appel de fonction d'install hook n'est nécessaire ; un simple import n'importe où dans le graphe de dépendances, même transitif, suffit à exécuter la charge. » — Aliakbar Zahravi, TrendAI
Autrement dit : le paquet n'a même pas besoin d'être appelé. Il suffit qu'un
import le charge quelque part dans l'arbre, y compris une dépendance de
dépendance dont vous ignorez l'existence.
Ce que fait la charge
RedShell ouvre un shell interactif via /bin/sh et expose un jeu de commandes
spécifiques à Linux : reconnaissance système, opérations sur fichiers, collecte
de clés SSH et d'identifiants de navigateur, persistance, exécution d'ELF en
mémoire, proxy SOCKS5 et pivot réseau.
Le beacon s'enregistre auprès d'un serveur distant avec un message de check-in, puis entre dans une boucle de traitement de commandes.
RedC2 est vendu 99,99 $ sur des forums, annoncé par un acteur se faisant appeler « MarlboroMan » début juin 2026. Le framework est en développement actif depuis au moins un an : version 2.0 en août 2025, 3.0 en janvier, 4.0 en juin, qui introduit précisément le beacon Linux. Il embarque aussi un composant piloté par modèle de langage, « Red Agent », qui permet d'orchestrer reconnaissance réseau et vol d'identifiants en langage naturel.
Ce qu'il faut faire
Le point le plus inconfortable de cette campagne est que les paquets fonctionnent. Ils rendent le service annoncé, avec des noms plausibles et une API cohérente. Une relecture rapide du code d'entrée ne révèle rien d'anormal : le chargeur ressemble à un ré-export.
Trois réflexes concrets :
- Chercher les binaires. Un paquet JavaScript qui embarque un fichier
.binou.datdansdist/sans le documenter est une anomalie en soi. - Ne pas compter sur
--ignore-scripts. L'option reste utile, mais elle ne couvre pas ce vecteur : ici, c'est le chargement du module qui exécute. - Épingler et auditer le transitif. Un lockfile figé ne suffit pas si vous n'inspectez jamais ce qu'il fige.