Ce que les journaux d’appels et les jeux revendus gardent encore après l’envoi de clés SSH ou de jetons cloud via un relais API LLM

Pointer l’hôte API de Claude Code ou d’un agent maison vers un relais API LLM tiers, pour que les modèles d’outre-mer restent bon marché et « en ligne ». Le fil de sécurité le plus bruyant de septembre 2026 n’est plus seulement « ne collez pas une clé dans ChatGPT ». C’est de savoir si ce saut de trop peut vendre avec l’historique d’appels les clés de votre intranet. Un chercheur a dit avoir dépensé une somme à cinq chiffres pour environ 6 To de données d’invocation qui contenaient des clés privées SSH, des configs VPN, des secrets de fournisseurs cloud et des jetons GitLab. Un relais API LLM n’est pas un tuyau transparent : c’est un proxy de couche applicative qui déplie légalement le JSON en clair. Ci-dessous, le reste est limité à ce que le papier arXiv et les publications publiques permettent de revérifier. Les entreprises nommées ne sont pas écrites ici comme des compromissions confirmées.

Une ligne vérifiable d’abord : le cadenas de la barre d’adresse ou du client ne prouve que le TLS sur le saut jusqu’au relais. Il ne prouve pas que le relais ne peut pas lire l’invite. Ouvrez Network dans les outils de développement et regardez le Host de la requête : domaine du fournisseur de modèle, ou autre nom d’hôte de proxy ? Les canaris n’ont leur place que dans le trafic de test. N’expérimentez pas avec une clé SSH de production ni une AccessKey Alibaba Cloud encore vivante.

Ce n’est pas « le modèle va-t-il s’entraîner ». C’est le saut du milieu

Vers le 10 septembre 2026, le chercheur en sécurité Chaofan Shou a écrit qu’il avait acheté environ 6 To de données d’invocation du modèle Fable auprès d’un routeur d’API LLM majeur basé en Chine, et que les clés SSH, configs VPN, clés Aliyun et jetons GitLab de ce paquet suffiraient à joindre des systèmes liés à plusieurs entreprises chinoises et organismes proches de l’État. Les recensions suivantes ont cadré la même affirmation en « les journaux de relais ont touché un marché gris ». Ces comptes disent aussi que les sociétés nommées n’ont pas confirmé publiquement une compromission, et qu’aucun audit indépendant n’a assimilé « un jeton est apparu dans un jeu » à « l’intranet a été pris ». Cette note prend l’histoire comme accroche. Elle ne traite pas une capture de tweet comme un verdict.

Ce n’est pas la même question que la note précédente sur le collage d’une clé dans ChatGPT. Celle-là contrôle une boîte de discussion grand public : l’historique, l’interrupteur d’entraînement, et environ 30 jours de conservation de sécurité sur une discussion temporaire. Celle-ci contrôle l’infrastructure grise que les développeurs rencontrent vraiment : vous croyez que la requête est partie vers Claude ou GPT, mais elle a d’abord atterri sur un routeur qui déchiffre le corps, réécrit les en-têtes d’authentification et relaie. Les agents lisent aussi tout seuls les fichiers .env, la sortie du terminal et les fichiers de l’espace de travail. Une clé n’a pas besoin d’être collée à la main pour entrer dans l’invite.

Les clés privées SSH, les clés d’accès cloud, les jetons d’accès personnels GitLab et les configs VPN appartiennent au seau que la fiche OWASP sur la journalisation garde d’ordinaire hors des enregistrements partagés en clair. Le Top 10 OWASP des applications LLM range déjà la divulgation d’informations sensibles et le risque de chaîne d’approvisionnement. Un relais marche sur les deux : c’est le prochain endroit où l’invite est stockée, et c’est un fournisseur de plus entre vous et l’éditeur du modèle.

Le cadenas ne couvre qu’un saut. Le relais déplie légalement le JSON

