Rapport CTI technique du 16 août 2026
Résumé exécutif
Présentée le 9 août 2026 au DEF CON 34 par l'équipe de Tenet Security (Barak Sternberg, Nevo Poran et Ron Bobrov), GhostJacking est une technique d'injection de prompt indirecte qui transforme des journaux d'erreur ordinaires en instructions cachées pour les agents IA de développement. Un attaquant provoque volontairement un événement anodin, un blocage WAF, une alerte de monitoring, un rapport de bug, puis empoisonne le champ texte que ce système va journaliser. Quand un développeur demande ensuite à son agent (Claude Code, Cursor, Codex) de trier ou corriger ces événements, l'agent lit le contenu injecté et l'exécute comme une instruction légitime plutôt que comme une donnée à inspecter.
La démonstration de Tenet a atteint un taux de réussite de 90 % contre Claude Code exécutant Sonnet 4.6 dans la configuration recommandée par Cloudflare, et les chercheurs estiment à plus de 15 000 le nombre d'organisations exposées via de simples intégrations MCP mal cloisonnées. Trois plateformes ont été testées avec succès : Cloudflare (modification de zone DNS), DataDog (exécution de commande via un token client exposé) et Sentry (mouvement latéral agent à agent via l'assistant Seer). Les trois fournisseurs ont été notifiés et ont corrigé ce qui pouvait l'être avant la présentation. Tenet précise toutefois que le schéma de fond, faire confiance aux données ingérées par un agent, reste un problème architectural qu'aucun correctif ponctuel ne referme.
Chronologie
| Date | Événement |
|---|---|
| Avant le 9 août 2026 | Tenet Security teste GhostJacking contre Cloudflare, DataDog et Sentry et notifie les trois fournisseurs |
| 9 août 2026 | Présentation "GhostJacking" au DEF CON 34 (Las Vegas) par Barak Sternberg, Nevo Poran et Ron Bobrov |
| 9 août 2026 | Publication du rapport technique complet sur le blog de Tenet Security |
| 10-11 août 2026 | Reprise par SC Media, gbhackers, cybersecuritynews, Dark Reading, SecurityWeek |
| 11 août 2026 | The Hacker News intègre GhostJacking dans son récapitulatif ThreatsDay |
| Avant le 9 août 2026 (non daté précisément) | Anthropic corrige, sur signalement de Tenet, une évasion de sandbox distincte dans Claude Desktop via un jeton JWT réutilisé |
Fiche technique (format campagne / technique offensive)
GhostJacking | Pas de CVSS attribué (technique de classe, pas une CVE isolée) | Intégrations MCP Cloudflare, DataDog, Sentry pour agents IA de codage
Description technique. GhostJacking exploite le fait qu'un agent IA connecté à un serveur MCP (Model Context Protocol) traite les données renvoyées par ses outils, journaux d'erreurs, alertes, tickets, comme faisant partie du contexte de confiance de la conversation, alors qu'elles proviennent souvent d'une source manipulable par un tiers non authentifié. Sur Cloudflare, il suffit de déclencher un blocage WAF (code 403) pour faire journaliser une requête dont l'en-tête User-Agent est composé pour ressembler à de la télémétrie de scanner légitime, avec une instruction dissimulée dedans. Un agent Cursor disposant de permissions de lecture GraphQL et d'écriture via l'outil d'exécution de l'API Cloudflare, invité à traiter ce "finding", modifie l'enregistrement DNS A et ajoute un CNAME, détournant le trafic web et messagerie de la victime vers l'infrastructure de l'attaquant.
Sur DataDog, les chercheurs ont recensé plus de 2 700 jetons clients exposés dans du code source de page web et des en-têtes de réponse Content-Security-Policy / Reporting-Endpoints. Un jeton exposé permet de créer un faux log d'erreur accompagné d'une "résolution" recommandée ; l'agent chargé de trier les erreurs exécute alors une commande npx qui installe un paquet malveillant. Sur Sentry, plus de 2 400 DSN (Data Source Names) exposés dans du JavaScript public et des dépôts GitHub permettent d'envoyer un faux événement d'erreur par simple requête HTTP POST vers l'endpoint d'ingestion ; l'injection en Markdown suggère une correction que l'agent applique. Le cas Sentry illustre en plus un mouvement latéral agent à agent : l'assistant Seer de Sentry ingère l'erreur empoisonnée, produit une analyse qui intègre la "résolution" de l'attaquant comme sa propre conclusion, puis un agent tiers (Cursor, Codex) fait confiance à cette conclusion de Seer et exécute le paquet malveillant sans jamais lire directement le log d'origine.
Conditions d'exploitation. L'attaquant n'a besoin d'aucun accès à l'environnement de la victime : générer un blocage WAF ne demande qu'une requête HTTP vers un domaine protégé par Cloudflare, et les jetons DataDog/Sentry exploités sont collectés passivement dans du contenu public. La condition qui détermine le succès de l'attaque est côté victime : un agent IA disposant d'un accès en écriture ou d'exécution de commande via MCP, et un opérateur qui lui demande de traiter les journaux ou alertes sans supervision humaine du résultat.
PoC disponible : oui, démonstration complète présentée au DEF CON 34 et documentée dans le rapport public de Tenet Security ; outil de mitigation open source publié en parallèle (agent-jackstop, GitHub tenet-security).
Patch/mitigation. Il n'existe pas de correctif unique côté fournisseur qui ferme la classe de vulnérabilité : Cloudflare, DataDog et Sentry ont corrigé ce qui était directement exploitable dans leurs intégrations respectives, mais le mécanisme de fond (un agent qui traite un texte de log comme une instruction) reste une propriété du modèle d'exécution des agents. Tenet recommande de traiter systématiquement les sorties d'outils comme non fiables et de ne jamais laisser une sortie d'outil déclencher directement une action.
Diagramme de la chaîne d'attaque

