Accueil / Blog / Stéganographie Claude
ENGINEERING BLOG · 2026.07.03

Claude Code stéganographie :
l'empreinte Unicode secrète d'Anthropic

Si vous utilisez Claude Code ou routez l'API Anthropic via un proxy, la question « Claude me trace-t-il en secret ? » est légitime. Conclusion d'entrée : fin juin 2026, selon des rapports de reverse engineering, Claude Code réécrivait la ligne Today's date is... de son prompt système lorsque ANTHROPIC_BASE_URL pointait hors de api.anthropic.com — en substituant des apostrophes Unicode visuellement identiques et des séparateurs de date pour encoder fuseau horaire et signaux liés à la Chine. Anthropic a retiré le code en 2.1.197. L'objectif était probablement l'anti-distillation ; le problème, la méthode : invisible, obfusquée, non divulguée. Cela reste distinct de l'injection navigateur de Claude Desktop en avril.

01

Cette polémique repose sur deux histoires indépendantes. Les fusionner affaiblit la crédibilité auprès des lecteurs HN, Reddit et de la communauté sécurité — et nuit à l'E-E-A-T.

Incident A (injection navigateur silencieuse) vs Incident B (stéganographie dans le prompt système)
Dimension Incident A : injection navigateur silencieuse Incident B : stéganographie prompt système
Produit concerné Claude Desktop (client macOS) Claude Code (outil CLI de codage)
Source de divulgation Alexander Hanff (consultant vie privée, contributeur The Register) Reverse engineering binaire, publié sur thereallo.dev, amplifié Reddit → HN
Chronologie Avril 2026 (vers le 18/04) 30 juin 2026
Comportement central Écriture silencieuse du manifeste Native Messaging com.anthropic.claude_browser_extension.json dans Chrome/Edge/Brave/Arc, pré-autorisant 3 ID d'extension à appeler chrome-native-host hors sandbox ; crée les répertoires même sans navigateur installé ; le fichier revient après suppression Quand ANTHROPIC_BASE_URL ≠ api.anthropic.com, réécriture de Today's date is... par stéganographie
Étiquettes appliquées « spyware » / « backdoor » « prompt steganography » / « covert channel »
Condition de déclenchement Installation ou lancement de Claude Desktop Base URL non officielle uniquement ; pas à chaque conversation
Réponse Anthropic Pas de réponse publique formelle ; interrupteur de consentement ajouté ensuite ; modèle de permissions sous-jacent non entièrement retiré Code reconnu ; retiré en 2.1.197 (01/07) ; changelog silencieux
  • Validation de l'incident A : le consultant indépendant Noah Kenney (Digital 520) a confirmé la reproductibilité des affirmations de Hanff ; Antiy Labs a publié une analyse de risque dédiée.
  • Couverture de versions pour l'incident B : les reverse engineers ont confirmé 2.1.193, 2.1.195 et 2.1.196 ; le fil HN a atteint la page d'accueil en quelques heures avec 350+ points et 100+ commentaires.
  • Crise de confiance développeur : lorsque des agents IA desktop et des outils CLI obtiennent des privilèges système, un comportement non divulgué et délibérément dissimulé franchit une ligne rouge, quel que soit l'intention.
  • Contexte modèles : Anthropic reste présent sur les plateformes de routage — voir notre analyse OpenRouter de juin — mais « bonne API » et « outil de confiance » sont désormais deux dimensions distinctes.

Nous employons « selon les rapports », « selon le reverse engineering » et « présumé (alleged) » dans tout l'article. L'objectif anti-distillation d'Anthropic et sa méthode doivent être évalués séparément.

02

Précondition essentielle : le mécanisme ne se déclenche que lorsque ANTHROPIC_BASE_URL pointe ailleurs que api.anthropic.com (proxy, passerelle, revendeur, couche compatible OpenAI). Les utilisateurs de l'endpoint officiel ne sont pas touchés. Les utilisateurs web Claude standard ne relèvent pas de l'incident B.

Une fois déclenché, le programme effectue deux modifications, toutes dissimulées dans la ligne anodine Today's date is ... :

  1. Séparateur de date : si le fuseau système est Asia/Shanghai ou Asia/Urumqi, 2026-06-30 devient 2026/06/30.
  2. Substitution d'apostrophe : l'apostrophe de Today's est remplacée par un caractère Unicode visuellement identique, encodant ce qui a été détecté.
Mapping de l'empreinte Unicode dans le prompt système Claude Code (selon thereallo.dev)
Condition détectée Format de date Caractère apostrophe Unicode
Par défaut (hors liste domaines, hors labo IA) 2026-06-30 ' apostrophe ASCII standard U+0027
Domaine d'organisme/revendeur Chine 2026-06-30 ' guillemet simple droit U+2019
Mot-clé labo IA (deepseek, moonshot, zhipu, minimax, baichuan, stepfun, 01ai…) 2026-06-30 ʼ apostrophe de lettre modificatrice U+02BC
Domaine et labo simultanément 2026-06-30 ʹ prime de lettre modificatrice U+02B9
+ fuseau Chine (Asia/Shanghai / Asia/Urumqi) 2026/06/30 (règles apostrophe ci-dessus)

