# Claude in Chrome Prompt Injection Steals Gmail Codes to Hijack Slack, X, and Claude.ai Accounts

> Zenity Labs researchers Raul Klugman-Onitza and João Donato demonstrated an indirect prompt-injection attack chain against the Claude in Chrome browser extension: a malicious email with hidden instructions manipulates Claude into loading an attacker-controlled JavaScript package from a fake CDN registry via its javascript_tool, running inside the victim's authenticated browser session. That code polls the victim's Gmail Atom feed to harvest Slack sign-in codes, X password-reset codes, and Claude.ai magic-link nonces, enabling full account takeover of all three services (plus persistent Google Drive access) from a single email the user asked Claude to summarize.

- **Published:** 2026-08-09T00:00:00Z
- **Last reviewed:** 2026-08-09T00:00:00Z
- **Canonical:** https://intel.threadlinqs.com/threat/TL-2026-1953
- **Card image:** https://intel.threadlinqs.com/og/threat/threat-intel-claude-in-chrome-account-hijacking-tl-2026-1953.webp?v=4bbe1a10 (Threadlinqs threat intel: Claude in Chrome Prompt Injection Attack: Detection & IOCs (TL-2026-1953) — High severity, 11 IOCs, 9 detection rules.)
- **ID:** TL-2026-1953
- **Severity:** HIGH
- **Category:** VULNERABILITY
- **Status:** ACTIVE
- **Detections:** 9 (1 shown free below) · **IOCs:** 11 (3 shown free below)

## Description

Zenity Labs' "Claude in Chrome: From alert(1) to Full Account Takeover" (published 2026-08-05, covered by Cyber Security News, GBHackers, and Cyberpress on 2026-08-07) documents an indirect prompt-injection (IPI) chain against Anthropic's Claude in Chrome extension that escalates from a single malicious email into cross-service account takeover.

The attack begins when a victim asks Claude to summarize recent emails. A malicious message in the inbox contains hidden instructions (embedded in message text, disguised conversation-turn structures, and text hidden inside images) that Claude ingests as if they were legitimate user directives. The IPI payload directs Claude to invoke its javascript_tool — a Chrome-extension capability Claude's own system prompt describes as general-purpose JavaScript execution — against a package hosted on esm-sh.com, a domain registered by the researchers to typosquat the legitimate esm.sh CDN. The researchers characterize javascript_tool as exploitable on "any domain," i.e. a Universal XSS primitive: the fetched package advertises itself as a trivial UUID generator, returns a correctly-formatted UUID to avoid raising suspicion, and silently executes an entirely different, attacker-authored payload underneath.

Because the JavaScript runs inside the extension's browser context, every request it issues automatically carries the victim's existing authenticated session cookies. The payload queries Gmail's Atom feed (https://mail.google.com/mail/u/0/feed/atom) for unread-message metadata, converts message IDs to hexadecimal to pull full message bodies from Gmail, and exfiltrates parsed results via POST to an attacker-controlled server — all without further user interaction.

From that single foothold, the researchers built three account-takeover paths that abuse the ambient Gmail access as a universal out-of-band verification channel:

- Slack: the attacker-controlled Claude instance drives Slack's email-based sign-in flow, defeats Slack's CAPTCHA using a jailbreak prompt that overrides Claude's own safety guardrails, waits for Slack's confirmation code to land in the victim's Gmail, and polls the Atom feed to extract it, completing authentication as the victim.
- X (Twitter): the payload reimplements X's internal password-reset API end-to-end, including activating guest tokens and stepping through X's multi-stage, anti-automation-hardened challenge flow (requiring the researchers to reverse-engineer stateful API behavior), then extracts the reset code from Gmail the same way and receives a valid session auth_token in the API response.
- Claude.ai: the payload navigates to https://claude.ai/login, triggers /api/auth/send_magic_link, extracts the login nonce from the magic-link URL delivered to Gmail via the Atom feed, and exchanges it through /api/auth/exchange_magic_link and /api/auth/verify_magic_link to mint an authenticated session cookie — a full account takeover of Claude.ai itself, exposing chat history, uploaded files, and any connected Google Drive/Gmail/Calendar/Slack/GitHub data.

A parallel persistence payload separately abuses Google Drive: it scrapes file IDs from data-id HTML attributes in the Drive UI, forges SAPISIDHASH authorization tokens (SHA-1 over the session SAPISID cookie), pulls API keys out of Drive's own sharing dialogs, and batch-adds the attacker as a writer on every file the victim can access via Google's internal clients6.google.com API — with the IPI tricking Claude into approving the required Drive domain access through its own update_plan confirmation mechanism.

