1 points par GN⁺ 3 시간 전 | 1 commentaires | Partager sur WhatsApp
  • Le binaire Claude Code 2.1.196 contient une fonction qui modifie la phrase de date actuelle du prompt système afin de cacher un signal de classification dans la requête
  • Le déclencheur est ANTHROPIC_BASE_URL ; si ce n’est pas l’URL officielle api.anthropic.com ou si une valeur est définie, il vérifie le nom d’hôte et le fuseau horaire pour modifier l’apostrophe et les séparateurs de date
  • Le nom d’hôte est comparé à une liste de domaines et de mots-clés décodée depuis une chaîne base64 avec la clé XOR 91, qui inclut des éléments comme deepseek, zhipu, moonshot, baidu.com, bytedance.net et proxyai.com
  • Si l’endpoint officiel de l’API Anthropic est utilisé ou si ANTHROPIC_BASE_URL est absent, la fonction retourne plus tôt et le format habituel Today's date is 2026-06-30. est conservé
  • On ne peut pas conclure qu’il s’agit d’une fonctionnalité malveillante, mais lorsqu’un outil de développement ayant accès au système de fichiers et au shell cache des informations de classification au moyen de marqueurs Unicode invisibles, cela ébranle la confiance

Des marqueurs cachés dans la phrase de date

  • Le binaire Claude Code contient une fonction qui modifie la chaîne de date actuelle insérée dans le prompt système
  • La phrase par défaut a la forme suivante
    • Today's date is 2026-06-30.
  • Deux éléments peuvent être modifiés
    • l’apostrophe dans Today's
    • le séparateur de date : remplacement de - par /
  • La phrase obtenue ressemble extérieurement à une simple indication de date, mais la requête brute contient des marqueurs cachés
  • Comme cette méthode dissimule des données dans un texte qui paraît en clair, elle relève de la stéganographie de prompt

Le chemin conditionnel activé par ANTHROPIC_BASE_URL

  • Le déclencheur est ANTHROPIC_BASE_URL, l’override de l’URL de base de l’API dans Claude Code
  • Si ANTHROPIC_BASE_URL est absent, la fonction retourne immédiatement
  • Même si une valeur existe, si l’hôte est api.anthropic.com, elle emprunte le même chemin de sortie
  • Ce n’est que lorsqu’elle ne retourne pas plus tôt que les conditions suivantes sont vérifiées
    • si le fuseau horaire du système est Asia/Shanghai ou Asia/Urumqi
    • si le nom d’hôte de l’URL de base de l’API correspond à la liste de domaines décodée ou à l’un de leurs sous-domaines
    • si le nom d’hôte contient certains mots-clés de laboratoires d’IA

Les informations encodées dans la date et l’apostrophe

  • Si le fuseau horaire est Asia/Shanghai ou Asia/Urumqi, le format de date change
    • 2026-06-302026/06/30
  • Selon le résultat de la classification du nom d’hôte, l’apostrophe de Today's change
    • cas général : '
    • domaine connu : \u2019
    • mot-clé de laboratoire : \u02BC
    • domaine connu contenant aussi un mot-clé de laboratoire : \u02B9
  • Dans la plupart des polices monospace, la différence visuelle entre ces caractères Unicode est très faible, ce qui les rend difficiles à repérer

Liste cachée de domaines et de mots-clés

  • La liste des domaines et des mots-clés est stockée sous forme de chaîne base64 et décodée avec la clé XOR 91
  • La liste décodée de mots-clés de laboratoires est la suivante
    • deepseek
    • moonshot
    • minimax
    • xaminim
    • zhipu
    • bigmodel
    • baichuan
    • stepfun
    • 01ai
    • dashscope
    • volces
  • La liste décodée de domaines est plus volumineuse et inclut des domaines d’entreprises chinoises, de sociétés d’IA, ainsi que de proxys, revendeurs et passerelles
  • Voici quelques exemples d’éléments
    • cn
    • baidu.com
    • alibaba-inc.com
    • alipay.com
    • antgroup-inc.cn
    • bytedance.net
    • kuaishou.com
    • xiaohongshu.com
    • jd.com
    • bilibili.co
    • iflytek.com
    • stepfun-inc.com
    • moonshot.ai
    • anyrouter.top
    • claude-code-hub.app
    • claude-opus.top
    • openclaude.me
    • proxyai.com
    • yunwu.ai
    • zenmux.ai
  • La liste complète est disponible dans cc-domains.js

