Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
claude-awm — Contourne les filigranes de texte des LLM en injectant des sélecteurs de variantes Unicode ; inclut le générateur SynthID, le détecteur mean-g, les défenses par normalisation et des expériences sur l'entropie. | Kitploit
Outils/GitHubGitHub/aloshdenny/claude-awm
StéganographieProtection de la Vie PrivéeApprentissage AutomatiqueSécurité de l'IAAttaque Adversariale
GitHubaloshdenny/claude-awm

claude-awm

Contourne les filigranes de texte des LLM en injectant des sélecteurs de variantes Unicode ; inclut le générateur SynthID, le détecteur mean-g, les défenses par normalisation et des expériences sur l'entropie.

Voir le dépôt
89980il y a 1 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

claude-awm : peut-on effacer un filigrane textuel SynthID en modifiant le texte ?

le rêve, soi-disant

Oui, mais une seule famille d'attaques fonctionne, et ce n'est pas celle que tout le monde suppose.

Les sélecteurs de variation Unicode (catégorie Mn, U+FE00 à U+FE0F et U+E0100 à U+E01EF) font passer le détecteur sous le seuil et l'y maintiennent. Toutes les autres attaques par caractères invisibles que j'ai essayées sont entièrement annulées par une seule ligne de normalisation d'entrée. Les sélecteurs de variation, non, car ce sont des points de code porteurs de sens (présentation des emoji, variantes CJK) que NFKC ne repliera pas et ne doit pas replier.

Répliqué sur plusieurs modèles et domaines :

modèledomainez de référenceaprès vs16_30taux de modification
gpt-oss-20bprose45,030,7257 %
gpt-oss-20bcode37,240,6858 %
Qwen3.8-27Bprose35,50-0,6757 %

Le seuil est z = 2,33. Les trois passent en dessous après l'attaque, et y restent après normalisation (0,09, 0,45, -0,78 respectivement). Le texte s'affiche de manière identique pour un lecteur humain.

La seconde véritable découverte ne nécessite aucune attaque : un texte à faible entropie n'est quasiment pas filigrané au départ. Avec la réflexion désactivée, la sortie purement code de Qwen3.8-27B obtient z = 4,31 sans attaque, proche du seuil de 2,33 sans qu'on lui ait rien fait. Réactivez la réflexion et le même modèle, même domaine, même longueur atteint z = 25,53, car le préambule de raisonnement est de la prose ordinaire et porte normalement la marque.

modèles testés

Tout dans ce dépôt a été mesuré sur ceux-ci, et rien d'autre :

modèleparamètresoùce qui a été exécuté
Qwen3.5-0.8B0,8BMac (MPS)échelle d'attaques complète, 1k-8k
Qwen3.5-4B4BMac / 4090échelle d'attaques complète + l'expérience d'entropie + stégo brut/normalisé
DeepSeek-R1-Distill-Qwen-14B14BMac (MLX, 4 bits)filigrane + détection, traces de raisonnement
gpt-oss-20b20B3090 / 4090 / RunPodéchelle d'attaques complète jusqu'à 32k, prose + code, sélecteurs de variation, loi d'échelle du taux d'insertion jusqu'à 131k
Qwen3.8-27B27BRunPod H100 / Modal H100prose + code, sélecteurs de variation, contraste du mode réflexion
gpt-oss-120b120BModal H100 (MXFP4) / RunPod H100prose + code + raisonnement à 2k / 8k / 32k, mise à l'échelle partielle du taux d'insertion jusqu'à 65k
DeepSeek-V4-Flash284B MoERunPod 2x H200 (FP8)prose + code à 2k / 8k

Toutes les expériences n'ont pas été exécutées sur tous les modèles, et les tableaux ci-dessous indiquent ce qui a été exécuté où. Les modèles plus grands ont été ajoutés à mesure que les questions intéressantes se précisaient, de sorte que l'échelle d'attaques est étendue sur les petits et que le travail sur la longueur et les domaines est concentré sur les grands.

de quoi s'agit-il

