ZombieAgent Shows How Connector Prompt Injection Can Persist and Spread
Radware showed how hidden instructions in email or documents read through ChatGPT connectors could turn a task into data exfiltration. Fixed URLs encoded stolen text one character per request, Memory preserved instructions across chats, and a contact-harvesting branch spread the payload; Radware says OpenAI fixed it on December 16, 2025. Workspace administrators can disable unnecessary connectors or Memory and narrow or revoke grants, while platform implementers own raw-content isolation, Memory gates, and default-deny egress; value-level sink checks cover only explicit transfers retaining server-side content IDs.
Threat Analysis
- A normal connector task delivers the instruction. The attacker hides a prompt in an email or document. When a later user request causes ChatGPT to retrieve that source, the model can treat the hidden text as authority.
- Static URLs carry the stolen value. The prompt supplies a fixed URL alphabet. The model selects one existing URL per character, and the resulting request sequence encodes sensitive text without constructing or modifying a URL.
- Memory turns one retrieval into persistence. A malicious source can instruct ChatGPT to save a recurring trigger and collected sensitive information in Memory, allowing the behavior to reappear in later chats.
- Contact theft enables propagation. One branch extracts recent email addresses. The attacker's server, not ChatGPT itself, then sends the malicious email to those recipients.
- This was controlled research. Radware says OpenAI fixed the reported issue on December 16. OpenAI later described source-sink analysis and Safe Url defenses, but public material does not establish that every persistence and propagation variant was eliminated.
Applicable AIDEFEND Defenses (6)
What Defenders Should Do Now
- Workspace administrators: inventory which workspaces expose email, document, and storage connectors and which users have Memory enabled. Disable unused features, reduce OAuth and data scopes, and revoke grants that are no longer required.
- Platform implementers: keep raw email and document text away from the tool-capable model. Use a no-tool quarantined model plus a validating broker that releases only allowlisted domain fields and opaque record IDs; reject generic free-text summaries.
- Platform implementers: bind every request to the user's original intent. A read or summary task should not gain contact search, Memory write, external fetch, remote-media, or messaging authority without a separate trusted action.
- Platform implementers: quarantine every memory proposed from external content. Require a content-bound promotion decision, and make the recall policy consume detector findings before prompt assembly.
- Platform implementers: default-deny outbound URLs and remote subresources. Test fixed URL alphabets, one-character request sequences, Markdown images, previews, redirects, approved-domain abuse, and repeated server-side fetches.
- Incident responders: preserve connector, Memory, URL-fetch, and outbound-message evidence; remove suspicious memories; revoke affected connector grants; review recently accessed data and contacts; and notify recipients of attacker-sent messages.
1 additional consideration
Control-dependent fixed-URL encoding
Conclusion
ZombieAgent combines three boundaries that must be enforced separately: untrusted connector content, durable assistant memory, and outbound network effects. Fixing one URL-construction path does not make retrieved text trustworthy or a memory write safe. A resilient design isolates raw content, requires explicit promotion into trusted memory, makes downstream policy act on every recall finding, and blocks unapproved egress while testing the fixed-URL control-flow channel separately.