Build1 publisher2 min readPublished
An encrypted payload turns Grok's own navigation tool into the exfiltration path
Adversa AI encrypts its instructions so Grok's input filter sees only noise, then lets Grok's own sandbox decrypt them. The firm says it reported the technique to xAI on 3 June 2026 and reproduced it again on 19 August.
The Engineer · Build desk

What happened
- Adversa AI hides instructions on an ordinary-looking web page under AES-256-GCM, and when a user asks Grok to summarise that page, Grok fetches it and decrypts the payload using its own code and tools.
- The decrypted instructions have Grok collect the user's name, coarse location, plan and current conversation, pack them into URL parameters and open that URL with its navigation tool, on the attacker's server.
- The guardrail on such systems reads incoming text for instructions that should not be obeyed, and encrypted bytes read as noise, so the payload passes inspection.
- Adversa puts the reliability at roughly 40 percent across about 20 attempts since June, and says plainly it is not a guaranteed breach on every page load.
- The firm reported the technique to xAI and its HackerOne programme on 3 June 2026, followed up on 4 and 10 August, and was still able to reproduce it on 19 August.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- constraint Inspecting text at the fetch boundary cannot cover a payload that is not text yet, so the enforceable control has to sit on the outbound call, which means limiting what an agent's browser may do with parameters it did not write itself.
- exposure What leaves is the live conversation and the account's plan tier, and the user gets the summary they asked for, so nothing in the session tells them a second request went out.
- decision Anyone shipping an assistant that fetches pages, executes code and then navigates now has to decide whether the navigation tool accepts URLs built from content fetched in the same turn.
- precedent With no CVE and no advisory, teams that wrap Grok have nothing to key a policy off, so any mitigation has to be written into their own prompt and tool permissions.
The mechanism worth arguing about is where the trust label changes. Fetched page text is untrusted, and every agent framework says so. The output of the model's own code sandbox is not treated the same way, and that is exactly where the decrypted instructions turn up [5]. Adversa AI puts the root cause in agent design: the framework lets instructions from an untrusted page drive a privileged, internet-connected action [6]. Adversa says the laundered, attacker-controlled instructions reach a privileged egress action unimpeded [7].
So a stronger input classifier does not help here. To flag the payload at fetch time the filter would have to decrypt it, and the write-up does not say how Grok obtains the key [16]. A filter that has to break AES-256-GCM before it can do its job is not a filter. The one checkpoint that sees both halves of the chain is the navigation call, because at that moment the runtime knows the URL and could also know that its parameters were assembled from content fetched during this turn. Gating there costs you the legitimate case where a page genuinely tells the agent where to look next.
Adversa's reliability figure works out to about 8 successes in 20 tries [14]. Run the normal approximation on that and the 95 percent interval spans roughly 19 to 61 percent [15]. For the point estimate to transfer to another deployment you would need the same Grok build, the same tools enabled, a prompt that actually triggers a fetch, and a page the model reads through; the account gives one aggregate number and no breakdown of which attempts failed [16].
The gap between the report and the last successful retest is 77 days [13]. Adversa says it followed up twice in that window, on 4 and 10 August [9]. By the write-up, what came back was an acknowledgement that the report had been received, with no patch, no CVE identifier and no public advisory [10]. The dev.to account is explicit about what it cannot see: "We are not claiming anyone acted in bad faith, and we can't see inside xAI's triage queue" [11].
One team, one product, about 20 attempts, and no independent reproduction in this account. That does not establish that every assistant with web access and conversation memory leaks by default. It does describe the three capabilities any such assistant has, which the write-up sums up as read this page, run this, go and fetch that [17]. Grok's exposure is the larger one because it is a shipping consumer product attached to a social network with hundreds of millions of accounts [12].
What to watch
- A patch, a CVE identifier or a user-facing advisory from xAI would change what the 77-day window documents.
- Independent reproduction on another assistant that fetches, executes and then navigates would move this from one product to a class of designs.
- A larger trial count from Adversa would narrow the interval around the 40 percent figure.