Zenity Labs submitted the initial IPI finding to Anthropic via HackerOne on 2025-12-27 and a follow-up account-takeover report on 2026-01-13 (marked a duplicate); Anthropic closed the original report as "Informative" and ruled the ATO report ineligible for its Vulnerability Disclosure Program on 2026-01-27. Zenity states the underlying risk "persists to this day" as of publication. The researchers frame the root cause as architectural rather than a single patchable bug: giving an AI agent powerful, unscoped browser-level tools (specifically javascript_tool) while simultaneously exposing that same agent to untrusted, attacker-influenced web/email content.

This specific Claude-in-Chrome chain is one instance of a broader vulnerability family Zenity Labs calls "Intent Collision" (marketed as "PleaseFix"), first disclosed against Perplexity Comet in March 2026 and expanded in an August 5, 2026 disclosure to cover Claude in Chrome, Gemini, Perplexity Comet, ChatGPT Atlas, and Copilot Edge: hidden instructions placed in ordinary agent-consumed content (emails, calendar invites, web pages) redirect an agentic browser into acting on the attacker's behalf using the victim's own identity and permissions. No CVE or CVSS score has been published for the Claude-specific chain.

## MITRE ATT&CK

- T1583.001 Domains
- T1608 Stage Capabilities
- T1195 Supply Chain Compromise
- T1036 Masquerading
- T1027 Obfuscated Files or Information
- T1059.007 JavaScript
- T1114 Email Collection
- T1111 Multi-Factor Authentication Interception
- T1550.004 Web Session Cookie
- T1528 Steal Application Access Token
- T1098 Account Manipulation
- T1567 Exfiltration Over Web Service
- AML.T0051.001 Indirect
- AML.T0053 AI Agent Tool Invocation
- AML.T0011.001 Malicious Package
- AML.T0054 LLM Jailbreak
- AML.T0091.001 Web Session Cookie

## Free detection (Splunk SPL, Microsoft KQL, Sigma)

**Automated Gmail Atom Feed Polling for Slack/X/Claude.ai OTP and Magic-Link Harvesting** (`TL-2026-1953-SPL-002`)

Detects scripted, high-frequency GET requests to the Gmail Atom feed endpoint (mail.google.com/mail/u/0/feed/atom) consistent with an agentic-browser IPI payload polling the victim's inbox for Slack sign-in codes, X password-reset codes, and Claude.ai magic-link nonces without corresponding human interaction. This is the post-exploitation credential-harvesting core of the attack chain — it converts a single compromised browser session into a universal out-of-band verification channel.

- **Languages:** Splunk SPL, Microsoft KQL, Sigma
- **ATT&CK:** T1114, T1111, T1567, T0053
- **Data sources:** proxy_web_logs, google_workspace_audit_logs, browser_extension_telemetry
- **Severity:** critical
- **Confidence:** high

### Splunk SPL

```spl
index=proxy sourcetype=*proxy*
url="*mail.google.com/mail/u/0/feed/atom*"
| bucket _time span=1m
| stats count as req_count, dc(uri_query) as distinct_queries, values(user_agent) as user_agents by src_ip, user, _time
| where req_count >= 5
| eval avg_interval_sec=60/req_count
| sort - req_count
```

### Microsoft KQL

```kql
DeviceNetworkEvents
| where Timestamp > ago(24h)
| where RemoteUrl has "mail.google.com/mail/u/0/feed/atom"
| summarize RequestCount = count(), Processes = make_set(InitiatingProcessFileName) by DeviceName, AccountName, bin(Timestamp, 1m)
| where RequestCount >= 5
| order by RequestCount desc
```

### Sigma

```yaml
title: High-Frequency Automated Requests to Gmail Atom Feed Endpoint
id: 1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e
status: experimental
description: Detects scripted polling of the Gmail Atom feed (mail.google.com/mail/u/0/feed/atom) at a frequency inconsistent with normal interactive email checking, indicating automated harvesting of unread-message metadata for OTP/magic-link theft.
references:
  - https://labs.zenity.io/post/claude-in-chrome-from-alert-to-full-account-takeover
author: Threadlinqs Team
date: 2026-08-09
tags:
  - attack.collection
  - attack.t1114
  - attack.credential-access
  - attack.t1111
  - attack.exfiltration
  - attack.t1567
cve: []
logsource:
  category: proxy
detection:
  selection:
    url|contains: 'mail.google.com/mail/u/0/feed/atom'
  timeframe: 1m
  condition: selection | count() by src_ip > 4
falsepositives:
  - Legitimate low-frequency unread-count widgets or Gmail-checking browser extensions
  - Mail monitoring/SOC dashboards polling the same feed for operational purposes
level: critical
```

