Safeguard
AI Security•

What two ATLAS case studies teach about RAG attacks

Two MITRE ATLAS case studies, the Morris II worm and Slack AI exfiltration, show how a RAG index becomes an attack path. Here are the design lessons.

Safeguard Security Team
4 min read

Two case studies in MITRE ATLAS show the same pattern in RAG systems: untrusted text reaches the index, a later query retrieves it, and the model follows it. Morris II was a research worm that spread through an email assistant. The Slack AI case showed private data leaving through a public channel post.

Case one: Morris II

ATLAS describes Morris II as a zero-click worm built by researchers to attack generative AI ecosystems and spread between connected systems. It uses an adversarial self-replicating prompt that relies on prompt injection to copy itself into the model's output.

The researchers showed it on an email system with a RAG-based assistant. The target automatically ingests incoming mail, retrieves past correspondence and drafts a reply. A malicious email lands in the RAG database. Its instructions tell the assistant to include sensitive user data in the reply. Later requests may retrieve that email again, so the prompt replicates and the leak continues.

The design lesson: the assistant treated an incoming email as both data and instruction, and it wrote that email into a store it would trust later.

Case two: Slack AI

ATLAS records that a security firm demonstrated that private data could be exfiltrated from Slack AI through indirect prompt injection. The attack relied on Slack AI ingesting a malicious prompt from a post in a public channel into its RAG database, and then a victim user querying Slack AI, which caused the prompt to be retrieved and executed.

The design lesson here is about trust boundaries. Content that anyone in a public channel can write ended up in the same retrieval pool as content a user would later ask about privately.

What both have in common

  • The attacker never touched the model directly. They only needed to write somewhere the index reads.
  • The harm happened at retrieval time, not ingestion time. A scan at upload can miss it.
  • The output path mattered. Each case needed a way for data to leave, through a reply or a rendered response.

Design changes that follow

Separate the write path from the trust level. Content from untrusted authors should be tagged as untrusted at ingestion, and retrieval should carry that tag into the prompt.

Do not auto-ingest what the assistant produces. Writing model output or incoming mail back into the index without review creates the loop that Morris II used.

Control what leaves. Limit what the assistant can include in a reply or a link, and check outputs with code that is not the model.

Permission-check retrieval. The retrieval step should respect who is asking. The permission-aware retrieval guide covers this.

Log retrievals. If you can see which chunk drove an answer, you can find the poisoned one. See what to log for RAG incident response.

Using case studies well

Read them for the mechanism, not the product. The same steps apply to any assistant that reads text from people you do not control. ATLAS holds many more case studies, and each links to the techniques it used, so you can go from a story to the control you would need.

Quick check

Do these attacks need the attacker to be inside the company?

Not in these cases. Morris II needed to send an email to the target, and the Slack AI case needed a post in a public channel.

Would an input filter at upload have stopped them?

It might catch some payloads, but filters are not complete. Controls at retrieval time and on outputs are needed as well.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.