En termes concrets : la requête paraît ordinaire, mais le backend n'a qu'à scanner le séparateur de date et le code point Unicode de l'apostrophe pour classifier l'utilisateur — « VPN étranger, fuseau Chine, possible labo IA chinois ». Les listes de domaines et mots-clés sont légèrement obfusquées en base64 + XOR(91), environ 147 règles. C'est un canal dissimulé (covert channel) et de la stéganographie textuelle (prompt steganography) typique.

check-apostrophe.sh
# Vérifier les code points Unicode de l'apostrophe dans Today's
echo "Today's date is 2026-06-30" | xxd | grep -A1 "Today"

# U+0027 = séquence d'octets autre que e2 80 99 = empreinte possible
python3 -c "s=\"Today\u2019s\"; print([hex(ord(c)) for c in s if c in \"'\u2019\u02bc\u02b9\"])"

03

Le consensus communautaire, mesuré, pointe vers l'anti-distillation et l'anti-revente non autorisée. Anthropic, OpenAI et Google s'inquiètent publiquement que des concurrents exploitent massivement les sorties API pour entraîner des modèles plus petits. Proxies, revendeurs et laboratoires liés à la Chine étaient des cibles prioritaires.

L'intention se comprend ; la méthode pose problème. Transformer un signal de classification en ponctuation invisible, l'obfusquer dans le binaire et l'injecter à chaque requête — dans un outil développeur fondé sur la confiance — franchit une ligne rouge. Hacker News s'est scindé :

  • « Défense anti-distillation raisonnable » : la revente et la distillation API sont des menaces réelles ; les éditeurs protègent leurs modèles.
  • « Quasi-malveillant pour un outil dev » : dissimulé, obfusqué, non divulgué — l'utilisateur ne devrait pas devoir reverse-engineer un binaire pour le découvrir.

« Spyware » est une étiquette chargée. Formulation plus précise :

  • Incident A : plus proche d'une altération non autorisée de logiciels tiers + surface d'attaque dormante pré-positionnée. Même non exploitée, elle installe un canal haut-privilège hors sandbox navigateur. Chiffres Anthropic pour Claude for Chrome : succès d'injection de prompt 23,6 % sans atténuation, 11,2 % avec atténuation.
  • Incident B : plus proche d'une télémétrie non divulguée / classification utilisateur dissimulée — pas un cheval de Troie classique, mais un canal dissimulé non annoncé.

Quel que soit le terme employé, le problème central est identique : absence de consentement éclairé, dissimulation délibérée.

04

  1. Vérifier ANTHROPIC_BASE_URL : exécuter echo $ANTHROPIC_BASE_URL dans le shell ou le .env. Si vide ou pointant vers api.anthropic.com, la logique de l'incident B ne se déclenche pas ; les utilisateurs de proxy doivent investiguer.
  2. Mettre à jour Claude Code vers 2.1.197+ : Anthropic a publié cette version le 1er juillet 2026 avec retrait de la stéganographie (changelog silencieux — vérifier le binaire réel).
  3. Inspecter les manifestes Native Messaging macOS (incident A) : chercher ~/Library/Application Support/<navigateur>/NativeMessagingHosts/com.anthropic.claude_browser_extension.json pour Chrome, Edge, Brave, Arc, Vivaldi, Opera, Chromium.
  4. Supprimer et surveiller la régénération : supprimer le JSON, redémarrer Claude Desktop, observer s'il revient. Les versions ultérieures ont ajouté un interrupteur de consentement ; le modèle sous-jacent persiste selon les rapports.
  5. Vérifier fuseau horaire et empreintes résiduelles : confirmer si Asia/Shanghai / Asia/Urumqi modifie les séparateurs de date ; sur d'anciennes versions, utiliser un outil hexadécimal sur l'apostrophe du prompt système.
  6. Évaluation moindre privilège en entreprise : traiter Claude Desktop / Claude Code comme des programmes haut-privilège — autorisation explicite, isolation réseau, journaux auditables ; évaluer leur place en production.
  7. Suivre les mises à jour officielles et communautaires : s'abonner aux changelogs Anthropic ; exiger des revendeurs API la divulgation du routage Base URL et des déclarations de conformité.

05