Chaîne reconstruite à partir du rapport Tenet Security et de la couverture SC Media du 11 août 2026.
Analyse technique
Étape 1 : préparation de la charge et provocation de l'événement journalisé
L'attaquant compose une charge d'injection de prompt et la place dans un champ qui sera journalisé sans validation stricte de son contenu. Pour Cloudflare, il envoie une requête HTTP vers une ressource protégée par le WAF avec un en-tête User-Agent conçu pour déclencher un blocage tout en contenant le texte d'injection déguisé en télémétrie de scanner de sécurité. Pour DataDog et Sentry, il réutilise un jeton client ou un DSN collecté dans du code JavaScript exposé publiquement ou dans des en-têtes CSP/Reporting-Endpoints, puis poste directement un faux événement d'erreur vers l'endpoint d'ingestion du fournisseur.
Étape 2 : ingestion et mise à disposition du log empoisonné
Le fournisseur (Cloudflare, DataDog ou Sentry) journalise l'événement normalement, sans distinguer un texte de télémétrie légitime d'une charge malveillante puisque, du point de vue du service, il s'agit d'une donnée opaque à stocker et restituer. Le log devient disponible via l'API ou l'intégration MCP que l'agent IA du développeur consulte.
Étape 3 : lecture du log par l'agent et confusion contexte/instruction
Un développeur demande à son agent (Claude Code, Cursor) de trier les erreurs récentes ou de vérifier pourquoi une requête a été bloquée. L'agent appelle l'outil MCP correspondant, reçoit le contenu du log empoisonné dans sa fenêtre de contexte, et l'interprète comme une source d'information fiable, au même titre que le reste de la conversation. La frontière entre "donnée à analyser" et "instruction à exécuter" n'existe pas au niveau du modèle de langage : tout texte dans le contexte peut influencer la génération suivante.
Étape 4 : agent à agent, le cas Sentry Seer
Dans le scénario Sentry, l'agent appelant (Cursor ou Codex) n'interroge pas directement le log brut : il passe par l'assistant Seer, qui produit sa propre analyse de l'erreur. Seer intègre la "résolution" injectée par l'attaquant dans sa conclusion, présentée comme une recommandation de remédiation légitime émanant d'un outil de confiance. L'agent appelant, qui fait confiance à la sortie de Seer plutôt qu'au log d'origine, hérite de l'injection sans jamais l'avoir vue sous sa forme brute.
Étape 5 : exécution de l'action malveillante
L'agent exécute l'instruction injectée avec les permissions dont il dispose réellement : modification d'un enregistrement DNS A et ajout d'un CNAME sur Cloudflare (redirection du trafic web et messagerie), exécution d'une commande npx installant un paquet npm malveillant sur DataDog et Sentry. Le paquet ou la redirection donne ensuite accès aux identifiants cloud, variables d'environnement ou au poste du développeur, selon les permissions accordées à l'agent en amont.
Indicateurs de compromission
| Type | Valeur |
|---|---|
| Outil de mitigation | agent-jackstop (github.com/tenet-security/agent-jackstop), open source, Cursor et Claude Code |
| Comportement suspect Cloudflare | Modification inattendue d'un enregistrement DNS A ou ajout de CNAME juste après une session de triage d'erreurs par un agent IA |
| Comportement suspect DataDog/Sentry | Exécution d'une commande npx par un agent IA sans validation humaine, immédiatement après consultation d'un log d'erreur |
| Exposition de jetons | Plus de 2 700 jetons clients DataDog exposés dans du code source web public et en-têtes CSP/Reporting-Endpoints (chiffre Tenet Security) |
| Exposition de DSN | Plus de 2 400 DSN Sentry exposés dans du JavaScript public et des dépôts GitHub (chiffre Tenet Security) |
Aucun IOC réseau statique (IP, domaine C2) n'est publié par les chercheurs : GhostJacking est une technique d'injection contextuelle et non un implant, elle ne laisse pas de trace d'infrastructure attaquante classique en dehors des jetons volés et des modifications de configuration qu'elle provoque.
MITRE ATT&CK
Aucune cartographie officielle n'a été publiée par Tenet Security ou par les fournisseurs concernés à la date de rédaction. Le tableau suivant est une lecture technique construite à partir des éléments confirmés dans le rapport, pas une attribution vendeur.
| Tactique | Technique | ID | Justification |
|---|---|---|---|
| Reconnaissance | Search Open Websites/Domains | T1593 | Collecte passive de jetons DataDog et de DSN Sentry exposés dans du JavaScript public et des dépôts GitHub |
| Initial Access | Trusted Relationship | T1199 | Abus de la confiance accordée par l'agent IA aux données provenant de services d'observabilité intégrés via MCP |
| Execution | Command and Scripting Interpreter | T1059 | L'agent exécute une commande npx qui installe et lance le paquet npm malveillant |
| Defense Evasion | Obfuscated Files or Information | T1027 | Charge d'injection déguisée en télémétrie de scanner ou en recommandation Markdown légitime |
| Lateral Movement (inter-agents) | Trusted Relationship (lecture étendue) | T1199 | Propagation de l'injection de l'assistant Seer vers un agent tiers qui fait confiance à sa sortie sans revalider la source |
| Command and Control | Application Layer Protocol | T1071 | Redirection DNS du trafic web et messagerie vers une infrastructure contrôlée par l'attaquant |
Remédiation : checklist opérationnelle
- Auditer toutes les connexions MCP actives sur les agents de développement : lister précisément quels outils chaque agent peut invoquer et quelles données ces outils peuvent renvoyer.
- Traiter par défaut toute sortie d'outil (log, alerte, ticket, résultat de scan) comme non fiable, jamais comme une instruction exécutable directement.
- Interdire à un agent d'enchaîner lecture d'un log et action à privilège (modification DNS, exécution de commande, appel API d'écriture) sans validation humaine explicite entre les deux.
- Faire tourner les jetons clients DataDog et les DSN Sentry exposés publiquement, et vérifier les en-têtes CSP/Reporting-Endpoints pour s'assurer qu'aucun secret n'y transite en clair.
- Déployer un contrôle d'exécution comportemental au niveau de l'agent (type agent-jackstop) plutôt que de compter uniquement sur le sandboxing ou le durcissement de prompt.
- Sur les intégrations Cloudflare, restreindre les permissions d'écriture DNS accordées aux agents IA au strict nécessaire, avec approbation humaine pour toute modification de zone.
- Pour les architectures multi-agents, désactiver la confiance implicite entre agents : la sortie d'un assistant tiers (comme Seer) doit être revalidée avant d'être transmise à un agent exécutant.
- Suivre les publications Anthropic, Cursor et OpenAI sur les correctifs liés aux sandbox d'agents, notamment le cas de l'évasion Claude Desktop corrigée avant le DEF CON.
Sources
- SC Media, "GhostJacking attack turns error logs into indirect prompt injections", 11 août 2026
- The Hacker News, ThreatsDay, "GhostJacking AI Attacks, EtherHiding ClickFix, Cursor CLI Flaw + 17 More Stories", août 2026
- cybersecuritynews.com, "New Ghostjacking Attack Lets Hackers Hijack AI Agents to Run Their Code on Developer Machines"
- gbhackers.com, "GhostJacking Attacks Let Hackers Hijack AI Agents and Steal Cloud Credentials"
- SecurityWeek, "'Ghostjacking' Attack Uses Poisoned Logs to Turn AI Agents Bad"
- Rapport technique original Tenet Security (référencé par SC Media) : tenetsecurity.ai/blog/ghostjacking-attacks-agentic-kill-chain/