Catégories

Tags

🔍 Licence d'Utilisation 🔍

Sauf mention contraire, le contenu de ce blog est sous licence CC BY-NC-ND 4.0.

© 2025 à 2042 Sébastien Gioria. Tous droits réservés.

⏱️
Temps de lecture estimé
4 min de lecture
⏱️
Temps de lecture estimé
~9 minutes

Un skill, un plugin ou un serveur MCP piégé n’a pas besoin de casser quoi que ce soit : il donne à l’agent une instruction ou un script, et l’agent fait le reste avec vos droits. Entre l’avis du CERT chinois d’avril et les campagnes ClawHub, voici ce qui est établi, ce qui ne l’est pas, et pourquoi 341, 1 184 et 1 467 ne parlent pas de la même chose.


L’alerte de septembre date d’avril

Dans une de mes alertes récente, un lien pointait vers un article annonçant que le CERT national chinois mettait en garde contre le « skill poisoning », ces skills qui transforment un agent en dépôseur de malware. Le réflexe naturel est d’y voir une alerte de la semaine. Elle ne l’est pas : l’article relayé date du 13 septembre, et l’avis original du CVERC remonte au 22 avril 2026. L’alerte date le moment où le sujet m’a été signalé, pas celui où il est né.

Le mécanisme tient en peu de mots. Un skill peut réunir un fichier d’instructions, des descriptions de déclenchement, des scripts et des ressources. Un serveur MCP expose des outils et leurs métadonnées. Un plugin agrège plusieurs de ces éléments. Le risque apparaît dès qu’un contenu contrôlé par un tiers devient une instruction privilégiée ou un programme exécuté avec les droits de l’utilisateur. Aucune faille à exploiter : le composant a été invité, et l’agent a fait ce qu’on attend d’un agent.

Note du PandaRedacteur : pendant vingt ans, on a appris aux utilisateurs à ne pas exécuter les pièces jointes. On a ensuite construit des assistants dont le métier est d’exécuter ce qu’on leur donne. Les attaquants ont lu la fiche de poste.

7 recettes de poison

Toutes les attaques ne se ressemblent pas, et le terme « poisoning » ne désigne pas ici l’empoisonnement des données d’entraînement. Les sources distinguent plusieurs mécanismes :

MécanismeCe qui se passe
1. Instructions cachéesUn ordre parasite dans SKILL.md ou une description d'outil MCP (Invariant Labs, avril 2025)
2. Faux prérequis« Installez cette dépendance » ; chez ClawHavoc, ça distribue des stealers
3. Script ou binaire hostileL'exécution suffit, le modèle n'a pas à obéir
4. Rug pullVersion bénigne d'abord, version piégée ensuite
5. Détournement entre outilsUne description pousse l'agent vers un autre outil, légitime
6. DissimulationUnicode invisible, remplissage, charge encodée
7. Empoisonnement composéCharge répartie sur plusieurs skills ; encore expérimental

Le deuxième et le troisième sont les plus simples, et les plus observés. Le rapport de VirusTotal résume le premier en une phrase : « The malware is the workflow ». Le mode opératoire hostile est rédigé comme une procédure d’installation, et l’agent la suit.

flowchart LR
    A["Skill ou serveur MCP<br/>publié sur une place de marché"] --> B["Découverte et installation"]
    B --> C["Contenu intégré au contexte<br/>de l'agent"]
    C --> D["Action présentée comme nécessaire<br/>(prérequis, dépannage, outil)"]
    D --> E["Accès shell, réseau, secrets"]
    E --> F["Téléchargement, exécution<br/>ou exfiltration"]

Ce schéma est une synthèse des mécanismes publiés, pas une chaîne universelle observée dans chaque incident. Certaines campagnes passent par une étape ClickFix qui demande une action humaine ; d’autres n’en demandent aucune.

Dans la version complète, je déroule les trois publications chinoises, ce que mesurent vraiment 341, 1 184 et 1 467, le tri entre terrain et démonstration, l’analyse STRIDE, l’impact et les mitigations.

📬 Analyse complète : gratuite pour les abonnés Substack
Cette analyse part d'abord aux abonnés de ma newsletter Substack, où elle est gratuite pour les abonnés. Elle sera publiée intégralement ici ensuite.

Au Menu de la version abonnés, vous retrouvez la suite :
  • le détail des trois publications chinoises (CNCERT, CVERC, relais de septembre) et du bulletin CERT-FR ;
  • le tableau qui sépare 341, 1 184, 1 467 et 386, et ce que chaque chiffre mesure vraiment ;
  • le tri entre campagnes observées et preuves de concept, et la configuration de dépôt (.mcp.json, AGENTS.md) qui joue le rôle d'un skill ;
  • l'analyse STRIDE, le tableau d'impact et dix mitigations concrètes ;
  • et la sketchnote du PandaRedacteur résumant tout cela en anglais.

📚 Quelques références pour aller plus loin


À retenir 📌

  • ✓ L'alerte n'est pas de septembre : avis CNCERT le 12 mars, avis CVERC le 22 avril ; la newsletter du 24 septembre date le relais, pas le phénomène.
  • ✓ Le skill est un programme, pas un document : un contenu tiers devient instruction privilégiée ou code exécuté avec vos droits, sans qu'aucune faille soit nécessaire.
  • ✓ 341, 1 184 et 1 467 ne se comparent pas : instantané de malveillants, historique, et skills avec au moins un problème. Seuls 76 ont été confirmés malveillants à la main dans l'étude Snyk. Aucun n'est un nombre de victimes.
  • ✓ Terrain et démonstration, deux rayons : ClawHavoc, postmark-mcp et FakeGit sont observés ; MedusaLocker, le scénario Microsoft et les skills de Trail of Bits sont des preuves de concept.
  • ✓ La config de l'agent est un skill déguisé : .mcp.json, AGENTS.md et ~/.claude.json s'exécutent ou redirigent sans qu'on ait rien « installé » ; les éditeurs répondent parfois « working as designed ».
  • ✓ Aucune défense ne tient seule : inventaire, admission par revue, isolation, droits séparés, autorisation des actions sensibles, journalisation. Le scanner est une porte, pas un verdict.