Emplacement dans le contexte système

  • Le résultat de la fonction de date est inséré comme valeur currentDate lors de la construction du contexte de l’agent
  • Le même contexte peut aussi inclure, selon les conditions, l’e-mail de l’utilisateur et des informations sur le projet associé
  • Le marqueur devient donc une partie du contexte système envoyé au modèle
  • Il reste aussi possible que le backend d’Anthropic analyse cette valeur

Environnement d’installation vérifié

  • Le binaire d’installation de Claude Code vérifié est signé par Anthropic
    • Identifier=com.anthropic.claude-code
    • TeamIdentifier=Q6L2SF6YDW
    • Timestamp=Jun 29, 2026
    • SHA256=6fc6e61ab7582c2bf241225ff90d9f79e91d69380cb9589fc9dedd3a30070f5a
  • Au moment de la vérification, ANTHROPIC_BASE_URL n’était pas défini dans le shell, et le fuseau horaire était Asia/Hong_Kong
  • Dans cet environnement, une apostrophe normale et une chaîne de date YYYY-MM-DD sont générées

Cas d’usage concernés et limites

  • Pour la plupart des utilisateurs, ce chemin restera probablement inactif
  • Si l’endpoint officiel de l’API Anthropic est utilisé ou si ANTHROPIC_BASE_URL est absent, le prompt de date conserve sa forme ordinaire
  • Les cas intéressants sont ceux où Claude Code est routé via une URL de base personnalisée
    • passerelle interne
    • proxy local
    • routeur de modèles
    • revendeur
    • environnement de recherche
  • Dans ce cas, Claude Code classe le nom d’hôte et encode le résultat dans le prompt
  • Les méthodes de contournement sont simples
    • changer le nom d’hôte
    • changer le fuseau horaire
    • patcher le binaire
    • envelopper le processus
  • Un attaquant sérieux peut neutraliser ce signal ; les développeurs ordinaires utilisant des configurations inhabituelles mais légitimes deviennent donc plus facilement sujets au fingerprinting

Une implémentation qui ébranle la confiance

  • Il est possible qu’Anthropic cherche à détecter des revendeurs d’API, des passerelles Claude Code non autorisées ou des pipelines de « distillation attack » de modèles
  • Si ANTHROPIC_BASE_URL personnalisé pointe vers un domaine de revendeur connu ou si le nom d’hôte contient deepseek ou zhipu, cela peut servir de signal de détection
  • Le problème réside dans la manière dont c’est implémenté
    • modification silencieuse du prompt système
    • encodage d’informations de classification de proxy ou de passerelle dans un passage qui ressemble à une phrase anglaise ordinaire
    • dissimulation de la liste de domaines derrière XOR et base64
  • Un agent de codage peut, sur la machine locale, consulter le code, exécuter des commandes, installer des paquets, modifier des fichiers et pousser des commits
  • Pour détecter une passerelle d’API personnalisée, il serait aussi possible d’utiliser des méthodes comme un champ de télémétrie explicite et documenté, une politique publique ou des notes de version
  • Quand un outil ayant accès au système de fichiers et au shell cache des bits de classification dans une ponctuation de prompt invisible, ses autres affirmations en matière de protection de la vie privée deviennent difficiles à croire

