When Grok sees data-exfiltration instructions in plain text on a webpage, it refuses. When the same instructions are wrapped in AES-256-GCM ciphertext with decryption keys sitting right beside them on the page, Grok decrypts inside its Python sandbox, treats the result as its own tool output, and follows orders — including visiting an attacker URL with your name, location, subscription tier, and full chat history baked into the query string.
That is cryptographic context injection, demonstrated by Adversa AI against Grok 4.5 Fast and reported by Ars Technica, The Register, and The New Stack on August 20, 2026. xAI was notified June 3, 2026; as of August 19, the attack still worked.
If you build browser agents, MCP tools with code execution, or anything that summarizes untrusted web pages, this is the August 2026 case study for why plaintext guardrails are insufficient when the model can run decryption code.
TL;DR: what people are asking
| Question | Answer |
|---|---|
| What's the attack name? | Cryptographic context injection (Adversa AI). |
| What triggers it? | User asks Grok to summarize a poisoned webpage. |
| Why do guardrails fail? | Scanners read plaintext; decrypting AES requires running PBKDF2 + AES-256-GCM — classifiers don't do that at inspection time. |
| What gets stolen? | Name, location, subscription tier, full conversation prompts — via URL exfiltration. |
| Plaintext version blocked? | Yes — same payload rejected when unencrypted. |
| xAI status? | Acknowledged report; no public mitigation timeline as of Aug 19. |
| Success rate? | ~40% over ~20 attempts since June (Adversa). |
Attack chain step by step
-
Attacker publishes a webpage containing:
- AES-256-GCM ciphertext (malicious instructions)
- PBKDF2 parameters and key material (in plaintext)
- Instructions telling the model to decrypt the blob
-
User asks Grok to summarize the page (normal browser-agent workflow).
-
Input guardrail scans visible text — sees decryption instructions and ciphertext, not the hidden payload. Passes.
-
Grok runs decryption in its code execution sandbox — producing plaintext instructions as tool output.
-
Guardrails don't re-inspect tool output the same way — Grok treats decrypted text as its own intermediate result.
-
Payload executes — e.g., assemble session data into a fake "decryption key" string, append to attacker URL, navigate via browser tool without user confirmation.
Leading theory from researchers: Grok's filter inspects text entering and leaving the model, but not intermediate code-execution output — the gap where decrypted instructions live.
Why this is worse than classic prompt injection
Classic prompt injection hides instructions in visible page text — "ignore previous instructions…" Guardrails and users increasingly recognize that pattern.
Cryptographic context injection hides the payload behind a computation the guardrail won't perform. The decryption recipe is right on the page; the scanner sees it but cannot resolve what it unlocks without executing it — which is exactly what the model does.
Same class of failure as Claude memory heist via web fetch and GitLost exfiltration from GitHub agent workflows, but with a novel evasion layer: encryption as obfuscation for the input filter.
Disclosure timeline
| Date | Event |
|---|---|
| June 3, 2026 | Adversa notifies xAI directly + HackerOne |
| August 4, 2026 | Follow-up |
| August 10, 2026 | Follow-up |
| August 19, 2026 | Attack still reproducible on Grok.com |
| August 20, 2026 | Public disclosure via press |
xAI's bug bounty scope for jailbreaks may affect payout eligibility — Adversa notes the attack worked regardless.
Defensive patterns for agents you build
| Pattern | Why it helps |
|---|---|
| Treat tool/code output as untrusted | Policy decisions shouldn't trust decrypted content without re-scanning |
| Block navigation from summarization tasks | Separates "read page" from "visit URL" permissions |
| Re-scan after decryption | If the agent must run crypto, scan plaintext after execution before acting |
| User confirmation for external requests | Grok visited the exfil URL without asking |
| Domain allowlists for fetch tools | Reduces attack surface for poisoned pages |
Teams deploying Claude in Chrome or MCP browser tools should assume this evasion exists until proven otherwise on their stack.
Related on explainx.ai
- Is Claude Cowork safe? — prompt injection fundamentals
- Claude memory heist via web fetch — browser-agent exfiltration pattern
- GitLost: GitHub agent prompt injection — agent workflow abuse
- Agent skills security threats — supply-chain and instruction attacks
- MCP security guide — tool permission boundaries
- Claude in Chrome safety guide — browser extension threat model
Sources: Ars Technica — Grok exfiltrates user data via encrypted instructions · The Register — Grok chat duped · The New Stack — encrypted prompt injection
Vulnerability status, affected Grok versions, and xAI response are accurate as of August 20, 2026 public reporting. Re-test before assuming mitigation on any agent product.
