The Web's Attack Surface Just Switched Sides

On August 4 a federal appeals court ruled that an AI shopping agent is, legally, its user. I wrote about that decision last week. The same week, at the Black Hat security conference in Las Vegas, a Brave engineer named Artem Chaikin presented a year of research on AI browsers. Every one he analyzed could be steered by instructions hidden in a web page. Data theft and account takeover, from the act of reading. Put the two events together and the story of the month inverts. For twenty years, the web's bot problem ran in one direction: sites defending themselves against automated visitors. The agent era reverses the arrow. The bot now carries your login, your inbox and your saved card, and the page it visits is the attacker.

One comment, one click, one stolen account

The attack class is called indirect prompt injection: instructions planted in content an agent reads, which the model cannot reliably tell apart from its owner's orders. The canonical demonstration is a year old. In August 2025, Brave's researchers hid instructions behind a spoiler tag in a Reddit comment and asked Perplexity's Comet browser to summarize the page. The agent read the comment and followed it. It opened the victim's account page and read their email address. It triggered a one-time login code. It opened the victim's logged-in Gmail, read the code, and posted both into the Reddit thread for the attacker to collect. One click on "summarize", one hijacked account.

Everything since has been variations on the ink. Faint light-blue text on a yellow background, invisible to the person but recovered by the browser's own screenshot OCR, which is text recognition run on the image. White text on a white background driving Gmail exfiltration in OpenAI's Atlas during its first week. Hidden HTML in Opera Neon. One browser, Fellou, could be injected by the act of visiting a page.

A year of agents losing to the pages they readTimeline of public prompt-injection disclosures against agentic browsers. August 20, 2025: Perplexity Comet hijacked through a hidden Reddit comment in a full account-takeover demonstration by Brave. October 21, 2025: Comet read invisible ink in screenshots through OCR, and the Fellou browser was injected by simply visiting a page. October 28, 2025: ChatGPT Atlas attacked in its first week with white-on-white text and omnibox injection. October 31, 2025: Opera Neon fell to instructions hidden in HTML. August 5 to 6, 2026, highlighted: at Black Hat USA, every AI browser analyzed proved vulnerable, layered defenses included.A year of agents losing to the pages they readPublic prompt-injection disclosures against agentic browsers, Aug 2025 to Aug 2026Aug 20, 2025Perplexity Comet hijacked by a hidden Reddit comment:a full account-takeover demo (Brave)Oct 21, 2025Comet reads invisible ink in screenshots via OCR;Fellou injected by simply visiting a page (Brave)Oct 28, 2025ChatGPT Atlas attacked in week one: white-on-white text,omnibox injection (The Register)Oct 31, 2025Opera Neon falls to instructions hidden in HTML (Brave)Aug 5-6, 2026Black Hat: every AI browser analyzed proved vulnerable,layered defenses included (Dark Reading)Sources: Brave Software disclosures, August 20, October 21 and October 31, 2025;The Register, October 28, 2025; Dark Reading coverage of Black Hat USA 2026, August 2026
View data table
Public prompt-injection disclosures against agentic browsers, August 2025 to August 2026
DateEventSource
Aug 20, 2025Perplexity Comet hijacked through a hidden Reddit comment; full account-takeover demonstrationBrave Software
Oct 21, 2025Comet reads invisible ink in screenshots via OCR; Fellou injected by visiting a pageBrave Software
Oct 28, 2025ChatGPT Atlas attacked in its first week: white-on-white text, omnibox injectionThe Register
Oct 31, 2025Opera Neon falls to instructions hidden in HTMLBrave Software
Aug 5-6, 2026Black Hat USA: every AI browser analyzed proved vulnerable, layered defenses includedDark Reading

Defense in depth, bypassed anyway

The Black Hat session matters because it graded the fixes, not the launches. A year of disclosures bought real defensive work. Atlas carries the most visible stack: system-level prompting, tags marking content trusted or untrusted, a second model scanning for attacks, approval prompts before sensitive actions. Chaikin got through anyway, per Dark Reading's account of the talk. Attackers could mimic the trusted-content tags in their own page, so the poison arrived pre-labeled as safe. Data smuggled out through URL fragments was not scanned at all.

The detail I keep thinking about is quieter. Free-tier users who hit their usage cap were downgraded to a cheaper model, and the cheaper model was easier to inject. Nobody designed that. It is what happens when a security boundary lives inside a model whose strength varies with the customer's plan. Readers of this site's passports essay will recognize the shape: on the agentic web, even your attack surface has a pricing tier.

The researchers closest to this bug class do not describe it as a patch backlog. Johann Rehberger, who found several of the Atlas attacks: "Prompt injection cannot be 'fixed.' As soon as a system reads untrusted data and includes it in an LLM query, the untrusted data influences output." OpenAI's own security chief calls it a frontier, unsolved problem. Every fix so far filters the ink. The next disclosure finds new ink.

The old war, with the sides swapped

I have spent years on the other side of this arrow. In web data collection, the page defends and the visitor's software adapts, and an entire bot-management industry sells that defense. Every move in the new fight is a twenty-year-old move with the sign flipped. Hidden text was cloaking, a trick sites used to show crawlers different content than humans. Now it steers the crawler's descendants. The wall used to face outward. The valuable software is now on the visitor's side of it, so the wall has to turn around.

The court ruling is what makes this load-bearing. Authorization now flows from the user through the agent, which means the agent legally holds the richest thing on the web: a logged-in session with money and mail behind it. I am not outside this blast radius. This essay was researched by an agent reading web pages unattended on my server, the same fleet of scheduled jobs I inventoried in the Claude 5 migration essay, and that machine has my email tooling wired into the agent runtime. Untrusted pages plus reachable credentials in one context is exactly the combination every disclosure above exploits. The only honest defense I know is structural: the research agent works in a repository, and nothing it publishes skips a human gate.

If the model cannot be trusted to ignore the ink, the session has to be too poor to rob. Brave's stated architecture points there: agent profiles logged out by default, a floor under model strength, checks that the agent's actions still match the user's ask. So does the containment turn in the ruling's wake. My falsifiable read: by the end of 2027, no major AI browser still runs its agent inside the user's full logged-in profile by default. Sessions become scoped, granted per task, and revoked after. If Comet, Atlas and their successors still default to the open session eighteen months from now, this essay aged badly, and somebody's incident report will explain why. The courts spent this summer deciding the bot is the user. The engineering lesson of the same week is that the bot is also the victim, and the web it browses was never friendly territory.