La faille des blocs de raisonnement chiffrés dans les API OpenAI, Anthropic et Google : comment des modèles plus faibles ont pu extraire des secrets
Apollinaire Monteclair
Une vulnérabilité inédite dans la gestion des blocs de raisonnement chiffrés des API d’OpenAI, Anthropic et Google a permis à des chercheurs de récupérer des raisonnements internes et des secrets, dont des clés API et des mots de passe, à partir de journaux de session. Selon une étude publiée en août 2026, plus de 315 320 blocs de raisonnement ont été décodés, révélant 704 artefacts de confidentialité provenant de sessions utilisateurs réelles, dont 62 clés API et 33 mots de passe. Cette faille des blocs de raisonnement chiffrés expose une faiblesse de conception qui touche directement la sécurité des applications s’appuyant sur les modèles de langage avancés.
Dès les premières lignes de cet article, nous plongeons au cœur de cette vulnérabilité qui a ébranlé la communauté de la cybersécurité. Les implications sont majeures pour toute entreprise française intégrant des API d’IA dans ses processus métier, en particulier au regard des exigences du RGPD et des recommandations de l’ANSSI.
Comprendre la vulnérabilité : le replay des blocs de raisonnement
Pour saisir la gravité de cette faille, il faut d’abord comprendre le mécanisme des encrypted reasoning objects. Lorsqu’une application envoie une requête à une API de raisonnement (comme o3, Claude ou Gemini), le fournisseur peut retourner un bloc chiffré contenant le raisonnement interne du modèle. Ce bloc est conçu pour être retransmis dans les appels suivants afin de préserver l’état de la conversation sans exposer le texte en clair au client.
Le mécanisme des blocs chiffrés
OpenAI renvoie des encrypted reasoning items que les applications doivent rejouer avec un historique géré manuellement. Anthropic utilise une signature chiffrée complète du raisonnement dans un champ dédié. Google, de son côté, emploie des encrypted thought signatures. Ces objets préservent le raisonnement sans que le client puisse directement lire le texte brut. Le chiffrement lui-même n’a pas été cassé : l’attaque ne nécessitait pas de clé de déchiffrement.
Comment fonctionne l’attaque de replay
L’équipe de recherche, auteure du papier Stealing Reasoning Traces from Proprietary LLM APIs, a démontré que ces blocs chiffrés sont portables entre sessions, entre utilisateurs et même entre modèles. Concrètement, un bloc créé dans une session peut être réinjecté dans une autre session appartenant à un compte différent. Le fournisseur accepte et traite le bloc comme s’il était légitime. Une fois ce bloc replacé dans le contexte, un modèle plus faible de la même famille peut être utilisé comme « décodeur flou » pour transcrire le raisonnement produit par un modèle plus fort.
« Le bloc n’est pas vérifié par rapport à l’utilisateur original. Il suffit de posséder un bloc valide et un accès API à un modèle compatible pour tenter l’extraction. » - Extrait du rapport de recherche.
Cette portabilité transforme les journaux d’agents publiés (logs) en un véritable problème de sécurité. Un développeur qui partage un log contenant des blocs de raisonnement expose potentiellement le raisonnement interne de ses utilisateurs.
Menaces identifiées : quatre voies d’attaque
L’étude a mis en lumière quatre abus distincts rendus possibles par cette vulnérabilité :
- Vol de raisonnement propriétaire : un attaquant peut extraire le raisonnement d’un modèle fort (comme
o5) pour effectuer une distillation non autorisée vers un modèle plus faible, contournant ainsi les protections de propriété intellectuelle du fournisseur. - Extraction de données privées : en rejouant des blocs issus de journaux d’agents publics, un attaquant peut récupérer des secrets qui ne sont pas visibles dans le texte lisible de la conversation.
- Récupération de contenu nuisible caché : un bloc de raisonnement peut masquer des instructions malveillantes ou des contenus dangereux derrière une réponse visible jugée inoffensive.
- Injection de prompt invisible : un attaquant peut créer un bloc de raisonnement contenant une instruction malveillante, puis le rejouer dans une tâche non liée, faisant ainsi exécuter une action non souhaitée par le modèle (par exemple, un téléchargement de fichier) sans que l’instruction n’apparaisse dans le texte visible.
Toutes ces attaques reposent sur le même principe : la portabilité du bloc chiffré et l’absence de vérification de son intégrité contextuelle.
Chiffres clés : l’ampleur de l’exposition
L’équipe de recherche a analysé 6 708 trajectoires d’agents publics et décodé 315 320 blocs de raisonnement. Après avoir exclu les sources de benchmarks, elle a compté 704 artefacts de confidentialité distincts provenant de sessions utilisateur réelles. Voici le détail :
| Type d’artefact | Nombre identifié |
|---|---|
| Clés API | 62 |
| Mots de passe | 33 |
| Jetons d’accès | 24 |
| Clés privées | 7 |
| Autres secrets | 578 |
Source : Stealing Reasoning Traces from Proprietary LLM APIs (2026)
Parmi ces 704 artefacts, 64 n’apparaissaient qu’à l’intérieur du raisonnement caché et n’étaient pas visibles dans la trace visible. Cela signifie qu’un développeur qui nettoie le texte visible de ses logs peut laisser des secrets dans un bloc opaque qu’un autre compte peut rejouer.
Le rôle des modèles « décodeurs » plus faibles
Un aspect particulièrement intéressant de cette faille est l’utilisation de modèles plus faibles pour décoder le raisonnement de modèles plus puissants. Les chercheurs ont constaté que les blocs de raisonnement sont interchangeables entre modèles d’un même fournisseur, à condition que le modèle décodeur soit compatible. Par exemple :
- Claude Haiku 4.5 pour décoder des traces Claude (Anthropic) ;
- GPT-5.6 Luna pour décoder des traces GPT (OpenAI) ;
- Gemini Robotics ER-1.6 pour décoder des traces Gemini (Google).
« Nous avons observé que le décodeur, bien que plus faible, parvient à une transcription qualitativement fidèle du raisonnement du modèle fort. La longueur des extraits correspond généralement au nombre de jetons de raisonnement rapporté par le fournisseur. » - Extrait du rapport.
Cette capacité de fuzzy decoding aggrave l’impact : un attaquant n’a pas besoin d’un accès direct au modèle le plus cher ; un modèle moins coûteux suffit.
Exemple concret : extraction d’une clé API
Prenons le cas d’une application française de service client utilisant l’API d’OpenAI pour analyser les demandes. Un développeur publie sur GitHub un log d’exécution contenant un bloc de raisonnement chiffré. Ce bloc inclut une clé API injectée lors d’un test. Un attaquant trouve ce log, le rejoue via une session API avec GPT-5.6 Luna, et le modèle décodeur restitue la clé API en clair. Cette clé permettrait d’accéder au compte OpenAI de l’entreprise et, potentiellement, de consommer des ressources pour le compte de l’attaquant ou d’exfiltrer d’autres données.
Implications pour la confidentialité et la conformité RGPD
Pour les entreprises françaises, cette vulnérabilité croise directement les obligations du Règlement général sur la protection des données (RGPD). L’article 32 impose la mise en œuvre de mesures techniques appropriées pour garantir la confidentialité des données. L’exposition de secrets via des blocs de raisonnement pourrait être considérée comme une violation de données si elle révèle des informations personnelles.
L’ANSSI, dans ses recommandations sur l’usage de l’IA (guide de sécurisation des systèmes d’IA, 2025), insiste sur la nécessité de contrôler les flux de données entre les applications et les API. La portabilité non vérifiée des blocs de raisonnement constitue une brèche dans ce contrôle. Les DPO doivent désormais inclure ce risque dans leurs analyses d’impact (AIPD) pour toute application utilisant ces API.
« Nous recommandons aux responsables de traitement de revoir leurs procédures de journalisation et de partage des logs d’interaction avec les API d’IA, en supprimant systématiquement les blocs de raisonnement avant toute publication. » - Source : recommandations internes d’un cabinet de conseil en cybersécurité français.
Bonnes pratiques pour les développeurs
Les chercheurs et les fournisseurs ont publié des recommandations pour atténuer cette faille. Voici une checklist actionnable pour toute équipe de développement utilisant ces API :
- Nettoyer les blocs de raisonnement : avant de publier un log ou de partager une trace, supprimer tous les champs contenant des blocs de raisonnement opaques (par exemple,
encrypted_reasoning_items,thinking,encrypted_signature). - Éviter de publier des journaux bruts d’API : même si le texte visible a été nettoyé, les blocs cachés peuvent contenir des secrets. Utiliser des outils d’anonymisation de bout en bout.
- Isoler les sessions utilisateur : assurer que chaque session est associée à un identifiant unique et que les blocs de raisonnement ne peuvent pas être rejoués entre sessions d’utilisateurs différents. Vérifier que le fournisseur implémente bien cette isolation.
- Utiliser des modèles de traitement local : pour les données sensibles, envisager des modèles hébergés en propre (on-premise) ou via des solutions souveraines françaises (par exemple, les offres des acteurs du cloud de confiance).
- Auditer les logs partagés : mettre en place une revue systématique des logs avant toute publication externe, avec détection des motifs de blocs chiffrés.
Exemple de code pour le nettoyage
import json
import re
def strip_reasoning_blocks(log_entry: dict) -> dict:
"""Supprime les blocs de raisonnement d'un log d'API."""
for field in ['encrypted_reasoning_items', 'thinking', 'encrypted_signature']:
if field in log_entry:
log_entry[field] = None # ou supprimer complètement
return log_entry
# Utilisation
log = {"user": "test", "encrypted_reasoning_items": "aabbcc"}
log_nettoye = strip_reasoning_blocks(log)
print(log_nettoye) # {'user': 'test', 'encrypted_reasoning_items': None}
Ce bloc de code illustre une pratique minimale. En production, une suppression complète du champ est préférable à un simple passage à None.
Réponse des fournisseurs et état actuel
Selon le rapport de recherche, les attaques démontrées ont cessé de fonctionner après les correctifs mis en place par les fournisseurs. Toutefois, comme le soulignent les auteurs, cette affirmation repose sur leur propre déclaration de reproductibilité et non sur une confirmation officielle de la part d’OpenAI, Anthropic ou Google. Aucune communication publique n’a été faite par ces entreprises concernant cette vulnérabilité.
Les documents de documentation actuels montrent que les blocs de raisonnement chiffrés restent partie intégrante des API, mais leur gestion a évolué :
- OpenAI continue d’indiquer aux développeurs de rejouer les encrypted reasoning items lors de la gestion manuelle d’historique stateless.
- Google précise que son backend gère désormais la compatibilité des pensées lorsque la session change de modèle.
- Anthropic recommande de supprimer les thinking blocks lors du changement de modèle, car les autres modèles les ignorent.
Ces mesures atténuent partiellement le risque, mais les chercheurs mettent en garde : les blocs déjà publiés dans des dépôts publics restent-ils décodables ? Le rapport n’apporte pas de réponse définitive. Les entreprises ayant partagé des logs avant les correctifs doivent les considérer comme compromis.
Cette recherche s’appuie sur des travaux antérieurs, notamment ceux du cryptographe Matthew Green (Johns Hopkins, mai 2026), qui avait démontré le comportement de replay sans parvenir à une extraction fiable de secrets. La nouvelle étude transforme ce replay en méthode d’extraction complète avec des conséquences concrètes en matière de confidentialité.
Conclusion : leçons pour la sécurité de l’IA
La faille des blocs de raisonnement chiffrés nous rappelle que l’adoption rapide des API d’IA ne doit pas se faire au détriment des fondamentaux de la sécurité. La conception même de ces mécanismes de raisonnement opaque introduit un vecteur d’attaque insidieux, car il repose sur la confiance implicite accordée aux blocs chiffrés. Pour les RSSI et les équipes sécurité en France, l’heure est à la vigilance : auditez vos logs, formez vos développeurs et interrogez vos fournisseurs sur leurs pratiques de gestion des sessions.
La prochaine fois que vous intégrerez une API de raisonnement, posez-vous la question : que contiennent vos blocs de raisonnement ? La réponse pourrait vous surprendre. Prenez dès aujourd’hui les mesures de précaution décrites dans cet article pour protéger vos données et celles de vos utilisateurs.