1 commentaires

 
GN⁺ 3 시간 전
Avis sur Hacker News
  • Certaines réactions minimisent la gravité du manque de transparence sur ce que fait exactement un outil déployé par un prestataire de service sur la machine d’un client
    Le fait qu’il y ait eu un besoin commercial ne dispense pas d’une communication honnête
    Que leur solution devienne inutile s’ils la divulguent honnêtement n’est pas mon problème ; au contraire, s’ils ont jugé ça acceptable, ça me fait me demander ce qu’ils pourraient encore collecter sur ma machine, comme des informations d’identification personnelle
    Vu cyniquement, j’ai l’impression que l’ambiance des commentaires reflète moins un jugement sur cette affaire que des sentiments à l’égard de l’IA, d’Anthropic, des États-Unis, etc.

    • Au début ce seront les « Chinois », puis les personnes qui utilisent des capacités « cyber », celles qui font du « jailbreak », celles qui « s’opposent à Dario », ou plus largement les cibles qu’ils jugent déplaisantes
    • Que l’on considère ou non le comportement d’Anthropic comme mauvais, Anthropic affirme depuis un bon moment, et très bruyamment, que des labos étrangers distillent ses modèles
      Cela ressemble à un moyen de réponse naturel pour mettre ces faits en évidence
    • En gros, ils ajoutent un watermark aux requêtes selon des variables d’environnement, et changent le format d’une chaîne si l’on se trouve dans certains fuseaux horaires, non ? Qu’est-ce que je rate ? Je ne vois vraiment pas en quoi c’est un incendie majeur
    • Si « les besoins commerciaux du fournisseur exigent ce comportement » est vrai, alors c’est une raison supplémentaire de considérer que cette activité est illégitime
    • Il semble y avoir une position politique, mais aucune compréhension de la manière dont fonctionne un service cloud
  • En mettant de côté les jugements de valeur, je suis un peu surpris que cela ait été implémenté aussi grossièrement
    Il me semble qu’on aurait pu obtenir le même effet tout en réduisant les chances que ce soit détecté par rétro-ingénierie
    Ce domaine est connu sous le nom d’« underhanded code », popularisé par l’Underhanded C Contest : https://www.underhanded-c.org
    C’est un « art » peu connu, pour des raisons évidentes. Il existe des façons beaucoup plus astucieuses d’atteindre ce genre d’objectif
    Une méthode évidente consiste à déplacer davantage de logique du client vers le serveur ; une autre consiste à écrire du code client avec déni plausible, d’une manière qui paraît beaucoup plus inoffensive
    Une partie de ce qui a été ajouté n’est possible que côté client, mais une autre aurait pu être déplacée, et même les parties nécessitant le client auraient pu être rendues plus subtiles et plausibles
    Il est possible qu’ils aient su qu’un bundle JS, très souvent examiné, finirait par être découvert et faire l’objet d’articles, et qu’ils aient donc choisi de ne pas le rendre plus furtif et trompeur ; malgré tout, ça donne une impression de manque de soin

    • Il se peut qu’il existe une méthode de détection plus profonde, et que ceci soit une première ligne de défense peu coûteuse et facile, destinée à attraper beaucoup d’acteurs malveillants moins sophistiqués, et qu’ils ne l’aient donc pas retirée
      Il serait difficile d’empêcher un grand labo d’IA vraiment déterminé de distiller le modèle, mais A) cela peut bloquer beaucoup de revendeurs de tokens bricolés qui cherchent à gagner rapidement de l’argent, et B) quelqu’un dans un de ces grands labos pourrait oublier d’installer la parade et se révéler tout seul
      Je vois ça un peu comme acheter un hibou en plastique parce qu’il y a beaucoup d’oiseaux dans la cour. Même si le hibou fait fuir la plupart des oiseaux mais pas tous, et qu’on achète en plus un dispositif à ultrasons, il n’y a pas de raison d’enlever le hibou
      Car il y a désormais non pas une, mais deux couches de défense
    • Vu que Claude a été vibe codé, cette grossièreté n’a rien de surprenant
      Ce n’est pas que les modèles d’Anthropic soient mauvais, mais Claude semble casser chaque jour un nouveau truc agaçant, donc je migre de plus en plus vers Codex et OpenCode
    • Claude Code est en train de maximiser le travail bâclé, et vous prenez en compte leur « jugement » ? :-)
    • L’approche aurait pu être bien plus intéressante
      Les grands modèles de langage peuvent utiliser les distributions de tokens pour créer du stéganotexte qui se lit comme une prose plausible, mais se décode en payload¹
      ¹ https://github.com/hodgesmr/calgacus-mlx
    • Au début, j’étais d’accord pour dire que c’était une implémentation grossière qui allait forcément être repérée rapidement, mais il existe une autre possibilité
      Anthropic a peut-être implémenté cela non pas comme un système de détection continu contre les revendeurs de proxy, mais comme un système d’échantillonnage ponctuel pour découvrir où et dans quel contexte la revente via proxy a actuellement lieu
      Ils finiront par être découverts un jour, mais d’ici là Anthropic peut obtenir des données instantanées utiles
  • La conclusion de ce billet de blog est un peu excessive
    L’intention de cette stéganographie est très claire : identifier l’usage par des entreprises chinoises susceptibles de pratiquer la distillation de modèle
    On ne voit pas clairement en quoi cela « punit les développeurs ordinaires » sous quelque forme que ce soit

    • Si l’on veut proxifier Claude pour des raisons légitimes, la qualité des réponses peut se dégrader
      Parmi les raisons légitimes : analyser ce que Claude Code envoie à Anthropic pour vérifier qu’il n’y a pas de fuite de données, choisir dynamiquement le modèle selon la difficulté du prompt ou forcer un modèle spécifique, basculer entre plusieurs comptes Anthropic selon le projet, filtrer les identifiants, les informations d’identification personnelle et les secrets d’entreprise, etc.
    • Si un logiciel exécuté sur la machine de l’utilisateur exfiltre secrètement des données par stéganographie façon malware, c’est une question de confiance
    • Pourquoi une entreprise chinoise voulant distiller le produit utiliserait-elle Claude Code ?
    • On a déjà vu des faux positifs, comme lorsque Fable dégradait silencieusement la qualité selon le prompt ou la session
    • Un bon objectif ne justifie pas une exécution malveillante ou imprudente
      La fin ne justifie pas toujours les moyens
      Qu’il y ait eu ou non un préjudice cette fois-ci, c’est une atteinte à la confiance et à l’autonomie
      Même si quelqu’un disait qu’au moins pour l’instant, le code ne sert qu’à détecter et dénoncer l’ennemi public numéro un, il serait tout à fait normal d’être furieux si un rootkit avait été installé en douce
  • Contrairement à Claude Code, Codex CLI est un logiciel libre et open source, donc il est moins susceptible de faire ce genre de choses, et cela donne une raison de plus d’éviter Claude Code et Claude en général
    J’espère que de nombreuses personnes examineront Codex pour repérer ce genre de comportement malveillant

    • Je me le demande vraiment : si je paie mon abonnement et que je respecte les conditions, pourquoi devrais-je m’en soucier ?
      Je suis très sceptique vis-à-vis des politiques de confidentialité et des pratiques commerciales, mais je me demande quel préjudice cela me cause en tant que client
      Si cela aide à retarder le moment où les subventions prennent fin, cela semble même avantageux du point de vue du client
      Cela dit, si ces proxys frauduleux aident des labos chinois à rattraper leur retard, à long terme cela pourrait aussi m’avantager en me permettant d’avoir une IA personnelle de qualité, entièrement sous mon contrôle sur mon propre matériel
      Je ne dis pas que je soutiens ça, mais je reconnais que cette incitation existe
    • Est-ce vraiment « malveillant » ? Ça ressemble à une bonne manière de filtrer les utilisateurs qui enfreignent les conditions, sans gêner les utilisateurs légitimes
      Le fait que le client soit libre et open source signifie seulement qu’une plus grande part de l’analyse est faite côté serveur, cachée
    • À ma connaissance, c’est distribué et signé par GitHub
      Ce ne sont pas des builds déterministes, mais il y a quand même une certaine garantie de provenance indiquant que ça vient bien du dépôt authentique
    • Claude Code n’avait-il pas fuité ? Pourquoi cela n’a-t-il pas été découvert plus tôt ?
  • La réaction du type « si le client veut détecter des passerelles API personnalisées, il n’a qu’à le dire clairement : envoyer un champ de télémétrie explicite et documenté, rendre la politique visible et inclure ce comportement dans les notes de version » me paraît très naïve
    Si le client envoie à la passerelle un champ de télémétrie explicite, une passerelle malveillante peut très facilement le supprimer ou le modifier pour que cela ressemble à du trafic normal
    L’intérêt de ce jeu du chat et de la souris par stéganographie, c’est qu’il est bien plus difficile pour la passerelle de rétro-ingénierie en continu tous les mécanismes de fingerprinting utilisés
    Bien sûr, certaines passerelles malveillantes continueront à s’adapter, mais elles ne pourront pas toutes le faire en permanence

    • Vraiment, l’auteur ne semble jamais avoir eu à gérer des abus côté client
      Si l’on n’est pas un labo chinois de distillation, c’est un sujet qui ne pose aucun problème
    • Jusqu’à sa découverte, cela pourrait même fonctionner mieux que le KYC pendant un certain temps
      Parce que le marché international des services de contournement de KYC est très développé
  • Il faut exécuter non seulement les outils d’IA, mais aussi les outils de développement dans des sandboxes
    Par exemple, on peut mettre n’importe quoi dans les dépôts de paquets Python ou JavaScript, ils n’ont pas de contrat avec des éditeurs d’antivirus et il n’existe pas de vérification citoyenne digne de confiance ; il ne faut donc pas les exécuter sans sandbox
    Pensez au fait que n’importe quel utilisateur anonyme de n’importe quel pays peut publier n’importe quoi, et que des millions de développeurs peuvent l’exécuter sur leur propre ordinateur
    Les IDE, les plugins d’IDE, les serveurs LSP et les plugins d’IA devraient tous être placés en sandbox
    La plupart ne sont pas analysés par des éditeurs d’antivirus et ne devraient pas être exécutés sans restrictions
    De plus, il existe déjà un théorème selon lequel aucun antivirus ne peut garantir à 100 % la sûreté d’un code
    Fait intéressant, la documentation de pip ne mentionne absolument pas les sandboxes ni les logiciels malveillants dans sa documentation de « démarrage », comme si elle vivait dans un monde merveilleux sans personnes, entreprises ni États malveillants
    J’espère au moins que personne sur HN ne vit dans cette illusion
    Pour utiliser des IDE, LSP et outils d’IA, il faut d’abord écrire son propre système de sandbox, et Linux ne fournit que des primitives de base, ce qui prend beaucoup de temps
    Par exemple, pour contrôler tout le trafic réseau sans droits root, il faut créer un espace de noms utilisateur pour obtenir les droits root, créer un espace de noms réseau, écrire un « collecteur de trafic » qui s’exécute dans cet espace de noms et transmet les données via un pipe vers un programme « superviseur » extérieur, puis faire en sorte que ce superviseur route le trafic vers sa destination
    Même pour simplement filtrer et inspecter le trafic sans droits root, Linux demande beaucoup trop de travail
    Il ne faut laisser aucune information non plus dans le nom d’utilisateur ou le nom d’hôte. Comme le prouve cet article, ces informations seront utilisées contre vous

  • Pour résumer ce qu’Anthropic a déjà fait : l’entreprise a filtré, des années avant que les gouvernements ne l’exigent, les personnes du « mauvais » côté de « toute l’humanité » ; elle a dégradé ses modèles de manière arbitraire avant de répondre ensuite en mode « désolé, mais pas vraiment » ; et elle a activement saboté les réponses en les modifiant en douce pour donner de mauvais résultats aux utilisateurs
    À quoi faut-il s’attendre ensuite ? Un malware qui briquerait la machine des utilisateurs qu’ils n’aiment pas ? Une extension à encore plus de personnes qu’ils n’aiment pas ?
    On voit déjà comment va se dérouler la vision utopique de Dario Amodei pour l’avenir de « toute l’humanité »

    • Les réactions excessives sur HN sont ridicules
      Tout devient compréhensible si l’on part du principe que ces gens croient sincèrement être en train de créer une superintelligence
      L’écrasante majorité du camp de la sécurité de l’IA a consacré à ce problème bien plus de vie et de temps que le commentateur HN moyen depuis son fauteuil ; ils pensent qu’il faut empêcher la Chine d’atteindre la superintelligence en premier, que l’accès à la superintelligence ne doit être accordé qu’à des acteurs bienveillants vérifiés, et que si cet objectif échoue, c’est une course qui mènera à l’extinction de l’humanité
      Si l’on ne suppose pas que l’affirmation « nous pensons être en train de créer une superintelligence » est un mensonge, presque toutes leurs actions deviennent compréhensibles
  • J’avais signalé ici un mécanisme similaire d’injection de prompt système
    https://news.ycombinator.com/item?id=48259288
    https://github.com/anthropics/claude-code/issues/62061
    Comme prévu, ils semblent continuer à trouver des usages nouveaux et « créatifs » à ce genre de choses
    Je continuerai à les supprimer par patch

    • Merci de faire ça
      Je ne savais pas que le prompt système injectait des consignes du genre « éviter les abstractions ; trois lignes de code similaires valent mieux qu’un helper »
      C’est quelque chose avec lequel je ne suis pas d’accord
      Existe-t-il un moyen de corriger cela en mettant des instructions dans CLAUDE.md pour remplacer ce genre de prompt ? On ne peut sans doute pas modifier directement le prompt système lui-même, mais CLAUDE.md ne devrait-il pas avoir le dernier mot ?
  • Je ne vois pas bien la préoccupation de confidentialité que l’auteur veut souligner
    Bien sûr, si l’on se fait prendre en train de faire quelque chose de « discret », cela suscite toujours des soupçons ; mais à l’inverse, si l’on rend public le fonctionnement de ce genre de « fonctionnalité de sécurité », il n’y a plus de raison de l’implémenter
    Et, à mon avis, la stéganographie n’est pas une sécurité reposant sur l’obscurité
    Tout comme le fait de garder une clé privée RSA secrète n’est pas une sécurité par l’obscurité, garder privé ce qui doit l’être fait partie du modèle de sécurité

    • Qu’Anthropic décide de ralentir la distillation des modèles de ses concurrents relève de son choix
      Mais ils se sont plantés en l’implémentant sous forme de fingerprinting de mes schémas d’accès sans les divulguer au préalable
      Ce n’est pas seulement « discret » : c’est clandestin, malhonnête et contraire à l’éthique
      Le fait que ce cas précis soit inoffensif n’est pas très rassurant. Qui garantit qu’ils ne collectent pas d’informations personnelles identifiables ?
      Le fait que leur comportement ait du sens sur le plan commercial n’est pas une raison pour que les gens acceptent des décisions trompeuses et hostiles aux clients
    • Si les rôles étaient inversés, et qu’un logiciel chinois implémentait une « fonctionnalité de sécurité » équivalente pour suivre des utilisateurs américains, l’actualité serait saturée d’articles accusant la Chine de surveillance et d’espionnage contre les États-Unis
      À moins que cette hypothèse soit elle aussi incompréhensible, mais en réalité j’ai l’impression que la vie privée des autres n’intéresse pas grand monde
  • « Donc cette fonctionnalité punit surtout les personnes faciles à fingerprinter, c’est-à-dire des développeurs ordinaires qui font des choses étranges mais légales » : ici, que signifie exactement punir ?

    • Une probabilité accrue d’être bloqué malgré un usage légal
    • Si vous êtes marqué comme concurrent présumé, votre compte saute
    • On vous renvoie des résultats corrompus et incorrects, différents de ce que vous avez payé
    • Vu la façon dont Anthropic fait grand bruit tous les mois ou tous les deux mois autour d’« attaques illégales de distillation chinoises », je parierais que si vous correspondez ne serait-ce qu’à l’un des schémas d’identification, ils dégradent déjà discrètement les performances du modèle, ou sont au minimum en phase d’examen ou de répétition générale
      Surtout quand on sait que ce genre de technologie existe et qu’ils avaient publiquement déclaré vouloir l’utiliser en production chez Fable
    • À mon avis, ce sera une corruption des sorties et/ou, à terme, une suspension de compte