Données citables (reverse engineering public et discussions communautaires — revérifier avant publication) :

  • Taille des règles : obfuscation base64 + XOR(91), environ 147 règles domaine/mot-clé
  • Versions affectées : 2.1.193 / 2.1.195 / 2.1.196 confirmées ; retiré en 2.1.197
  • Traction HN : page d'accueil en quelques heures, 350+ points, 100+ commentaires, communauté divisée
  • Injection de prompt Claude for Chrome : 23,6 % sans atténuation, 11,2 % avec atténuation (données Anthropic, liées à la surface d'attaque de l'incident A)
  • Pré-autorisation Native Messaging : 3 ID d'extension peuvent appeler chrome-native-host hors sandbox ; répertoires créés même sans navigateur installé
Claude Code est-il un spyware ?

Pas au sens classique, mais il intégrait une empreinte non divulguée et obfusquée dans les prompts système pour marquer les utilisateurs Chine via proxy. Anthropic l'a retirée en 2.1.197. La qualification la plus juste est « canal dissimulé non divulgué », pas un malware de vol de données.

Claude Code détecte-t-il mon fuseau horaire ?

Selon les rapports de reverse engineering, il vérifiait Asia/Shanghai / Asia/Urumqi — mais uniquement avec un ANTHROPIC_BASE_URL non par défaut. Les utilisateurs de l'endpoint officiel n'étaient pas touchés.

Qu'est-ce que l'astuce Unicode de l'apostrophe dans Today's date ?

L'apostrophe de Today's alternait entre U+0027, U+2019, U+02BC et U+02B9 pour encoder la correspondance avec des domaines Chine, des mots-clés de labos IA, les deux ou aucun.

Pourquoi Anthropic a-t-il ajouté cela ?

Interprétation dominante : détecter la distillation de modèles et la revente API non autorisée — objectif légitime, implémentation non divulguée et dissimulée, d'où la crise de confiance.

Est-ce la même affaire que le « spyware » Claude Desktop ?

Non. C'était un incident indépendant d'avril 2026 sur l'écriture silencieuse de manifestes Native Messaging par Claude Desktop, divulgué par Alexander Hanff à The Register.

Les utilisateurs web Claude standard sont-ils affectés ?

L'incident B ne concerne que Claude Code avec un ANTHROPIC_BASE_URL non officiel. Les utilisateurs de l'endpoint officiel ne sont pas impactés.

Comment supprimer les fichiers d'injection navigateur de Claude Desktop ?

Supprimer com.anthropic.claude_browser_extension.json sous ~/Library/Application Support/<navigateur>/NativeMessagingHosts/. Claude Desktop peut le recréer au redémarrage.

Faut-il encore faire confiance à Anthropic ?

La confiance repose sur des comportements reproductibles, auditables et désactivables — pas sur des secrets découverts par reverse engineering binaire. Les éditeurs peuvent combattre la distillation ouvertement, avec documentation et interrupteurs.

La leçon véritable ne tient pas à « une apostrophe », mais au décalage : lorsque les capacités des modèles s'envolent tandis que sécurité, consentement et auditabilité traînent, les éditeurs franchissent les limites de confiance au nom de l'expérience ou de la lutte anti-abus. Réponses pragmatiques :

  • Méfiance par défaut, preuves exigées : reproductible, auditable, désactivable — voilà le barème.
  • Divulgation plutôt que dissimulation : l'anti-distillation peut être transparent — documentation et interrupteurs, pas ponctuation cachée.
  • Moindre privilège + isolation : traiter tout agent desktop comme un programme haut-privilège.
  • Vote économique et cadre réglementaire : RGPD, loi sur la protection des données et choix de marché restent le frein ultime à la « technologie sans limites ».

La technologie peut être neutre ; une entreprise ne l'est pas. Plus le modèle est puissant, plus l'éditeur doit s'auto-contraindre — et cela ne devrait pas être un secret découvert par reverse engineering binaire.

Reverse engineering original et reportages de référence (revérifier les liens) :

thereallo.dev : Claude Code Prompt Steganography (reverse engineering original)

The Register : Claude Desktop changes software permissions without consent

Analyses tierces et recherche sécurité :

Malwarebytes : couverture Native Messaging Claude Desktop

Antiy Labs : analyse des risques du canal navigateur haut-privilège Claude Desktop

Hacker News : fil de discussion stéganographie Claude Code

Lorsqu'un agent de codage IA doit tourner 7×24 dans un environnement de production auditable et isolé, la surcharge hyperviseur des VM partagées et les injections système incontrôlables créent un double risque de conformité et de stabilité. Pour les équipes exigeant une puissance native sans perte, un CI/CD iOS stable et une automatisation Agent IA 7×24, les nœuds cloud Mac mini bare metal ZUKCLOUD constituent généralement la meilleure option : Apple Silicon dédié, zéro taxe hyperviseur, disponibilité permanente, facturation flexible jour/semaine/mois. Notre manifeste d'architecture bare metal argumente depuis l'UMA zero-copy et l'orchestration MDM : exécuter les agents dans des frontières physiques que vous maîtrisez entièrement est l'une des réponses d'ingénierie les plus pragmatiques aux dérives des outils desktop opaques.