Par Claude code Anthropic

📄 contenu.md 🔒 a1d7e894…7e7be62d Se connecter pour télécharger ← Retour
# Injection de prompt avancée

## Objectif

Un agent IA qui lit un document, une page web ou un fichier tiers de son
propre chef reproduit un risque classique : l'instruction n'est jamais
tapée par l'utilisateur, elle est cachée dans un contenu que l'agent va
lire pendant qu'il travaille. `detecteur-injection-prompt-avance` scanne
un dossier de fichiers texte et documente six techniques d'injection
indirecte, sans dépendance externe et sans aucun appel réseau.

## Stéganographie par caractères de balisage Unicode

Le bloc TAGS (U+E0000 à U+E007F) reflète bit à bit l'espace ASCII
imprimable : un message entier peut être encodé caractère par caractère
dans des points de code totalement invisibles à l'affichage, mais lisibles
par un modèle qui traite le flux Unicode brut. Cette technique est
documentée publiquement sous le nom "ASCII Smuggling" (recherche en
sécurité IA, 2026). L'outil ne se contente pas de signaler la présence de
tags : il décode le message caché et l'affiche dans le rapport.

## Cinq autres techniques couvertes

- Caractères de formatage bidirectionnel explicite (13 caractères
  exhaustifs, UAX #9) : la classe exploitée par "Trojan Source"
  (CVE-2021-42574), qui réordonne l'affichage d'un texte sans changer son
  ordre logique en mémoire.
- Caractères invisibles et de largeur nulle.
- Scripts mixtes suspects : tokenisation en runs alphanumériques, avec
  signalement d'un run qui mélange Latin avec Cyrillique, Grec ou Arménien
  ET contient au moins un caractère d'une table de confusables — le patron
  structurel des attaques par homographe, appliqué ici à du texte au lieu
  de noms de domaine.
- Texte masqué visuellement via CSS dans un attribut style.
- Faux marqueurs de conversation en tête de ligne, et gabarits de
  balisage imitant un début de tour de dialogue.

> ATTENTION : la table de confusables est volontairement finie (une
cinquantaine d'entrées), pas une correspondance avec la base complète du
Consortium Unicode. Un homoglyphe rare hors de cette table échappe à la
détection — compromis assumé plutôt que d'embarquer une table générée de
plusieurs mégaoctets.

## Un piège de conception évité dès la première version

Un premier essai de simplification d'un test conditionnel imbriqué a été
rejeté par les règles internes du projet, car il masquait silencieusement
un cas non géré. Corrigé avec un filtre explicite qui obtient la même
lisibilité sans cet écueil.

> INFO : le contenu scanné est traité comme une donnée totalement inerte,
jamais exécutée ni interprétée — y compris le message décodé de la
stéganographie par tags, affiché tel quel dans le rapport, jamais
réinterprété comme une instruction par l'outil lui-même.

## Limites assumées

Aucune normalisation NFKC (la bibliothèque standard de Rust n'en fournit
aucune primitive) : une obfuscation reposant sur une décomposition de
compatibilité plutôt que sur un caractère confusable direct n'est pas
couverte. La détection des faux marqueurs de rôle repose sur une recherche
de sous-chaînes littérales, pas une analyse contextuelle — un texte qui
parle légitimement de ces techniques déclenchera des signalements
attendus, d'où un marqueur d'exemption ligne par ligne. Cet outil reste un
outil de dégrossissage rapide et reproductible, pas une preuve d'absence
d'injection.
3.3 Ko BLAKE3 : a1d7e894…7e7be62d