Beaucoup entendent « HTTPS de bout en bout » comme « personne sur le chemin ne peut lire ceci ». Ce n’est pas ainsi qu’un proxy de couche applicative fonctionne. arXiv:2604.08407, Your Agent Is Mine: Measuring Malicious Intermediary Attacks on the LLM Supply Chain, ouvre sur ce fait : ces routeurs tournent comme des proxys applicatifs, avec un accès complet en clair à chaque charge JSON en vol, et aucun fournisseur n’impose d’intégrité cryptographique entre le client et le modèle amont. La requête doit être déchiffrée, déballée et réauthentifiée au relais avant qu’une deuxième session TLS s’ouvre vers l’amont. Le chiffrement n’a pas été cassé. Il a été légalement terminé une fois.

Cela produit une scène qui a l’air contradictoire. Votre IDE peut parler TLS au relais, et le relais peut parler TLS à Anthropic ou OpenAI, et pourtant la machine du milieu a déjà vu l’invite, les appels d’outils, les variables d’environnement et le code renvoyé. C’est la même classe d’erreur que de prendre STARTTLS pour une confidentialité de bout en bout du courrier : le chiffrement de transport arrête un passant sur le fil. Il n’arrête pas un magasin qui a déjà accepté la copie entrante. Le courrier, au moins, vous laisse chercher dans Envoyés le message que vous avez écrit. Le journal d’appels d’un relais n’est en général pas une page que vous pouvez ouvrir. Supprimer le chat local ne supprime pas la ligne déjà écrite sur leur disque.

Les agents de code élargissent la surface. Claude Code, Cursor et les agents maison scannent l’espace de travail, lisent la config du projet et râclent la sortie du terminal. Une fois l’hôte API pointé vers un tiers non audité, une clé qui apparaît pendant que vous déboguez un script, levez une machine de test ou tirez un dépôt privé peut voyager dans le corps de la requête avec le contexte autour. Vous n’avez jamais cliqué « envoyer la clé ». Vous avez demandé à l’agent de « réparer pourquoi ça ne se connecte pas ».

Ce qui reste d’ordinaire Qui peut encore le lire
Journaux d’appels du relais Invites, appels d’outils, et clés en clair tirées des variables d’environnement L’opérateur du relais ; quiconque obtient le journal ou une sauvegarde
Jeux revendus / fine-tuning Requêtes historiques non masquées, vendues en paquet Celui qui a acheté le paquet ; celui qui le recopie plus tard
Fournisseur de modèle amont Le même clair après que le relais l’a transféré La politique de conservation et d’entraînement de ce fournisseur
Appels d’outils réécrits Charges empoisonnées de l’article, qui peuvent s’exécuter localement sans invite L’opérateur de ce relais et tout plan de contrôle ultérieur

428 nœuds dans l’article : un relais payant peut encore empoisonner, et les canaris se font ramasser

Avant l’histoire des 6 To de septembre, la même ligne de recherche avait déjà publié une mesure que vous pouvez citer. Les auteurs ont acheté 28 routeurs payants sur Taobao, Xianyu et des vitrines Shopify, puis collecté 400 nœuds gratuits dans des communautés publiques — 428 au total. Ils ont planté des identifiants AWS traçables et une clé privée Ethereum préfinancée dans le trafic d’agents en bac à sable, et regardé si un relais les lirait et les utiliserait.

Les résultats tiennent en quatre phrases. Neuf nœuds injectaient activement du code malveillant : un payant, huit gratuits. Deux déployaient des déclencheurs d’évasion adaptative. Dix-sept ont touché des identifiants canari AWS appartenant aux chercheurs. Un a vidé l’ETH du portefeuille de test. L’article consigne aussi deux observations d’empoisonnement qui ramènent des nœuds « d’apparence bénigne » sur la même surface : une clé OpenAI volontairement fuitée et des leurres mal configurés ont traité environ 2,1 milliards de jetons issus de ces routeurs ; 440 sessions Codex ont exposé 99 identifiants, et 401 de ces sessions tournaient déjà en mode YOLO sans confirmation. Les clients valident à peine les appels d’outils que le relais renvoie — les auteurs ont construit un proxy de recherche nommé Mine contre quatre cadres d’agents publics pour montrer des charges réécrites.