Anthropic (et Google DeepMind avant eux, l'article SynthID-Text) filigrane le texte généré en biaisant l'échantillonnage des tokens via un tournoi à clé. Le signal réside dans quels tokens ont été choisis, et non dans un quelconque caractère caché. Je voulais savoir à quel point c'est fragile face à une personne motivée munie d'un chercher-remplacer, j'ai donc construit le générateur ainsi qu'un détecteur g-moyen non entraîné et je l'ai soumis à des attaques.

Le seuil du détecteur est z = 2,33 (taux de faux positifs de 1 %). Au-dessus = filigrane détecté. J'ai généré du texte filigrané, l'ai attaqué, re-tokenisé et noté. Chaque tableau de résultats comporte un contrôle roundtrip (texte filigrané non attaqué) afin que vous puissiez voir que le détecteur fonctionne réellement sur cette ligne. À deux reprises au cours de cette étude, un bug a fait s'effondrer tous les z à zéro, et le contrôle est la seule chose qui l'a détecté.

périmètre de l'attaque : ce qui fonctionne réellement

La surface d'attaque se divise nettement selon la catégorie Unicode, ce qui s'est avéré être toute l'histoire.

Fonctionne (catégorie Mn, marques non espaçantes) :

attaquece qu'elle faittaux de modificationsurvit à la normalisation ?
vs16_30sélecteur de variation après ~30 % des caractères57 %oui
vs16sélecteur de variation après ~10 % des caractères23 %oui (z 3,46)
vs_suppsélecteurs du plan supplémentaire (U+E0100+)24 %oui (z 3,40)
homoglyphа cyrillique pour a latin (catégorie Ll)9 %oui, mais effet faible

Ne fonctionne pas (catégorie Cf, caractères de formatage) :

attaquez brutz normaliséverdict
zwsp_30-0.0935.68entièrement annulé
combo0.9235.68entièrement annulé
bidi24.3735.68entièrement annulé
nbsp41.0446.51ne bouge presque pas

Les caractères Cf sont du pur formatage sans contenu sémantique, un normaliseur peut donc les supprimer en bloc sans rien perdre. Les sélecteurs de variation Mn portent un sens réel dans les emojis et le texte CJK, les supprimer systématiquement corromprait des documents légitimes. C'est cette asymétrie qui rend une famille défendable et l'autre non.

La portée pratique : il faut toucher environ 20 % ou plus des caractères pour faire passer une baseline solide sous le seuil, mais les caractères insérés sont invisibles, le texte se lit donc normalement quel que soit le taux d'édition. Il est vérifié visuellement identique, voir src/fidelity_check.py. Quatre familles n'insèrent que des caractères qui ne s'affichent pas ; les homoglyphes sont l'honnête exception (dépendants de la police, pas garantis invisibles).

ce qui ne fonctionne pas : les évidences

Ma crainte initiale était la plus banale : que les tirets cadratins, le remplacement de « and » par « & » et la suppression du markdown fonctionnent tout simplement, et que le watermark se révèle être de la sécurité de théâtre. Beaucoup de gens en ligne supposent exactement cela.

Ça ne fonctionne pas. Toute l'échelle d'éditions de surface sur gpt-oss-20b, jusqu'à 32k tokens :

attaquetaux d'éditionz @ 1kz @ 32k
aller-retour (contrôle)0 %25.7104.3
tiret cadratin vers trait d'union~0 %26.4113.7
suppression de tout le markdown13.6 %27.2103.3
AmE vers BrE + abréviations1.3 %~28~100
suppression de 40 % de chaque mot38 %4.925.4

Sur les trois modèles sur lesquels cette échelle a tourné (0.8B, 4B, 20B = 294 cellules), exactement une cellule a franchi le seuil : la suppression de 39 % de chaque mot à la longueur la plus courte sur le 4B. Ce n'est pas une attaque, c'est du broyage de document.

Total de cellules mesurées sur l'ensemble de l'étude : 440 (294 issues de l'échelle d'attaques ci-dessus, plus 146 issues du balayage de loi d'échelle ci-dessous étendant la prose jusqu'à 131072 tokens).

Deux choses m'ont surpris :

Télécharger l’outil