**Known false positives:**

- Legitimate email clients/extensions (e.g. unread-count widgets) that poll the Atom feed at low frequency — typically well under the 5-req/min threshold
- Internal mail-monitoring dashboards intentionally polling the same feed

**Tuning notes:** Baseline normal Atom-feed polling cadence per user/extension before enabling in blocking mode — legitimate widgets typically poll every 5-15 minutes, well below this rule's 5-requests-per-minute threshold. Tighten or loosen the threshold per tenant, and correlate with a recent javascript_tool/extension-install event or the esm-sh.com fetch (SPL/KQL/SIG-001) to raise confidence and cut noise from other legitimate high-frequency pollers.

### 8 more detection rules (Splunk SPL, Microsoft KQL, Sigma), unlock with TL Creds

- Sentinel: Browser Process Network Connection to Typosquat CDN Serving javascript_tool Payload (locked: unlock with TL Creds)
- Sentinel: CloudAppEvents Correlation of Gmail Atom Feed Abuse with Recent Extension Tool Invocation (locked: unlock with TL Creds)
- Sentinel: CloudAppEvents Cross-Service Correlation of Slack/X/Claude.ai Sign-In Flows Following Gmail Access (locked: unlock with TL Creds)
- Sigma: HTTP/DNS Request to [indicator] Typosquat CDN (locked: unlock with TL Creds)
- Sigma: Gmail Atom Feed Polling Rate Threshold Exceeded (locked: unlock with TL Creds)
- Sigma: Google Drive clients6.google.com API Call with SAPISIDHASH Authorization Header (locked: unlock with TL Creds)
- Claude in Chrome javascript_tool Fetch of Typosquat [indicator] Package (IPI Payload Stage) (locked: unlock with TL Creds)
- Cross-Service Account-Takeover Chain: Claude.ai Magic-Link Exchange and Forged SAPISIDHASH Drive Persistence (locked: unlock with TL Creds)

Sign up free to unlock the detection rules: https://threadlinqs.com/?modal=signup

## Sample indicators (3 of 11)

Defanged, TLP:CLEAR.

- Domain: `esm-sh[.]com`
- URL: `hxxps://mail[.]google[.]com/mail/u/0/feed/atom`
- URL: `hxxps://claude[.]ai/login`

Full set of 11 indicators unlocks with TL Creds: https://threadlinqs.com/tl-creds

## Sources

- [Claude in Chrome Prompt Injection Steals Gmail Codes to Hijack Slack, X, and Claude.ai Accounts](https://cybersecuritynews.com/claude-chrome-prompt-injection/)
- [Claude in Chrome: From alert(1) to Full Account Takeover](https://labs.zenity.io/post/claude-in-chrome-from-alert-to-full-account-takeover)
- [Claude in Chrome Exploit Lets Attackers Steal Gmail Codes and Take Over Slack, X, and Claude.ai Accounts](https://gbhackers.com/claude-in-chrome-exploit/)
- [Claude in Chrome Prompt Injection Flaw Enables Slack, X, and Claude.ai Account Takeovers](https://cyberpress.org/claude-in-chrome-prompt-injection-flaw/)
- [Zenity Labs Exposes the Full Scope of PleaseFix, a Vulnerability Class Enabling Zero-Click Attacks Across Leading Agentic Browsers](https://www.businesswire.com/news/home/20260805803998/en/Zenity-Labs-Exposes-the-Full-Scope-of-PleaseFix-a-Vulnerability-Class-Enabling-Zero-Click-Attacks-Across-Leading-Agentic-Browsers)
- [Zenity Labs Discloses PleaseFix Vulnerability Family in Perplexity Comet and Other Agentic Browsers](https://www.businesswire.com/news/home/20260303909038/en/Zenity-Labs-Discloses-PleaseFix-Vulnerability-Family-in-Perplexity-Comet-and-Other-Agentic-Browsers)
- [PleaseFix Vulnerability: Perplexity Comet Zero-Click Agent Hijack](https://zenity.io/company-overview/newsroom/company-news/zenity-labs-discloses-pleasefix-perplexedagent-vulnerability)

## Full data

The other 8 detection rules (Splunk SPL / Microsoft KQL / Sigma) unlock with TL Creds; a free account includes daily creds: https://threadlinqs.com/?modal=signup
Indicator values unlock with TL Creds, at a lower price on Red and Purple; AI agents can query rules and IOCs through the Threadlinqs MCP server (Purple): https://intel.threadlinqs.com/mcp

Canonical: https://intel.threadlinqs.com/threat/TL-2026-1953