Ces chiffres ne prouvent pas que le relais que vous utilisez aujourd’hui est l’un des neuf ou des dix-sept. Ils prouvent le mécanisme : un relais voit le clair ; certains réécrivent la réponse ; certains ramassent les identifiants tout seuls ; une étiquette de prix n’est pas une promesse de bout en bout. Passer à un « proxy plus cher » se contrôle encore contre le Host, la politique de journaux, et le fait d’avoir envoyé ou non une vraie clé — pas contre la facture.

Une fois les journaux vendus comme produit, supprimer le chat local ne les rachète pas

Ce qui pique dans l’histoire de septembre, ce n’est pas une autre boîte de discussion qui pourrait s’entraîner. C’est l’historique d’invocation traité comme un jeu de données à vendre. Le récit public dit que des enregistrements de requêtes non masqués contenaient des jetons GitLab, des clés SSH d’hôte, des configs VPN et des clés cloud à privilèges élevés. Un acheteur n’a pas à forcer d’abord un réseau de bureau. Si le jeton marche encore, une connexion avec un identifiant valide ressemble à de l’exploitation ordinaire dans le journal de l’entreprise. C’est « un compte vivant » plus « un saut de trop dans la chaîne d’approvisionnement ». Ce n’est pas une cassure de TLS.

Donc « j’ai déjà vidé le chat de l’IDE » ne récupère pas un paquet déjà vendu. L’horloge de conservation du relais est la leur : journaux globaux, stockage d’objets, et copies vendues sur un marché de fine-tuning ne partagent pas votre bouton Supprimer. Un ChatGPT grand public écrit au moins l’interrupteur d’entraînement et la discussion temporaire dans une page d’aide. Un proxy gris ne vous donne en général pas une politique de données équivalente. Quand vous contrôlez ceci sur une machine, n’allez pas télécharger ces 6 To, et ne transmettez pas les jetons des captures. Une vraie clé qui a déjà traversé un relais doit d’abord être révoquée chez l’émetteur. Changez de canal après.

Le fournisseur de modèle amont est une deuxième copie. Après un relais réussi, Anthropic ou OpenAI traitent encore ce clair selon leurs propres règles de conservation d’API. Couper « améliorer le modèle » sur un produit grand public n’atteint pas un compte de proxy où vous n’avez jamais ouvert de session, et n’atteint pas un paquet historique déjà vendu. Gardez les deux classeurs séparés : la politique du fournisseur est un livre ; les journaux du relais en sont un autre.

N’expérimentez pas avec une SSH de production, une paire AccessKey Alibaba Cloud, un jeton GitLab glpat-, ni une chaîne de connexion non masquée. N’achetez pas, ne téléchargez pas et ne transmettez pas ce paquet de 6 To. Préparez un canari jetable tel que canary-relay-2026-do-not-reuse. Ce que vous contrôlez, c’est si Network montre ce Host et si le corps contient cette chaîne — pas si vous pouvez encore répandre une clé d’intranet. Révoquez une vraie clé qui est déjà entrée dans un relais.

Contrôler sur place : lire le Host, et n’envoyer un canari que dans une requête de test

Un slogan « nous ne faisons que relayer » ne se prouve pas tout seul. Ce que vous pouvez voir en une séance, ce sont trois choses : si le Host de cette requête est le domaine du fournisseur de modèle, si le corps tient encore une clé qui ne devrait pas sortir, et si l’agent exécutera les appels d’outils renvoyés sans confirmation. Cette étape ne prouve que « qui a reçu le clair sur cet appel ». Elle ne prouve pas qu’un relais donné a vendu ses journaux. Ce côté-là ne se contrôle que contre une note de conservation auditable — et contre le fait que vous envoyez encore, ou non, de vraies clés.

