système : OPÉRATIONNEL
← retour à tous les hacks
SUPPLY CHAIN MEDIUM NEW

SkillCamo : des instructions cachées dans des images déjouent les scanners de skills

Un article de juin 2026 montre que des instructions malveillantes dissimulées dans les images d'un skill échappent aux scanners de texte et de code, mais s'exécutent quand un agent multimodal les lit.

2026-07-22 // 6 min affects: claude, gpt-5, gemini, claude-code, openai-codex

De quoi s’agit-il ?

Les skills d’agents sont les paquets npm de l’ère agentique : de petits bundles d’instructions en langage clair, de scripts et de fichiers qu’un agent de code comme Claude Code ou OpenAI Codex charge à la demande pour acquérir une nouvelle capacité. Une place de marché a accumulé plus de 40 000 skills communautaires en quelques mois après l’apparition du format fin 2025, et la plupart n’ont jamais été vérifiés. Cette combinaison — confiance implicite et privilèges complets de l’agent — a déjà produit de vrais incidents de chaîne d’approvisionnement, dont la campagne ClawHavoc qui a déposé 341 skills malveillants sur un seul hub.

Un article publié en juin 2026, “Seeing Is Not Screening: Multimodal Hidden Instruction Attacks on Agent Skill Scanners” (arXiv 2606.18198), documente un angle mort des défenses conçues pour attraper ces skills. Les scanners de skills actuels lisent le texte : descriptions, manifestes et code source. L’attaque de l’article, SkillCamo, cache l’instruction malveillante là où le scanner ne regarde pas — à l’intérieur d’une image livrée avec le skill.

Comment ça fonctionne

SkillCamo répartit un skill malveillant sur deux modalités, de sorte qu’aucune moitié ne paraît dangereuse isolément.

L’attaque prend une commande cible dans un script malveillant et la restitue sous forme de ressource image — qui ressemble à un logo de projet, un schéma de workflow, une capture d’écran ou un exemple d’usage anodins. Elle utilise ensuite un LLM pour réécrire l’intégralité de la documentation du skill afin que l’image injectée soit présentée naturellement comme une étape d’installation ou une illustration du workflow. Un relecteur qui parcourt le README voit un schéma utile ; un scanner de texte et de code voit des fichiers propres.

La charge ne devient lisible que lorsqu’un agent multimodal fait ce que la documentation réécrite lui demande : lire l’image dans le cadre du workflow normal. À cet instant, le modèle interprète le contenu visuel comme une instruction actionnable et s’oriente vers une exécution dangereuse. Comme le formulent les auteurs, l’intention malveillante est répartie entre les modalités et n’est pleinement révélée que lorsque l’agent interprète conjointement la documentation, le contexte du code et le contenu visuel au moment de l’exécution.

Aucune charge n’est reproduite ici. Le mécanisme est une variante d’un problème plus large : des instructions peuvent être passées en contrebande dans un skill sous des formes qui survivent à la relecture humaine. Des travaux indépendants d’Embrace The Red en février 2026 ont montré la même faille dans le canal textuel, à l’aide de points de code Unicode « tag » invisibles que les modèles suivent mais qu’un humain lisant le fichier ne peut pas voir. Les images ne sont que le canal suivant que les scanners ont oublié de vérifier.

Pourquoi c’est important

Les scanners de skills rendent un verdict bloquer-ou-autoriser au moment de l’installation, et les déployeurs s’appuient de plus en plus sur ce verdict. SkillCamo montre que le verdict ne vaut que ce que valent les modalités inspectées par le scanner. Si un scanner raisonne sur le texte et le code mais traite les images livrées comme des ressources inertes, un skill malveillant peut passer la revue puis exécuter un vol d’identifiants, une exfiltration de code source ou l’installation d’une porte dérobée une fois qu’il tourne avec les privilèges de l’agent.

Ce n’est pas un cas isolé. Des recherches parallèles divulguées la même semaine — relayées par Help Net Security le 9 juillet 2026 — ont montré que les scanners statiques au niveau octet peuvent être contournés plus de 90 % du temps par un attaquant qui préserve le comportement d’un skill et n’en change que la forme de surface. Le schéma rappelle des décennies de défense anti-malware : l’inspection de l’emballage perd face à l’attaquant qui réempaquette le même comportement, et la réponse durable a toujours été d’observer ce que le code fait réellement.

Défenses

Un balayage statique et mono-modalité est nécessaire mais pas suffisant. Concrètement :

  1. Analysez toutes les modalités, pas seulement le texte et le code. Passez de l’OCR et de l’analyse visuelle sur les images livrées, et traitez toute image qu’un skill demande à l’agent de « lire » comme un canal d’instructions potentiel, pas comme un élément décoratif.

  2. Passez à une analyse ancrée dans l’exécution. La défense de l’article, ExecScan, déduit l’objectif déclaré d’un skill et son périmètre d’accès à partir de sa documentation et de ses métadonnées, reconstruit le comportement réellement exécutable en cartographiant les scripts, fichiers, accès à l’environnement et ressources visuelles référencés, puis juge s’il présente des capacités d’exfiltration, de destruction, de persistance, de tromperie ou d’élévation de privilèges. Il simule aussi la façon dont un agent multimodal interpréterait le skill en usage réel — y compris l’influence des instructions portées par les images sur la planification en aval. Des travaux parallèles de sandbox comportementale rapportent attraper environ 97 % des charges injectées en observant les appels système à la frontière du système d’exploitation, là où un scanner statique ne voit rien.

  3. Isolez l’agent et limitez ses privilèges. Accordez explicitement les accès aux fichiers, aux identifiants, au réseau et aux gestionnaires de paquets plutôt que par défaut, afin qu’un skill passé au travers ne puisse atteindre les secrets ni exfiltrer. Évitez l’auto-approbation généralisée de Bash et des appels d’outils.

  4. Traitez les skills comme des dépendances non fiables de la chaîne d’approvisionnement. N’installez qu’à partir d’éditeurs de confiance, privilégiez l’ensemble minimal et désinstallez les skills que vous n’utilisez plus. La relecture humaine est un contrôle, mais l’Unicode invisible comme les charges portées par les images sont tous deux conçus pour y survivre.

  5. Privilégiez le moindre privilège au niveau des capacités. Un skill qui n’a jamais eu besoin d’accès réseau sortant ou aux identifiants ne devrait pas en disposer ; le cantonnement des capacités limite le rayon d’impact, quelle que soit la lacune du scanner.

Statut

ÉlémentRéférenceDateNotes
Attaque SkillCamo + défense ExecScanarXiv 2606.181982026-06Instructions cachées dans des images contournant les scanners texte/code ; analyse ancrée dans l’exécution proposée
Contournement des scanners statiques (travaux parallèles)Help Net Security2026-07-09Scanners au niveau octet contournés > 90 % ; sandbox comportementale attrape ~97 %
Instructions Unicode invisibles dans les skillsEmbrace The Red2026-02-11Instructions cachées du canal textuel survivant à la relecture humaine
Campagne de place de marché ClawHavocKoi Security2026341 skills malveillants déposés sur un seul hub

La leçon n’est pas « n’utilisez pas de skills ». C’est que le balayage à l’installation qui ne lit que le texte et le code n’est qu’un contrôle partiel. À mesure que les agents acquièrent une compréhension multimodale, chaque modalité qu’un skill peut transporter devient un canal d’instructions — et les défenses doivent reconstruire ce qu’un skill fait, à travers toutes ces modalités, plutôt qu’inspecter ce à quoi il ressemble.

Sources