Ce que le ver npm Shai-Hulud signifie pour les utilisateurs de dsh

Publié le 18 août 2026

Le 4 août 2026, un ver que les chercheurs ont baptisé Shai-Hulud a compromis keyv et cacheable — des paquets npm que la plupart des développeurs JavaScript ont installés sans jamais les avoir choisis. Or un plugin dsh est un paquet npm. Cet article traite de ce que cette coïncidence de calendrier signifie pour un écosystème vieux de quelques jours.

Ce qui s'est passé

Selon l'analyse de Wiz, l'attaquant a utilisé une identité de mainteneur compromise pour publier des versions malveillantes de keyv, puis s'est propagé via des workflows GitHub Actions légitimes à plus de 400 paquets totalisant environ deux milliards de téléchargements par mois.

La vague qui devrait inquiéter les utilisateurs d'agents est la sixième. Sa charge se cachait dans des fichiers de configuration d'agents IA — des fichiers qu'aucun scanner classique ne lit. Le command-and-control passait par un smart contract Ethereum plutôt que par un domaine saisissable. Et elle embarquait un guetteur qui déclenchait du code contrôlé par l'attaquant dès que les défenseurs tentaient de faire tourner les identifiants volés.

Pourquoi cela concerne dsh

Un plugin dsh, c'est un paquet npm plus une entrée dans cordis.yml. L'installer fait tourner toute la machinerie npm — scripts d'installation, dépendances transitives, tout ce que le lockfile n'a pas épinglé — puis charge le résultat dans le processus qui détient vos clés d'API et exécute votre shell. Chaque mécanisme utilisé par Shai-Hulud existe tel quel dans cet écosystème.

Le détail à retenir : la charge vivait dans des fichiers de configuration d'agents. Dans dsh, la configuration du chargeur est la surface d'attaque — cordis.yml décide quel code entre dans le processus. Un fichier que la plupart des gens copient d'un README sans le lire est exactement là où cette classe d'attaques va se cacher.

Un plugin dsh a-t-il été touché ?

Personne ne l'a démontré. À la date de publication (18 août 2026), nous ne connaissons aucun paquet malveillant confirmé parmi les 1805 dépôts que nous indexons. Mais le topic est un tag ouvert sans aucune revue, l'écosystème a quelques jours, et l'attaque npm ci-dessus était en cours deux semaines avant le lancement de dsh. L'absence de cas confirmé si tôt n'est pas une preuve de sécurité.

Quand une fiche porte un signal d'alerte vérifiable — un nom à une édition d'un dépôt plus populaire, une page d'accueil derrière un raccourcisseur de liens, une description qui fait passer un téléchargement dans un shell — nous imprimons ce fait sur la fiche. Nous n'imprimons pas de verdicts ; les métadonnées d'un dépôt ne peuvent pas les soutenir.

Que faire concrètement

Épinglez les versions exactes que vous avez examinées, commitez votre lockfile, et gardez les identifiants de production hors de l'environnement où vous essayez de nouveaux plugins. Avant d'ajouter quoi que ce soit à cordis.yml, parcourez la check-list de vérification complète. Si vous trouvez quelque chose de malveillant dans un dépôt que nous indexons, signalez-le-nous — les cas confirmés sont retirés de l'annuaire.