Dans un projet de test, pointez l’URL de base de l’API vers l’adresse que vous utilisez vraiment. Ouvrez Network ou la liste de requêtes d’un proxy local et envoyez une invite qui ne contient qu’un canari, par exemple « Répète canary-relay-2026-do-not-reuse et ne fais rien d’autre ». Lisez la ligne de requête. Si Host est api.anthropic.com, api.openai.com, ou une passerelle que votre entreprise a construite et nommée dans un contrat, le pair de ce saut est le fournisseur ou votre propre machine. S’il s’agit d’un domaine de proxy inconnu, d’une IP brute ou d’une chaîne de chemins de relais, le clair a déjà atterri au milieu. Puis ouvrez le corps : le canari doit apparaître dans le JSON. C’est la chaîne qu’un relais qui journalise écrirait.

Ne donnez pas un vrai .env à un agent pour qu’il « voie quelle ligne est fausse ». Remplacez d’abord mots de passe et clés privées par des canaris sur cet appareil, ou verrouillez le fichier entier localement avant de décider s’il doit quitter le navigateur. Quand une vraie clé doit arriver à un collègue — pas à un modèle — passez au lien auto-destructible : la clé reste dans le fragment # de l’URL, et le serveur ne stocke le texte chiffré qu’un moment. Collez le lien complet, dièse compris, dans une boîte de relais, et cette couche disparaît.

  1. Dans un projet de test, envoyez une invite qui ne contient qu’un canari tel que canary-relay-2026-do-not-reuse. N’utilisez pas une vraie clé.
  2. Ouvrez Network ou un proxy local et comparez le Host de la requête : domaine du fournisseur de modèle, ou nom d’hôte de relais.
  3. Ouvrez le corps et confirmez que le canari apparaît en JSON clair. C’est ce qu’un relais qui journalise peut stocker.
  4. Révoquez d’abord les clés de production et émettez-en de nouvelles. Masquez les invites sur cet appareil avant qu’elles partent. Quand une personne doit recevoir la vraie valeur, utilisez un lien auto-destructible — pas un relais.

La preuve est étroite. Dans ce seul passage, le clair est parti comme corps de requête vers le Host que vous avez vu. Cela ne prouve pas qu’une extension n’a jamais sauvé une copie, et ne prouve pas que le paquet de 6 To contient l’URL de votre dépôt. Après un changement de relais ou d’agent, relancez le canari contre la nouvelle URL de base.

Masquer sur cet appareil, sans compte, et garder la vraie clé dans cet onglet

Si vous voulez que « les clés n’entrent pas dans une requête de relais » devienne un geste répétable, commencez chez MakePwd par le masquage sous Supprimer les UTM. La page s’ouvre sans compte et sans inscription. Le masquage par règles traite le texte dans l’onglet courant. Il n’envoie pas l’original, et n’écrit pas le corps en attente de masquage dans les statistiques. Masquez le dump d’erreur, le fragment de config ou le collage de terminal que vous alliez tendre à un agent, puis décidez si cette requête a encore besoin d’un relais. Masquer n’est pas anonymiser. Les noms manqués, les chiffres dictés et les formes de jetons maison demandent encore une passe humaine. Les limites champ par champ sont dans Ce que le masquage par règles couvre dans un ticket ou un journal de chat — et ce qui reste visible.

N’envoyez pas un .env entier ou un fichier de clés vers « mets-le sur un drive et laisse le modèle le lire ». Chiffrer un fichier utilise AES-256-GCM dans cet onglet pour faire un .lock / .enc (un fichier, 5 Go au plus). Le texte chiffré peut voyager sur un drive ; la phrase secrète doit prendre un autre canal. Quand un collègue doit recevoir la vraie phrase, utilisez un lien auto-destructible : le navigateur chiffre avec Web Crypto sous AES-256-GCM, et les champs sortants sont le texte chiffré, l’expiration et les lectures restantes. La page attache la clé au fragment sur s.html?id={id}#{key}. Selon la RFC 9110, la ligne de requête ne doit pas inclure la partie après le dièse. Un mot de passe de connexion qui a déjà traversé un relais doit d’abord être révoqué, puis remplacé sur cet appareil par une nouvelle chaîne de 6 à 128 caractères du générateur (16 par défaut ; moins de 8 est signalé plus faible). Aucune de ces étapes n’exige de connexion.

