Security musings

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é
~8 minutes

Cet article fait partie de la série OWASP Agentic Skills Top 10. Retrouvez l’introduction et le plan complet sur la page de la série.

La barrière d’entrée pour publier sur ClawHub en janvier 2026 se résumait à un fichier SKILL.md et un compte GitHub vieux d’une semaine. Sans signature de code, sans vérification d’identité des publishers, ClawHub est devenu le premier registre d’agents IA empoisonné systématiquement à grande échelle.

AST02 couvre l’ensemble des attaques supply chain qui exploitent l’absence de contrôles de provenance dans les registres et canaux de distribution de skills.


Description du risque

Les registres de skills manquent des contrôles de provenance courants dans les écosystèmes matures (npm, PyPI, Cargo). Les attaquants exploitent cette absence via :

  • Upload de masse coordonné (registry flooding)
  • Dependency confusion (empoisonnement de dépendances imbriquées)
  • Account takeover (compromission de comptes d’auteurs de confiance)
  • Config-file hijacking (fichiers de configuration qui deviennent des vecteurs d’exécution)

La spécificité des skills : un skill compromis hérite du contexte d’exécution complet de l’agent runtime, y compris toutes ses credentials ; un package classique s’exécuterait dans un sandbox.


Quelques incidents récents

Incident Date Impact
ClawHub flooding Jan 2026 Aucun scanning automatisé. Publishers pouvaient uploader un nombre illimité de packages
Claude Code CVE-2025-59536 / CVE-2026-21852 Fév 2026 Les fichiers de config de repo (.claude/settings.json, hooks) deviennent des chemins d’exécution. Un git clone suivi de l’ouverture déclenche du RCE + exfiltration de clés API
Dependency confusion Fév 2026 Le package.json d’un skill tire une dépendance typosquattée (ex: yutube-dl-core) qui contient le vrai payload. Le skill de surface semble propre
Fake “Summarize YouTube Videos” Fév 2026 Snyk documente un skill qui importe yutube-dl-core au lieu d’un package légitime. La dépendance installe un backdoor

Scénarios d’attaque

1. Registry flooding

Upload coordonné de centaines de skills malveillants pour noyer les alternatives légitimes dans les résultats de recherche. La campagne ClawHavoc a déployé 341 skills en 3 jours sur 12 comptes.

2. Dependency confusion

L’attaquant empoisonne une dépendance imbriquée, pas le skill de premier niveau. Les scans de surface passent, car le SKILL.md est propre. Le payload se trouve dans un requirements.txt ou package.json embarqué.

3. Config-file hijacking

Des instructions d’exécution sont embarquées dans les fichiers de configuration du repository (hooks, settings MCP, overrides d’environnement). L’exécution se déclenche à l’ouverture du projet, avant toute interaction utilisateur.

4. Maintainer account takeover

Compromission du compte d’un auteur de skill de confiance. L’attaquant pousse une version backdoorée. Les utilisateurs qui font confiance à l’auteur mettent à jour sans vérifier.


Mitigations

  1. Implémenter un tracking de provenance : lier chaque skill publié à une identité de signature de code vérifiée.
  2. Exiger des transparency logs pour toutes les opérations de registre (publish, update, delete), sur le modèle de Certificate Transparency.
  3. Pinner toutes les dépendances imbriquées par hashes immutables (sha256:), pas par ranges de versions.
  4. Traiter les fichiers de configuration du repository (hooks, .claude/settings.json, ANTHROPIC_BASE_URL) comme du code exécutable, pas comme de la simple configuration.
  5. Scanner les arbres de dépendances récursifs, pas seulement les fichiers de skill de premier niveau.
  6. Supporter un miroir/allowlist interne de skills pour les déploiements d’entreprise.

Mapping OWASP

  • LLM03 (Supply Chain)
  • ASVS V14.2 (Dependency)
  • CWE-494 (Download of Code Without Integrity Check)

Risques liés


Quelques références pour aller plus loin


À retenir 📌

Les registres de skills n'ont pas encore la maturité des écosystèmes npm ou PyPI. Aucun contrôle de provenance n'existait sur ClawHub lors de ClawHavoc.

Les attaques par dependency confusion ciblent les dépendances imbriquées, pas le skill de surface. Le scan de premier niveau ne suffit pas.

Le hash pinning et les transparency logs sont les deux contrôles prioritaires à mettre en place.

AST02