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.

En février 2026, Snyk a documenté un skill malveillant nommé “Google Calendar Integration” sur ClawHub. Le nom, la description et le README étaient rédigés de façon professionnelle. Aucun lien avec Google. Pas de validation de marque à la publication. Le skill passait l’inspection visuelle sans difficulté ; il a fallu une analyse comportementale pour le démasquer.

AST04 couvre ce risque : les champs de métadonnées des skills (nom, description, auteur, permissions, requires, risk_tier) sont des chaînes contrôlées par l’attaquant, sans validation, signature ni ancrage de confiance.


Description du risque

On constate que les métadonnées sont le signal principal sur lequel les utilisateurs basent leur décision d’installation. Contrairement au code, qui peut être analysé statiquement, la manipulation de métadonnées cible le jugement humain ; et de plus en plus, les décisions de confiance automatisées prises par l’agent installateur lui-même.

Les métadonnées sont la vitrine du skill. Si la vitrine ment, tout le modèle de confiance s’effondre.

La spécificité par rapport aux packages traditionnels : dans npm ou PyPI, le nom du package n’est qu’un identifiant. Dans l’écosystème des skills, le nom, la description et le risk_tier sont les seuls signaux de confiance avant installation. L’utilisateur ne voit pas le code ; l’agent non plus.

Les vecteurs : usurpation de marque, sous-déclaration de permissions, falsification de risk tier, empoisonnement des résultats de recherche de registre, injection stéganographique dans le Markdown.


Exemples d’incidents

Incident Date Impact
ClawHavoc : faux skills de marque Jan 2026 Skills nommés “Google Calendar Integration”, “Solana Wallet Tracker”, “Polymarket Trader” sur ClawHub. Aucun affilié aux marques. 341 skills malveillants déployés sur 3 semaines, 9 000+ installations compromises
Typosquatting Polymarket Jan-Fév 2026 polymarket-traiding-bot (faute délibérée sur “trading”) publié pour capturer les recherches utilisateurs. Variantes clawhub1, cllawhub pour usurper le registre lui-même
Faux skill Google documenté par Snyk 10 Fév 2026 Snyk démontre qu’un skill malveillant “Google” passe l’inspection visuelle grâce à un nom/description/README professionnels. Aucune vérification trademark côté ClawHub
ASCII smuggling Fév 2026 Le repo toxicskills-goof de Snyk documente des instructions malveillantes cachées via caractères de contrôle ASCII, Unicode zero-width et encodage base64 dans SKILL.md, invisibles aux reviewers humains

Scénarios d’attaque

On distingue ici quatre vecteurs d’exploitation des métadonnées, du plus visible au plus sournois.

1. Usurpation de marque

Publier google-workspace-integration avant que Google ne le fasse et capturer le trafic des recherches utilisateurs. Aucune protection de marque n’est appliquée au niveau du registre. L’attaquant soigne le README, ajoute un logo convaincant et une description reprenant le vocabulaire officiel Google Workspace.

Le premier arrivé sur un nom de marque gagne. Il n’y a pas de mécanisme de réclamation.

2. Sous-déclaration de permissions

Déclarer network: false dans les métadonnées alors que le script sous-jacent appelle curl vers un endpoint externe. L’utilisateur fait confiance au manifeste ; il n’inspecte pas le code. Les systèmes d’automatisation qui filtrent par permissions déclarées laissent passer le skill sans alerte.

3. Risk tier spoofing

Se déclarer risk_tier: L0 (safe) tout en embarquant des opérations destructives. L’automatisation de gouvernance basée sur le risk tier ne détecte rien : le champ est déclaratif, jamais vérifié contre le comportement réel du skill.

Un skill qui se déclare safe est un skill qui n’a pas été audité. Le risk tier est une promesse, pas une preuve.

4. Injection stéganographique

Cacher des instructions malveillantes via Unicode zero-width, base64, ou ASCII smuggling dans le Markdown. Les instructions sont visibles au compilateur de prompts de l’agent, mais invisibles à l’oeil humain lors d’une review. Snyk a démontré dans toxicskills-goof que ces payloads survivent aux reviews de code classiques.


Mitigations

  1. Analyse statique des métadonnées à la publication. Signaler les patterns suspects : noms de marques connues, caractères Unicode non-standard, encodage base64 dans le Markdown.
  2. Validation runtime en sandbox. Comparer les permissions déclarées contre le comportement réel du skill dans un environnement de test pré-publication.
  3. Protection de marque au niveau du registre. Implémenter un mécanisme de réclamation trademark et de vérification d’affiliation pour les noms de skills reprenant des marques connues.
  4. Scanning anti-stéganographie. Scanner le contenu SKILL.md pour l’ASCII smuggling, les payloads base64 et les caractères zero-width avant publication.
  5. Cross-référencement risk_tier / permissions. Vérifier automatiquement que le risk_tier déclaré est cohérent avec le scope réel du manifeste de permissions.
  6. Provenance des métadonnées. Exposer dans l’UI du registre qui a déclaré les métadonnées, quand, et depuis quelle clé de signature.

Mapping OWASP

  • LLM04 (Data/Model Poisoning)
  • CWE-345 (Insufficient Verification of Data Authenticity)
  • ASVS V14.5 (HTTP Security)

Risques liés


Quelques références pour aller plus loin


À retenir 📌

Les métadonnées sont entièrement contrôlées par l'attaquant. Aucune validation n'existait sur ClawHub lors de ClawHavoc ; 9 000+ installations compromises avant détection.

L'injection stéganographique (ASCII smuggling, base64, Unicode zero-width) rend les instructions malveillantes invisibles à l'oeil humain mais lisibles par le compilateur de prompts de l'agent.

Le risk_tier est déclaratif, jamais vérifié. La cross-validation automatisée risk_tier vs permissions réelles est le contrôle le plus rentable à mettre en place.

Le framework MAESTRO positionne AST04 sur trois couches : écosystème (L7), frameworks (L3) et conformité (L6).

AST04