La façon dont une boîte de discussion grand public garde les sessions et s’entraîne reste la page d’aide de ce fournisseur. Voir Que reste-t-il après avoir collé un mot de passe ou une clé API dans ChatGPT. Ne mélangez pas les deux notes. Celle sur ChatGPT répond à ce qu’une boîte officielle garde encore. Celle-ci répond à ce que le saut de relais garde encore. Couper l’entraînement dans une boîte officielle ne défait pas la vente d’un journal qu’un relais a déjà vendu.

Questions fréquentes

Si la requête passe en HTTPS, le relais reste-t-il incapable de lire le clair ?

Non. L’article précise que les routeurs d’API LLM fonctionnent comme des proxys de couche applicative, avec un accès complet en clair à chaque charge JSON en vol. Le TLS du client vers le relais est un saut ; le TLS du relais vers le modèle amont en est un autre. Sur le disque du relais, une clé est du texte lisible par défaut — ce n’est pas « seul Anthropic peut la voir ».

Un relais payant est-il sûr de bout en bout ?

Non. Payant n’est pas de bout en bout. L’article a acheté 28 routeurs payants sur Taobao, Xianyu et des vitrines Shopify, plus 400 nœuds gratuits — 428 au total. Neuf injectaient activement du code malveillant, dont un nœud payant. Dix-sept ont touché des identifiants canari AWS appartenant aux chercheurs. Un a vidé l’ETH d’un portefeuille de test.

Le jeu de 6 To de septembre prouve-t-il que Huawei ou Xiaomi ont été compromis ?

Non. Le récit public dit qu’un chercheur a déclaré avoir acheté environ 6 To de données d’appels, et que les jetons SSH, VPN, cloud et GitLab qu’il contenait suffiraient à joindre certaines entreprises et institutions. À la date de rédaction, les sociétés nommées n’ont pas confirmé publiquement une compromission. Cette note limite « un relais peut voir le clair et peut le revendre » à une portée vérifiable. Elle ne traite pas une entreprise nommée comme une intrusion prouvée.

Si le modèle doit voir une config qui contient une clé, que peut-on encore faire ?

Masquez d’abord mots de passe, jetons et clés privées en canaris sur cet appareil. Vérifiez ensuite si le Host de cette requête est le domaine du fournisseur de modèle. Les vraies clés n’ont rien à faire dans un relais, ni dans une boîte de discussion grand public. Quand un collègue — pas un modèle — doit recevoir la vraie valeur, envoyez-la une fois par lien auto-destructible et laissez la clé dans le fragment # de l’URL. Création et lecture s’ouvrent toutes deux sans compte.

Trois points à retenir avant de changer encore l’hôte API

Premièrement : un relais déplie légalement le clair. Client vers proxy est un saut TLS ; proxy vers modèle en est un autre. Invites, appels d’outils et clés du .env sont lisibles par défaut sur la machine du milieu. Deuxièmement : l’histoire des 6 To de septembre parle de journaux d’appels qui peuvent se vendre en paquet. Les 428 nœuds de l’article montrent qu’un relais payant peut encore empoisonner et que les canaris se font ramasser. Troisièmement : en une séance, ne contrôlez que le Host et le corps. Si un canari peut partir, une vraie clé peut partir. Révoquez un mot de passe qui a déjà traversé un relais, et masquez les invites sur cet appareil avant qu’elles sortent.

Si la question suivante est ce qu’une boîte de discussion grand public garde encore après le collage d’une clé, lisez Que reste-t-il après avoir collé un mot de passe ou une clé API dans ChatGPT. S’il faut vérifier si la clé après un dièse entre dans HTTP, lisez Pourquoi le fragment après # d’une URL convient pour une clé, et quand cette protection lâche. Cette note ne trace qu’une ligne que vous pouvez écrire dans une conclusion : ce qui peut encore rester après qu’une clé entre dans un relais API LLM.