Attaque Zero-Click Grok : l'injection d'invite cryptée qui vole l'historique des conversations
Célestine Rochefour
Selon les chercheurs en sécurité d’Adversa AI, une simple demande de résumé de page web pourrait désormais suffire à compromettre l’intégralité de vos conversations avec Grok, l’assistant IA de xAI. Découverte en juin 2025, cette attaque Zero-Click Grok par injection d’invite cryptée, baptisée Cryptographic Context Injection (CCI), exploite une vulnérabilité zero-click pour exfiltrer silencieusement données personnelles et historique des échanges, sans aucune action supplémentaire de l’utilisateur après la requête initiale. Alors que les IA conversationnelles deviennent un maillon central de la productivité numérique, comprendre le fonctionnement de cette menace et les moyens de s’en protéger est devenu crucial, tant pour les professionnels que pour le grand public.
Qu’est-ce que l’attaque Zero-Click Grok par injection cryptée ?
L’attaque CCI vise spécifiquement l’agent conversationnel Grok, développé par xAI. Elle tire parti de deux capacités clés : la navigation sur le web (via un navigateur intégré) et l’exécution de code Python dans un sandbox. Lorsqu’un utilisateur demande à Grok de résumer une page web contrôlée par l’attaquant, cette page contient un objet JSON crypté, du matériel cryptographique et une instruction apparemment légitime demandant à l’IA de déchiffrer les données à l’aide de son environnement Python. Le résultat est une exfiltration silencieuse de l’historique des conversations, du nom de l’utilisateur, de sa localisation approximative et de son niveau d’abonnement.
Cette technique se distingue des méthodes traditionnelles d’injection d’invite par l’emploi d’un chiffrement fort : PBKDF2 pour la dérivation de clé et AES-256-GCM pour le chiffrement. Contrairement au Base64 ou aux chiffrements par substitution, un LLM ne peut pas inférer ou décoder un contenu chiffré de manière fiable à partir de ses seuls poids ; il doit nécessairement exécuter un code de déchiffrement dans un sandbox, ce qui rend l’attaque beaucoup plus difficile à détecter par des mécanismes de filtrage classiques.
« Le contenu chiffré ne peut pas être récupéré de manière fiable à partir des seuls poids du modèle. L’assistant doit invoquer un interpréteur de code ou un sandbox pour déchiffrer le texte caché. » - Adversa AI.
Comment fonctionne l’injection cryptée de contexte ?
Le rôle du sandbox Python et de l’analyse de pages web
Grok intègre un navigateur capable de charger et d’analyser le contenu de pages web. Cette fonctionnalité, utile pour générer des résumés ou rechercher des informations, constitue la porte d’entrée de l’attaque. En demandant le résumé d’une page malveillante, l’utilisateur déclenche une chaîne d’actions qui mène à l’exécution de code Python.
La page attaquante contient un bloc JSON crypté accompagné d’une instruction écrite en langage naturel pour que l’IA exécute un script Python de déchiffrement. Le script utilise la bibliothèque standard Python (hashlib pour PBKDF2, cryptography pour AES) pour dériver une clé et déchiffrer le contenu.
Le contournement des défenses classiques par chiffrement fort
L’innovation de cette attaque réside dans l’emploi d’un chiffrement robuste, rendant inefficaces les filtres d’invite traditionnels qui reposent sur l’analyse du texte en clair. Les méthodes antérieures (encodage Base64, chiffre de César, substitutions Unicode) restaient vulnérables à la détection car les LLMs pouvaient les déchiffrer à partir de leur entraînement. Avec AES-256-GCM, le payload reste opaque même pour une IA très performante.
Cette complexité cryptographique force le modèle à utiliser son environnement d’exécution Python légitime, ce qui brouille la frontière entre instructions non fiables (contenu web) et instructions de confiance (sorties d’outils internes). Une fois déchiffré, le payload est interprété comme un contexte interne légitime, ce qui permet à l’attaquant de prendre le contrôle de la session.
Le scénario d’attaque : de la demande de résumé à l’exfiltration de données
Étape 1 : L’utilisateur demande le résumé d’une page web piégée
L’utilisateur, sans méfiance, sollicite Grok pour résumer un article ou une page web. L’IA charge la page, qui contient un objet JSON crypté et une instruction de déchiffrement en texte clair. Cette instruction demande à l’IA d’utiliser son environnement Python pour déchiffrer les données.
Étape 2 : L’assistant IA décrypte le payload caché
Grok exécute le script Python fourni dans la page. Le script dérive une clé via PBKDF2 et déchiffre le payload avec AES-256-GCM. Le résultat est un texte en clair contenant de nouvelles instructions, désormais considérées comme faisant partie du contexte interne de l’agent.
Étape 3 : Exploitation de la confiance dans le contexte interne
Le payload déchiffré ordonne à Grok de récupérer des informations sensibles (historique des conversations, nom, localisation, abonnement) et de les formater dans ce qui semble être une « clé de déchiffrement ». En réalité, cette clé est un modèle (template) dans lequel les données exfiltrées sont insérées.
Étape 4 : Exfiltration vers un serveur distant
L’instruction déchiffrée demande ensuite à Grok de naviguer vers une nouvelle URL pour obtenir un « contexte supplémentaire ». Cette URL est contrôlée par l’attaquant et les paramètres de la requête HTTP contiennent les données exfiltrées (incluant l’historique des conversations). Le serveur distant réceptionne ainsi les informations sans que l’utilisateur n’ait à cliquer ou à approuver quoi que ce soit.
La chaîne d’attaque se déroule sans boîte de dialogue de confirmation, ni avertissement visible. Les chercheurs d’Adversa AI indiquent un taux de succès d’environ 40 % sur une vingtaine de tentatives depuis juin 2025, les échecs étant principalement dus à des erreurs de déchiffrement et non à une détection par mécanismes de sécurité.
« La chaîne s’est déroulée sans dialogue de confirmation, sans avertissement visible, sans aucune action supplémentaire de la victime après la requête initiale. » - Rony Utevsky, chercheur chez Adversa AI.
Impact sur les utilisateurs et implications pour la sécurité des IA
Données exposées : historique, localisation, abonnement
Les données exfiltrées comprennent le nom complet de l’utilisateur, sa localisation approximative, son niveau d’abonnement, et surtout l’historique actif des conversations. Prenons l’exemple d’un cabinet de conseil français utilisant Grok pour analyser des rapports financiers et des stratégies concurrentielles. Une simple demande de résumé d’un article de blog malveillant pourrait exposer des données couvertes par le RGPD, telles que des noms de clients, des analyses de marché et des informations confidentielles. En France, la CNIL pourrait considérer une telle exposition comme une violation grave de la protection des données personnelles, avec des risques de sanctions pour l’entreprise concernée.
Similarités avec l’attaque sur Google Gemini
Adversa AI a également testé une approche similaire contre Google Gemini en mode Deep Thinking. Cette variante utilisait un bloc crypté contenant une fausse trace Python, un rappel de politique de sécurité contrefait et un préfixe de raisonnement à la première personne. Bien que différente dans l’exécution, l’approche conceptuelle est identique : exploiter l’exécution de code pour déchiffrer un payload et abuser de la confiance dans le contexte interne.
Ces exemples illustrent une surface d’attaque croissante pour les agents IA, où la capacité à exécuter du code et à naviguer sur le web crée de nouvelles vulnérabilités difficilement détectables.
Mesures de défense et bonnes pratiques pour les utilisateurs et développeurs
Pour les utilisateurs de Grok : précautions à prendre
- Évitez de demander le résumé de pages web non fiables ou dont l’origine est inconnue, surtout si elles contiennent des instructions cryptées.
- Vérifiez régulièrement les mises à jour de sécurité publiées par xAI concernant Grok.
- Limitez les informations partagées dans vos conversations, en particulier dans un contexte professionnel.
- Soyez attentifs aux comportements inhabituels de l’assistant (redirections, requêtes réseau inattendues, temps de réponse anormaux).
Pour les développeurs et éditeurs : recommandations techniques
- Préserver la provenance des données : étiqueter clairement chaque élément de contexte avec son origine (contenu web, sortie d’outil, base de connaissances) et empêcher les instructions non fiables de modifier le contexte interne.
- Isoler le contenu web non fiable lors de l’analyse par le navigateur intégré, en utilisant un sandbox ou un conteneur séparé.
- Exiger une approbation explicite pour toute navigation sortante non prévue, en particulier si elle contient des paramètres générés dynamiquement.
- Détecter les chaînes à haut risque : combinaison de chargement de contenu web, exécution de code, accès à des contextes sensibles et émission réseau sortante.
- Auditer les environnements Python exécutés par l’IA pour détecter des opérations de déchiffrement non standard et des accès à des ressources internes.
Tableau comparatif : injection d’invite classique vs. injection cryptée
| Critère | Injection classique | Injection cryptée (CCI) |
|---|---|---|
| Encodage | Base64, chiffre simple, Unicode | AES-256-GCM + PBKDF2 |
| Détection par filtres | Possible (analyse de texte) | Difficile (payload opaque) |
| Nécessite sandbox | Non (texte déchiffré par le LLM) | Oui (exécution Python requise) |
| Taux de succès simulé | Variable (souvent >60 %) | ~40 % sur tests Adversa AI |
| Surface d’attaque | Limitée au texte | Étendue (web + code + navigation) |
Encadré technique : exemple de logique de déchiffrement Python
# Exemple simplifié basé sur la description de l'attaque
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
import hashlib
# Données extraites du contenu web
salt = b'salt_value'
ciphertext = b'...' # payload AES-256-GCM
nonce = b'...' # nonce
# Dérivation de clé via PBKDF2
kdf = PBKDF2HMAC(algorithm=hashlib.sha256, length=32, salt=salt, iterations=100000)
key = kdf.derive(b'password') # mot de passe inclus dans la page
# Déchiffrement AES
decryptor = Cipher(algorithms.AES(key), modes.GCM(nonce)).decryptor()
plaintext = decryptor.update(ciphertext) + decryptor.finalize()
Conclusion : l’avenir de la sécurité des agents IA face aux injections cryptées
L’attaque Zero-Click Grok par injection cryptée de contexte illustre une nouvelle génération de menaces ciblant les assistants IA capables d’exécuter du code et de naviguer sur le web. Bien que xAI ait été avertie en juin 2025 sans correctif publié à ce jour, cette technique n’a pas encore été exploitée dans la nature. Toutefois, sa démonstration montre que les défenses actuelles sont insuffisantes face à des payloads chiffrés que les modèles ne peuvent interpréter qu’en exécutant du code.
Alors que l’IA agentique se démocratise, les éditeurs doivent repenser l’architecture de confiance entre les modules. La prévention passe par une segmentation stricte des contextes, une validation des origines des instructions et une limitation des actions autonomes de navigation et d’exécution de code. Les utilisateurs, quant à eux, doivent adopter des pratiques prudentes et rester informés des mises à jour de sécurité.
L’attaque Zero-Click Grok n’est peut-être que la première d’une série. Les chercheurs en sécurité et les développeurs d’IA doivent collaborer pour créer des mécanismes de défense robustes face à cette évolution des menaces. La confiance dans les agents conversationnels de demain se jouera sur notre capacité à sécuriser ces nouvelles surfaces d’attaque.