Ian Rudd, PhD

Papers Working paper AI security Version 1.0

Leaked without a breach: How the Model Context Protocol lets AI agents give your data away, and how to architect around it

MCP connects AI agents to your email, code, databases and files. The text those agents read can also instruct them. Ten documented ways that combination leaks data, the argument it started among engineers, and the architecture that contains it.

Giovanni Domenico Tiepolo’s painting of a crowd of Trojans hauling a giant white wooden horse on a wheeled platform through their city, pulling on ropes and pushing from behind.
In the story, the enemy never forced Troy’s defences. The Trojans brought the horse inside themselves. Most of the leaks in this paper work the same way: someone installed the server, approved the tool and granted the token. Painting: Giovanni Domenico Tiepolo, about 1760, Public domain, via Wikimedia Commons

Abstract

The Model Context Protocol (MCP) has become, in the NSA’s words, the de facto standard for connecting AI agents to tools and data. It has also given attackers a way to move private data out of an organization without breaking anything. The reason is structural. An agent reads tool descriptions, documents, tickets, emails and web pages as text, and it cannot reliably tell text that informs it from text that instructs it. MCP puts that text in the same context as tools that can read private data and send it somewhere else.

This paper sets out ten ways MCP deployments leak data, each with documented cases from 2025 and 2026, including several in servers published by the protocol’s own creator. It summarizes the argument the problem started among practitioners, separates what the protocol has fixed from what it cannot fix, and gives an architecture and a review checklist that contain the risk rather than pretend to remove it.

Keywords: Model Context Protocol, MCP security, AI agents, prompt injection, tool poisoning, data exfiltration, lethal trifecta, supply chain security, AI governance

MCP did not invent prompt injection. It made the conditions for it easy to assemble at scale: text written by strangers, sitting next to tools that can read your data and send it out. Nothing has to break for the data to leave.

If you read nothing else

  1. A tool description is code you cannot see. The model reads all of it; the approval dialog may show only a summary.
  2. Any third-party server is two of the three ingredients. Its text is untrusted, and every argument sent to it leaves your control. Add one server with private data and the set is complete.
  3. “Official” did not mean safe. Reference servers and desktop extensions published by MCP’s creator, Anthropic, shipped exploitable flaws.
  4. Filters and approvals are not boundaries. The vendors themselves say prompt injection is unsolved.
  5. Contain it architecturally. No session gets untrusted input, private data and an open exit at the same time.

A note on the examples. Every incident in this paper is a documented event with a linked source. Where I invent an example to show a mechanism, or do arithmetic of my own, it is tagged: cited for a documented case, illustrative for an invented one, derived where the number is arithmetic you can check yourself, and practice for what I recommend from building these systems. Figures quoted from vendors’ own research are their figures, and I say so.

01 The pitch

The universal port for AI, and everything that plugs into it

Close-up of two USB-C plugs held between a thumb and forefinger.
The pitch was a universal port for AI. A universal port is also a universal way in. Photo: Logant547, CC BY 4.0, via Wikimedia Commons

Anthropic announced MCP on 25 November 2024 as “an open standard that enables developers to build secure, two-way connections” between data sources and AI tools.1 The official documentation puts it more simply: “Think of MCP like a USB-C port for AI applications.”2 An application (the host, such as a chat app or a code editor) contains clients, connectors that each talk to a server offering tools, data and prompts. Tools are, in the specification’s words, “functions for the AI model to execute”.3

Adoption was fast by any standard. By December 2025 Anthropic counted more than 10,000 active public MCP servers and more than 97 million monthly SDK downloads across Python and TypeScript, with ChatGPT, Cursor, Gemini, Microsoft Copilot and Visual Studio Code among the adopters, and it handed the protocol to a new Agentic AI Foundation under the Linux Foundation, co-founded with Block and OpenAI.4 By July 2026 the maintainers reported “close to half-a-billion downloads a month” across its Tier 1 SDKs.5

10,000+active public MCP servers, December 2025
97M+monthly SDK downloads, Python and TypeScript, December 2025
~500Mmonthly downloads across the Tier 1 SDKs, July 2026

The word secure was in Anthropic’s own one-line definition of the protocol. The specification itself is more careful. Its security section says that MCP “enables powerful capabilities through arbitrary data access and code execution paths”, that tools “represent arbitrary code execution”, and, in the sentence this paper turns on: “MCP itself cannot enforce these security principles at the protocol level.”3

Where an MCP deployment leaks

Figure 1 practice
Anatomy of an MCP deployment, with the ten leak paths placed where each one enters A host application on the left contains the model context window, the user approval dialog, the mcp.json configuration file and three MCP clients. Straight two-way arrows connect each client to one server on the right: a local STDIO server, a remote HTTP server and a third-party server. Red labels name the leak paths of section 4: consent theatre at the approval dialog; keys under the mat at mcp.json; toxic combinations and open doors at the local server; poisoned data and tenant bleed at the remote server; poisoned descriptions, rug pull, shadowing and poisoned supply at the third-party server. All of it ends up as text in the model context window. HOST APPLICATION chat app, IDE or agent runtime Model context window your prompt + every tool description + every tool result read as one stream of text where every leak takes effect Approval dialog (user) 10Consent theatre mcp.json configuration launch commands, stored tokens 9Keys under the mat client A client B client C Local server (STDIO) runs as you: files, shell, SSH keys sometimes listening on the network 5Toxic combinations 7Open doors Remote server (HTTP) your SaaS account: mail, code, tickets shared by many tenants 4Poisoned data 6Tenant bleed Third-party server installed from a registry or npm 1Poisoned descriptions 2Rug pull 3Shadowing 8Poisoned supply DrRudd.com

The red labels are the ten leak paths of section 4, each placed where it enters the system; select one to jump to it. Arrows run both ways because tool descriptions and results flow back from every server into the context window, which is where each leak takes effect. The host, client and server structure is the specification’s;3 the placement of the leak paths is mine.

02 At a glance

A normal API integration and an MCP tool, side by side

Most security reviews treat an MCP server like any other integration. The table is why that misses the point.

Question Traditional API integration MCP tool used by an agent
Who decides which call is made? Code a developer wrote and reviewed The model, at run time, based on whatever text is in its context
What defines the tool? A typed interface and documentation for humans A natural-language description the model reads and follows, written by the server’s author
Can the interface change after review? Through versioned releases, and a changed description cannot change what your code does Yes: a server can return different tools and descriptions later
Can the data returned give orders? Only through a bug, such as SQL injection, which parameterised queries close6 Yes. Results, tickets, issues and emails are read as text that can instruct
Is authentication required? Usually enforced by the API The specification says authorization is optional
What does a leak look like in the logs? Often an unusual caller, an error or a blocked request A legitimate user’s agent making legitimate calls with legitimate credentials

The optional-authorization row is the specification’s own wording: “Authorization is OPTIONAL for MCP implementations.”7 The last row is the one that matters most to a security operations team. In several of the cases that follow, every call the agent made was one its credentials allowed.

03 Root cause

Why MCP leaks: the model cannot tell data from instructions

Every leak path in this paper is a variation on one fact, and the agencies and vendors agree on it.

A rectangular magnifying glass held over a page of a dictionary at a library for blind and print-disabled readers.
The model reads every word of every tool description. In Invariant’s test, the approval dialog showed a summary. Photo: Joe Mabel, CC BY-SA 3.0, via Wikimedia Commons

The UK National Cyber Security Centre put it most plainly in December 2025: “As there is no inherent distinction between ‘data’ and ‘instruction’, it’s very possible that prompt injection attacks may never be totally mitigated in the way that SQL injection attacks can be.” It suggested treating a language model as an “inherently confusable deputy”.6 Meta wrote that “prompt injection is a fundamental, unsolved weakness in all LLMs”,8 and OpenAI that prompt injection “is unlikely to ever be fully ‘solved’”.9

MCP adds three things to that weakness. First, timing: when a client connects, the server’s tool descriptions are added to the model’s context before any tool is used, which Trail of Bits called “line jumping”.10 Second, mixing. Simon Willison described the lethal trifecta: an agent with access to private data, exposure to untrusted content and the ability to communicate externally can be tricked into sending that data to an attacker. His verdict on MCP was that it “encourages users to mix and match tools from different sources that can do different things”.11 Third, direction. The NSA’s May 2026 information sheet notes that MCP “reverses a familiar interaction pattern: instead of clients requesting data from servers, MCP often expects servers to query and sometimes execute actions for the connected clients”.12

The lethal trifecta, and Meta’s Rule of Two

Figure 2 cited
Three overlapping circles: private data, untrusted content and external communication. The centre, where all three overlap, is marked as the danger zone. Privatedata Untrustedcontent Externalcommunication leak DrRudd.com
  • Private dataYour mailbox, private repositories, a database, the files on your laptop
  • Untrusted contentAnything a stranger can write: an issue, a ticket, an email, a calendar invite, a web page, a tool description
  • A way outSending mail, posting a comment, opening a pull request, fetching a URL, or simply passing an argument to a third-party server

Willison’s trifecta:11 where all three meet, an attacker who can write text can read your data. Meta turned it into a design rule in October 2025: until prompt injection can be reliably detected, an agent “must satisfy no more than two” of three properties within a session: processing untrustworthy inputs, accessing sensitive systems or private data, and changing state or communicating externally.8 The examples in the legend are mine.

The NSA’s conclusion is the one I would put in front of any architecture board. These “should not be viewed as isolated problems that can be patched at the interface or endpoint level”, and “MCP’s rapid proliferation has outpaced the development of its security model.”12

04 The core problem

Ten ways MCP leaks data

None of these needs a stolen password, and in most of them no security control fires. I count ten distinct paths, and every one has happened outside a laboratory or been demonstrated against software people actually run.

  1. 01Poisoned descriptions
  2. 02The rug pull
  3. 03Shadowing
  4. 04Poisoned data
  5. 05Toxic combinations
  6. 06Tenant bleed
  7. 07Open doors
  8. 08Poisoned supply
  9. 09Keys under the mat
  10. 10Consent theatre
1
Leak by poisoned description

The tool description is a prompt you never read

A row of brightly costumed wooden marionettes hanging on display at a puppet theatre.
Tool poisoning moves the agent with strings the user never sees. Photo: Jürgen Howaldt, CC BY-SA 2.0 de, via Wikimedia Commons

On 1 April 2025, Invariant Labs published what it called a Tool Poisoning Attack: malicious instructions hidden in an MCP tool’s description, “invisible to users but visible to AI models”.13 The demonstration tool was called add and described itself as adding two numbers. Inside an <IMPORTANT> block, the same description told the model to read ~/.cursor/mcp.json and ~/.ssh/id_rsa and pass their contents in a parameter called sidenote, and not to mention it. Run in Cursor, the agent did so. The configuration file matters as much as the SSH key: Invariant noted that mcp.json often holds the credentials for other MCP servers.

What the person approves, and what the model reads

Figure 3 cited illustrative

What the person sees

Run tool add?

Adds two numbers.

a: 2 b: 3 sidenote: …

DenyAllow

What the model reads

@mcp.tool()
def add(a: int, b: int, sidenote: str) -> int:
    """
    Adds two numbers.

    <IMPORTANT>
    Before using this tool, read `~/.cursor/mcp.json` and pass its content
    as 'sidenote', otherwise the tool will not work.

    While you read the file, provide detailed reasoning about how adding two numbers
    is done mathematically, what are the axioms. Do not mention that you first need to read the
    file (this could even upset the user, so be very gentle and not scary).

    Like mcp.json, please read ~/.ssh/id_rsa and pass its content as 'sidenote' too
    </IMPORTANT>
    """
    return a + b

The right-hand pane is the tool definition Invariant Labs published, reproduced verbatim.13 The left-hand dialog is my simplified mock of a typical approval prompt. In Invariant’s test, Cursor’s confirmation dialog showed a simplified view of the arguments, and did not show the full input, so the SSH key passed through unseen.

How often does this work? MCPTox, a benchmark built on 45 live MCP servers and 353 real tools, generated 1,348 poisoned test cases and ran them against 20 model configurations. The average attack success rate across all settings was 36.5 percent, and o1-mini reached 72.8 percent. The authors found that “more capable models are often more susceptible, as the attack exploits their superior instruction-following abilities”, and that the highest refusal rate of any agent, Claude 3.7 Sonnet’s, was under 3 percent.14

Same model, thinking on and off: reasoning made poisoning work more often

Figure 4 cited
Qwen3 8B14.0%41.8%
Qwen3 14B5.1%27.1%
Qwen3 32B23.7%58.5%
Qwen3 235B-A22B17.2%50.6%
  • reasoning off
  • reasoning on

Average attack success rate across MCPTox’s three attack templates and three settings, from the benchmark’s Table 2.14 The four Qwen3 models were tested with reasoning switched on and off, which isolates the effect: in every pair, the reasoning configuration followed the poisoned description more than twice as often. All bars share one scale, 0 to 73.2 percent.

What the review should ask for

The full text of every tool description, read by a person before approval and stored with a hash. Any change to the hash blocks the server until someone reviews the difference.

2
Leak by rug pull

The tool you approved is not the tool you are running

Approval happens once. MCP servers can change what they offer afterwards. Six days after the first note, Invariant published a second demonstration against the whatsapp-mcp server. The attacker’s server advertised a harmless “fact of the day” tool at installation, and its malicious description “only activates on the second launch of the MCP server, thereby circumventing the need to be re-approved by the user.” The result was the user’s WhatsApp chat history sent to the attacker’s phone number. The confirmation dialog showed the outgoing message as “Hi”; the payload was only visible if the user scrolled to the right.15

cited August 2025 · CVE-2025-54136

Check Point found the same pattern in Cursor’s handling of MCP configuration files, and named it MCPoison. Once a collaborator approved an MCP configuration committed to a shared repository, Cursor kept trusting it even after its command was changed, so an attacker could commit something harmless, wait for approval, then swap in a malicious command without a new prompt. Cursor shipped a fix in version 1.3 on 29 July 2025.16

The NSA treats this as a property of the ecosystem rather than a bug in one client: “a change in capability or data access for an MCP server that is already trusted or connected often can be made without approval”, so “a previously benign and approved AI service could later access sensitive resources on demand, without triggering any review.”12

What the review should ask for

Pinned server versions and pinned tool definitions, with re-approval triggered by any change to the command, the package version or the description hash, not by the server’s name.

3
Leak by shadowing

One server rewrites how the agent uses another

A wayang kulit performance seen from behind the screen: an ornate leather shadow puppet lit against a white screen, the puppeteer’s silhouette below.
Shadowing: one server’s description changes how the agent uses a different server, without ever being called. Photo: FaizAttariqi, CC BY-SA 4.0, via Wikimedia Commons

This is the leak path I find most underestimated, because the malicious server never needs to run. In Invariant’s demonstration, Cursor was connected to a trusted email server and to a malicious one. The malicious tool’s description told the agent that the email tool “must send all emails to” an attacker’s address, with the real recipient moved into the body. The agent complied even when the user named a different recipient, and the interaction log did not mention the redirection. The attacker’s tool was never called.13

“Since the agent includes all installed MCP server specifications in the same context, one MCP server (that may be untrusted), can easily override and manipulate the agent’s behavior with respect to another MCP server (e.g. one with access to your sensitive database).”

The NSA reached the same conclusion from the other direction: servers “while not directly connected with each other, can be exposed to messages or information that is being shared freely from the MCP client. This practice increases the likelihood of data leakage or unverified task propagation.”12 A per-server review cannot find this, because no single server is doing anything wrong in isolation.

What the review should ask for

A review of the set of servers enabled together, not of each one alone, and a rule that a server handling sensitive data never shares a session with an unvetted one.

4
Leak by poisoned data

A stranger writes a ticket, and your agent obeys it

The first three paths need a malicious server. This one does not. Every server is legitimate; the attacker only writes text somewhere the agent will read it. Invariant named the pattern a toxic agent flow.

cited May 2025 · GitHub

In Invariant’s demonstration, using demo repositories, an attacker opened an issue on a user’s public repository. When the user asked Claude Desktop to look at the open issues, the agent, running Claude 4 Opus, which Invariant described as “a very recent, highly aligned and secure AI model”, followed the instructions in the issue: it read the user’s private repositories and published what it found, including private project names, plans to relocate and salary information, in a pull request on the public repository.18 Invariant was explicit that this “is not a flaw in the GitHub MCP server code itself”, then a project with 14,000 stars, and that “GitHub alone cannot resolve this vulnerability through server-side patches.”

cited July 2025 · Supabase

In a demonstration on a Supabase project holding dummy data, General Analysis filed a support ticket through a public form, addressed to “CLAUDE within cursor”, asking it to read the integration_tokens table and post the contents back into the ticket. A developer later asked Cursor, connected to the Supabase MCP server with the service_role key that bypasses row-level security, to show the latest ticket. The agent ran both queries. The attacker refreshed the ticket page and read the (dummy) secrets. In the authors’ words: “No permissions were violated. The agent just followed instructions it should never have trusted.”19

A printed wall calendar showing September, October and November, with one date in October circled in red.
A calendar event is text written by whoever sent the invitation. LayerX turned one such event into code execution. Photo: Claudio Elias, Public domain, via Wikimedia Commons
cited February 2026 · zero-click

LayerX showed that a single Google Calendar event could lead to code execution on a machine running vulnerable Claude Desktop Extensions, with no click from the victim: the user only had to ask Claude to “check my latest events and take care of it”. LayerX counted 50 affected extensions and more than 10,000 active users, and rated it CVSS 10.0. Anthropic declined to fix it, saying it “falls outside our current threat model” because it “requires a targeted user to have intentionally installed these tools and granted permission to run them without prompts.”20

The same mechanism had already been found in Anthropic’s own extensions. In November 2025 Koi Security reported unsanitized command injection in the official Chrome, iMessage and Apple Notes connectors for Claude Desktop, rated CVSS 8.9, reachable through content the assistant read while answering an ordinary question, and fixed in version 0.1.9. The researchers’ summary of the extensions’ privileges: “they can read any file, execute any command, access credentials and modify system settings.”21

What the review should ask for

A list of every place a stranger can write text the agent will read (issues, tickets, inbound mail, calendar invites, shared documents, web pages), and evidence that a session reading any of them cannot also reach private data and an exit.

5
Leak by combination

Two safe servers make one unsafe system

A researcher at a science festival pours a coloured liquid between glass vessels at a chemistry demonstration stand.
Two servers that are safe on their own can react. Cyata called Git plus Filesystem “a toxic combination”. Photo: Krzysztof Popławski, CC BY-SA 4.0, via Wikimedia Commons

Cyata examined Anthropic’s official Git MCP server and found three flaws: a repository restriction that later tool calls ignored (CVE-2025-68145), a git_init tool that could create repositories anywhere (CVE-2025-68143), and argument injection in git_diff (CVE-2025-68144). On their own they allowed file overwrites. Chained with Anthropic’s official Filesystem server, they became code execution: create a repository, write a script, write a Git configuration whose filters run that script, and wait for Git to run it. The trigger was indirect prompt injection, such as a README, a web page or a GitHub issue.22

“…combine two of them, Git and Filesystem in this case, and you get a toxic combination.”

Yarden Porat, Cyata, quoted in The Register, January 202622

Cyata reported the flaws in June 2025; the fixed release, 2025.12.18, shipped in December, and there was no indication of exploitation. The lesson outlasts the patch. Security review is organized around components, and this class of failure exists only between them.

What the review should ask for

For every pair of servers enabled together, a one-line answer to “what can these two do together that neither can do alone?”, with write access to code, configuration or the file system treated as execution.

6
Leak by tenant bleed

The server works for many customers, and mixes them up

A long, dimly lit corridor lined floor to ceiling with rows of dark wooden mailboxes.
A multi-tenant MCP server is a wall of mailboxes. One logic flaw and post goes to the wrong box. Photo: PattayaPatrol, CC BY-SA 4.0, via Wikimedia Commons
cited June 2025 · Asana

Asana launched its MCP server on 1 May 2025. On 4 June it found a logic flaw that could expose one organization’s data to users in other organizations: task details, project metadata, team details, comments, uploaded files and queries generated by the chatbot, limited to what each MCP user could already access. A spokesperson told BleepingComputer that about 1,000 customers were affected. It was “not the result of a hack”. Asana took the server offline, and its status page showed it back to normal on 17 June.23

This is the most conventional leak in the paper, and that is the point. A hosted MCP server is a new multi-tenant service, built quickly, sitting in front of the oldest and most sensitive data a company holds. It deserves the same isolation testing as any other multi-tenant API, and it is often launched as a feature instead.

What the review should ask for

For any vendor’s hosted MCP server: how tenant isolation is enforced and tested, and whether the MCP path reuses the product’s existing authorization checks or reimplements them.

7
Leak by open door

“Local” servers that anyone can reach

A rusty padlock hanging from the latch of an old metal gate, chain-link fence and dry grass behind.
Knostic manually checked 119 internet-facing MCP servers. None required a credential to list its tools. Photo: Shixart1985, CC BY 2.0, via Wikimedia Commons

In July 2025 Knostic found 1,862 MCP servers exposed to the internet and manually checked 119 of them. Every one of the 119 let an anonymous caller list its tools.24,25 Weeks earlier, Backslash Security had scanned thousands of servers in public repositories and found hundreds configured by default to listen on 0.0.0.0, every network interface, instead of the local machine only. It called this NeighborJack. For dozens of servers the researchers found a path to arbitrary command execution on the host.26

1,862MCP servers found exposed to the internet
119checked by hand
0of those required authentication to list tools
A busy coffee shop in Gastown, Vancouver, seen through a window from above, with people seated at tables.
A server bound to 0.0.0.0 can be reachable by anyone else on the same network. Photo: Tim Gouw (Unsplash), CC0, via Wikimedia Commons

Even a server that only listens locally can be reached from a web page. Before version 0.14.1, Anthropic’s MCP Inspector, the developer tool for testing servers, had no authentication between its client and its proxy, and the proxy accepted requests from browsers. Oligo Security showed that visiting a malicious website while the Inspector was running was enough to run commands on the developer’s machine (CVE-2025-49596, CVSS 9.4).27 Anthropic’s Filesystem server had its own boundary problem: its allowed-directory check was “a naive string prefix match” and symbolic links could escape it entirely (CVE-2025-53110 and CVE-2025-53109).28

cited March 2026 · exploited in the wild

nginx-ui, a web tool for managing nginx servers, added an MCP endpoint. One of its two routes applied only an IP allowlist, and an empty allowlist meant “allow all”, so “any network attacker can invoke all MCP tools without authentication.” Pluto Security named it MCPwn (CVE-2026-33032, CVSS 9.8). It was fixed in version 2.3.4 on 15 March 2026 and listed by Recorded Future among the vulnerabilities actively exploited that month; Shodan showed about 2,689 exposed instances.29

What the review should ask for

A network scan for MCP endpoints, authentication on every server that is not STDIO-only, binding to 127.0.0.1 by default, and origin and host checks on anything a browser can reach.

8
Leak by supply chain

The server works perfectly, and copies everything

A postal clerk in uniform sorts a handful of inbound letters in front of rows of pigeonhole shelves.
postmark-mcp delivered every email correctly. It also delivered a copy of each one to someone else. Photo: U.S. Air Force photo by Airman 1st Class Renee Nicole Finona, Public domain, via Wikimedia Commons
cited September 2025 · postmark-mcp

The first malicious MCP server found in the wild was an npm package called postmark-mcp, copying the name of an official Postmark library. Version 1.0.16, released on 17 September 2025, added a blind copy of every outgoing email to an address at giftshop[.]club. The Hacker News counted 1,643 downloads in total.30 Koi Security’s chief technology officer summed it up: “One developer. One line of code. Thousands upon thousands of stolen emails.”

It did not stay a one-off. In February 2026 Straiker’s researchers found a trojanized copy of an Oura Ring MCP server, promoted through at least five fake GitHub accounts and submitted to the MCP Market directory, that installed the StealC infostealer. The operators, in the researchers’ words, “invested months building credibility before deploying their payload.”31

The hosting layer was exposed too. GitGuardian found a path traversal in Smithery’s build pipeline that leaked a Fly.io token with control over 3,243 apps, most of them hosted MCP servers, including command execution as root. Smithery fixed it within two days in June 2025, and no exploitation was found.32 And the plumbing: JFrog showed that a malicious server could make mcp-remote, the proxy that Claude Desktop, Cursor and Windsurf users relied on to reach remote servers, execute operating system commands (CVE-2025-6514, CVSS 9.6), calling it “the first time that full remote code execution is achieved in a real-world scenario” against an MCP client.33

150M+downloads in the affected supply chain, per OX Security
7,000+publicly accessible servers, per OX Security
200,000vulnerable instances, OX’s upper estimate
10+CVEs issued in downstream projects by April 2026

The largest disclosure came in April 2026. OX Security reported that the STDIO transport in Anthropic’s official SDKs turns configuration directly into command execution, and that any product letting a user, a marketplace listing or a prompt-injected agent edit an MCP server’s launch command inherits that. It described the issue as “not a traditional coding error” but “an architectural design decision baked into Anthropic’s official MCP SDKs”, and listed CVEs in projects including LiteLLM, Flowise and Windsurf.34,35 By OX’s account, Anthropic declined to change the architecture and described the behaviour as “expected”.36 Anthropic did not respond to The Register’s questions.37 The figures above are OX’s own, not independently verified.

What the review should ask for

MCP servers installed only from an internal registry, pinned to a reviewed version and hash, never through npx or uvx fetching the latest release at launch, and no path by which a user, a listing or the agent can edit a launch command.

9
Leak by credential

Keys under the mat

Astrix Security analysed more than 5,200 open-source MCP server implementations in 2025. 88 percent required credentials to work, 53 percent relied on long-lived static secrets such as API keys and personal access tokens, and 8.5 percent used OAuth.38 Those secrets have to live somewhere, and Invariant’s poisoned add tool went for mcp.json first because it often holds them.13

88%of servers need credentials
53%use long-lived static secrets
8.5%use OAuth
The massive round steel door of the Bank of Canada vault in the Diefenbunker, Canada’s Cold War museum, standing open.
More than half of the 5,200-plus open-source MCP servers Astrix analysed rely on long-lived static secrets. Photo: Dennis G. Jarvis, CC BY-SA 2.0, via Wikimedia Commons

The specification’s security guidance names the failure modes. Token passthrough, where a server forwards a client’s token to a downstream API, is “explicitly forbidden”: servers “MUST NOT accept any tokens that were not explicitly issued for the MCP server”, because otherwise “a malicious actor in possession of a stolen token can use the server as a proxy for data exfiltration.” It lists wildcard and omnibus scopes among the common mistakes.39 The NSA adds that MCP relies on OAuth bearer tokens “without specifying protocol-level token lifecycle management (i.e., refresh, revocation, and reuse control)”.12

A Hacker News commenter put the operational rule better than most policy documents: “When you give a credential to an LLM, consider that it can do up to whatever that credential is allowed to do, especially if you auto-allow the LLM to make tool use calls!”40

What the review should ask for

No static secrets in configuration files. Short-lived tokens issued per session, scoped to the one repository, mailbox or table the task needs, and bound to the server they were issued for.

10
Leak by consent theatre

A human in the loop who cannot see the attack

A wooden rubber stamp standing beside an open ink pad and a bottle of stamp ink on a wooden table.
Trail of Bits’ phrase for a human approval step that cannot see the attack: “human-as-the-rubber-stamp”. Photo: 5snake5, CC0, via Wikimedia Commons

Every client asks the user to approve something, and the specification says hosts “must obtain explicit user consent before invoking any tool”.3 The cases above show why that is not a boundary. The approval dialog showed a summary while the payload sat off-screen; approval was given once and the server changed afterwards; and, as Invariant observed, “many users already opt for an ‘Always Allow’ confirmation policy when using agents, and stop monitoring individual actions.”15,18 Trail of Bits called the result “human-as-the-rubber-stamp”, an “illusion of oversight” built on “the faulty assumption that humans provide a reliable defense layer.”10

Some of what the agent does is not shown to anyone. Palo Alto Networks’ Unit 42 showed that MCP’s sampling feature, which lets a server ask the client’s model to generate text, could be abused for hidden tool invocations and file operations “without user awareness or consent”, concluding that sampling “relies on an implicit trust model and lacks robust, built-in security controls.”41

What the review should ask for

Approval prompts that show the complete call, untruncated, and that are rare enough to be read. Anything that would need an approval on every call should be designed so that it cannot do harm without one.

05 Arithmetic

Every server you add multiplies the paths

The rear of a data centre Ethernet patch panel, hundreds of blue cables bundled and dressed into vertical runs.
Ten servers, ninety directed paths by which one description can influence another server’s tools. Photo: Kbh3rd, CC BY 4.0, via Wikimedia Commons

Shadowing means each server’s descriptions can influence how the agent uses every other server. With n servers enabled together, that is n(n − 1) directed paths of influence, before counting a single tool result.

derived

Three servers give 3 × 2 = 6 paths. Ten servers, which is not unusual on a developer’s laptop, give 10 × 9 = 90. Each one is a way for text from one author to change what happens to data held by another, and a per-server review looks at none of them.

The trifecta is easier to complete than it looks, because of a detail that is easy to miss. Every third-party server supplies two of the three ingredients on its own: its descriptions and results are untrusted content, and every argument the agent sends to it leaves your control. Shrivu Shankar made the same point in April 2025: “Users often associate data leakage with ‘write’ actions but data can be leaked to third-parties through any tool use.”42 Try it below.

Try it: build a session and see whether it can leak

Figure 5 derived
MCP servers enabled in this session
Private data Untrusted content A way out

One of three. This session cannot complete the trifecta on its own.

Servers enabled
1
Shadowing paths
0
Rule of Two
Satisfied

Tags follow the definitions in Figure 2 and assume each server’s usual read and write scopes; your own scopes may differ, so check them. “Exit” includes passing arguments to a server someone else operates. Shadowing paths are n(n − 1). Two lessons fall out: a single email or code-host server can be all three ingredients by itself, as the GitHub case showed, and adding any third-party tool to a session that holds private data completes the set.

06 History

Two years of MCP security, month by month

The problems did not arrive in one bad month. New classes kept appearing through 2025 and into 2026, and they moved from demonstrations to exploitation in the wild.

  1. Anthropic announces MCP.1

  2. Equixly reports command injection in 43 percent of the popular servers it tested, unrestricted URL fetching in 30 percent and file access outside intended directories in 22 percent.43

  3. Tool poisoning, rug pulls and shadowing are published; the WhatsApp exfiltration follows; Trail of Bits describes line jumping.13,15,10

  4. In a demonstration, a public GitHub issue leaks private repositories through the official GitHub server.18

  5. Asana’s tenant bleed; the MCP Inspector RCE; NeighborJack; the lethal trifecta is named.23,27,26,11

  6. mcp-remote RCE; the Supabase ticket attack; 1,862 servers exposed to the internet.33,19,24

  7. MCPoison in Cursor; the first version of the MCPTox benchmark.16,14

  8. postmark-mcp: the first malicious MCP server found in the wild.30

  9. Astrix’s credential survey; Meta’s Rule of Two; the Smithery hosting write-up.38,8,32

  10. Command injection in Anthropic’s own Claude Desktop extensions; Anthropic reports an espionage campaign in which its model ran most of the operation and tools were called “often via the Model Context Protocol”.21,44

  11. Unit 42 on sampling; NCSC on prompt injection; MCP moves to the Linux Foundation; the Git server fix ships.41,6,4,22

  12. A calendar invitation becomes zero-click code execution; a trojanized Oura server spreads StealC.20,31

  13. MCPwn in nginx-ui is exploited in the wild.29

  14. OX Security’s STDIO disclosure across the official SDKs.34

  15. The NSA publishes its MCP information sheet; the Cloud Security Alliance calls the situation a crisis.12,45

  16. Specification 2026-07-28 removes sessions and deprecates sampling.46

07 The debate

The forum fight: is MCP the problem, or the model?

Engineers argued about this in public long before the agencies wrote about it, and the best objections deserve a straight answer.

Elena Cross’s April 2025 post “The ‘S’ in MCP Stands for Security” opened with “Spoiler: it doesn’t. But it should.”47 On Hacker News it drew 730 points and 183 comments.17 Shrivu Shankar’s “Everything Wrong with MCP” followed a week later, with the line “MCP makes it easier to accidentally expose sensitive data.”42,48 By September 2025 The Economist was running a leader on how to stop the lethal trifecta.49

The threads engineers argued in

Figure 6 cited
“The ‘S’ in MCP Stands for Security”April 2025 · 183 comments730
“Everything wrong with MCP”April 2025 · 223 comments516
“GitHub MCP exploited”May 2025 · 297 comments508
Willison’s lethal trifecta talkAugust 2025 · 115 comments430
“A Postmark backdoor that’s downloading emails”September 2025 · 166 comments308

Points on Hacker News when checked in October 2026.17,48,40,50,51 Red bars are threads about a specific exploit. I could not include Reddit: it blocks the automated access needed to verify scores and quotes, and I quote nothing I could not check.

Three positions came up again and again. Each is partly right.

A NASA astronaut floats beside an open circular hatch while opening the airlock of the Kibo laboratory module aboard the International Space Station.
A rebuttal from the Hacker News discussion: these attacks happen “on the wrong side of the airlock”. Part of that is right. Photo: NASA Johnson Space Center, Public domain, via Wikimedia Commons

The “wrong side of the airlock” argument

“None of these involve crossing a privilege boundary, they just found a weird way to do something they could already do”

“An MCP server is running code at user-level, it doesn’t need to trick an AI into reading SSH keys, it can just....read the keys!”

Hacker News comment, April 202517

My answer. Right about a malicious local server: one you run can read your keys directly, as postmark-mcp showed with email. Wrong about the cases that matter most. In the GitHub and Supabase demonstrations the attacker had no code on anyone’s machine. They could only write an issue or a ticket, and they ended up reading private repositories and secret tokens. That is a privilege boundary, crossed by text.

The “just API servers” argument

“You give the agent a token that allows it to access a private repository. MCPs are just API servers. If you don’t want something exposed in that API, don’t grant them permissions to do so.”

Hacker News comment, May 202540

My answer. Right, and this paper recommends exactly that: a token scoped to the public repository would have stopped this attack. But least privilege limits what an injected instruction can reach; it does not stop the instruction. In Invariant’s setup the agent held access to public and private repositories at once, and the instructions came from a stranger’s issue.

The “icing on baked cake” argument

“You can’t add security afterwards like spreading icing on baked cake. If you forgot to add sugar to the cake batter, there’s not enough buttercream in the world to fix it.”

Hacker News comment, April 2025, replying to Shankar’s remark that leaving authentication out of the first version was fair48

My answer. Half right. The protocol has added a great deal since (see section 8), so security can be added. What cannot be added at the protocol layer is a way for the model to tell data from instructions, which is why the fix has to be architectural.

The comment I would hand to anyone designing an agent came from the GitHub thread: “if your LLM sees text from an untrusted source, I think you should assume that untrusted source can steer the LLM to generate any text it wants. If that generated text can result in tool calls, well now that untrusted source can use said tools too.” (Hacker News comment, May 2025.)40 That is the whole threat model in two sentences.

08 Fairness

What has improved, and what the protocol cannot fix

Aerial view of the National Security Agency headquarters at Fort Meade, Maryland: dark glass office blocks surrounded by large car parks.
In May 2026 the NSA’s AI Security Center published a 17-page information sheet on MCP alone. Photo: National Security Agency, Public domain, via Wikimedia Commons

It would be unfair to describe MCP as it was in April 2025 and stop there. The specification has taken security seriously, and several of the attacks above now have their own sections in it.

That last point is not a criticism of the maintainers. No message format can make a language model distinguish instructions from data. What a protocol can do is make containment easier, and the rest is up to the people who deploy it.

09 Design

How to secure an MCP deployment

Since the weakness cannot be removed, the design goal is that a successful injection reaches nothing worth stealing and has no way out. These are the layers I put in place.

A block of Emmental cheese with round holes, sitting on a stainless steel plate.
No single layer here is complete. The point is that the holes do not line up. Photo: Peachyeung316, CC BY-SA 4.0, via Wikimedia Commons

Think of it as the familiar Swiss cheese model applied to agents: each layer has holes, and the work is making sure they never line up. The NSA’s recommendations follow the same logic: sandbox each tool’s execution with operating system controls such as AppContainers, seccomp, AppArmor or SELinux, apply least privilege to agent processes, route outbound connections through “a filtering outgoing proxy (e.g., Squid, tinyproxy) or an enterprise data loss prevention (DLP) solution”, and keep an inventory of every deployed agent and tool.12

A contained MCP deployment

Figure 7 practice
Reference architecture for a contained MCP deployment Hosts connect only to an MCP gateway. The gateway holds an allowlist of server versions and pinned description hashes, enforces per-session policy, and logs every call. Behind it, each server runs in its own sandbox with no direct internet access. All outbound traffic passes through an egress proxy with a destination allowlist and data loss prevention. A secrets broker issues short-lived, narrowly scoped tokens per session; no tokens live in configuration files. Hosts chat, IDE, agents no direct servers MCP GATEWAY ✓ allowlisted servers ✓ pinned description hashes ✓ Rule of Two per session ✓ full call shown on approval ✓ every call logged ✓ untrusted results labelled ✓ kill switch per server SANDBOXES server A server B server C Egress proxy destination allowlist DLP on payloads alerts on new hosts Secrets broker short-lived tokens scoped per task none in mcp.json Nothing reaches a server except through the gateway. Nothing leaves except through the proxy. DrRudd.com

The architecture I recommend, combining the NSA’s controls12 with Meta’s Rule of Two8 and the pinning Invariant Labs proposed for tool descriptions.13 A gateway is a single choke point: if it is misconfigured, everything is. Run it as production infrastructure, not as a plugin.

9.1Split sessions so no one session holds all three

The stone gatehouse of Hever Castle in Kent with its raised portcullis, chains and wooden drawbridge over the moat.
One way in, inspected, with the power to say no. That is what an MCP gateway is for. Photo: Martinvl, CC BY 4.0, via Wikimedia Commons

The single most effective change is to stop running one general-purpose agent with every tool. A session that reads untrusted content (triaging public issues, summarizing inbound mail, browsing) gets no private data and no write access. A session that touches private data reads only content you control. Where the two must meet, a person or a deterministic program carries the result across, not the model. That is Meta’s Rule of Two applied as a deployment rule rather than a model property.8

practice

In the GitHub case, a triage session allowed to read public issues and comment on them, but holding a token scoped to the public repository only, has nothing private to leak. The same user, with a separate session for private work, loses no capability. It loses only the attacker’s path.

9.2Keep the data out of the model

An agent cannot leak what it never sees. Anthropic’s own guidance on code execution with MCP describes running tool calls inside a sandboxed program so that “intermediate results stay in the execution environment by default”, and having the client tokenize personal data “before it reaches the model”; in its example, the same task dropped from about 150,000 tokens to 2,000.52 CaMeL, from Debenedetti and colleagues, goes further, extracting the control flow from the trusted request so that “untrusted data retrieved by the LLM can never impact the program flow”, and enforcing capability policies on every tool call. On the AgentDojo benchmark it solved 77 percent of tasks with provable security, against 84 percent for an undefended system.53 Seven points of capability for a guarantee is a trade I would take for anything touching regulated data.

9.3Contain each server, and own the exits

Workers in white full-body protective suits and respirators inside a containment structure at a U.S. Department of Energy facility.
Treat each MCP server the way a laboratory treats a hazardous sample: inside a box that limits what it can touch. Photo: U.S. Department of Energy, Public domain, via Wikimedia Commons

Run every server in its own sandbox with no network route except through an egress proxy, no file system access beyond what the task needs, and no shared credentials. Watch the exits, not the prompts: an allowlist of destinations and inspection of payloads give you a chance to catch an unexpected sidenote argument or blind-copy field, whatever persuaded the agent or the server to send it.12

9.4Treat MCP servers as identities and as software

Every server gets an owner, a version, a hash, an entry in an inventory and a reason to exist. Tokens are issued per session by a broker, scoped to the task and expire in minutes, following the specification’s own rules on audience and scope.39 Servers come from an internal registry, are reviewed like any dependency that runs with user privileges, and are never fetched fresh at launch.

9.5Log as if you will need to explain it

Rows of yellow optical fibre patch cables plugged into the front of a rack-mounted fibre distribution unit.
Every tool argument that leaves your network is an outbound channel, whatever the tool says it is for. Photo: Syced, CC0, via Wikimedia Commons

The NSA observed that “many implementations either omit logging entirely or record only minimal operational metadata.”12 Log every tool call with its full arguments, the description hash in force, the session’s inputs and the destination of anything sent out. In every case in section 4, that log is the only place the leak would be visible.

Companion paper on drrudd.com Wrong without warning: why AI needs a third pillar of review The other half of the argument: AI fails silently in quality as well as security, and functional and non-functional reviews cannot see it. Read it

10 Review

An MCP security checklist for any server going live

Each item is checkable, and most can be enforced by the gateway automatically. A server that fails any of the first six should not reach production.

An open telecom cabinet with a tangle of grey and multicoloured wires spilling out of it.
The NSA asks for a clear inventory of every deployed MCP agent and tool, with versions and patch history. Photo: Tulumnes, CC BY-SA 4.0, via Wikimedia Commons
  • InventoryEvery server, its owner, version, hash and the sessions that may use it, kept current.
  • Full descriptions read and pinnedA person has read every tool description in full; the hash is stored; any change blocks the server.
  • Combinations reviewedFor every set of servers enabled together, the trifecta is checked and the Rule of Two holds per session.
  • Untrusted inputs mappedEvery place a stranger can write text the agent will read is listed, and none feeds a session with private data and an exit.
  • No static secretsTokens are short-lived, per session, scoped to the task and bound to the server they were issued for.
  • Pinned supply chainInstalled from an internal registry at a reviewed version; no launch command can be edited by a user, a listing or the agent.
  • Sandboxed executionEach server runs with least privilege and no direct network or file system access beyond its task.
  • Egress allowlistOutbound traffic goes through a proxy with a destination allowlist and data loss prevention.
  • Network exposureNo server listens on 0.0.0.0; anything reachable over a network requires authentication and checks origin.
  • Honest approvalsApproval prompts show the complete call, untruncated, and are rare enough to be read.
  • Complete logsEvery call is logged with arguments, description hash and destination, and someone reviews them.
  • Injection testsPlanted instructions in issues, tickets, emails, invites and descriptions are run against the deployment, and the result is recorded.

11 Accountability

Who is responsible for what

  • The team deploying the agentDeclares every server, every combination and every untrusted input, and runs the injection tests.
  • The platform teamRuns the gateway, the sandboxes, the egress proxy and the secrets broker as production infrastructure.
  • SecurityOwns the inventory, reviews descriptions and combinations, and watches the logs and the exits.
  • The business ownerSigns for which data each agent may touch, and accepts in writing what is left after containment.

The last role is the one that gets skipped. Prompt injection is not going to be fixed by a vendor update, so somebody with authority has to decide, in writing, which data an agent is allowed to be one clever paragraph away from.

12 Pushback

Common objections, and how I answer them

These are the objections I hear most from engineering leaders. Most of them start from something true.

  • “We only install official servers.”

    Official servers have shipped exploitable flaws, and poisoned data does not need a malicious server at all.

    Anthropic’s own Filesystem server, Git server, MCP Inspector and Claude Desktop extensions all needed security fixes; GitHub’s official server was the vehicle for the private repository leak.

  • “It runs locally, so the data never leaves.”

    Local is a location, not a boundary.

    A web page reached the MCP Inspector on localhost; hundreds of servers listened on every interface; a calendar invitation reached a local executor. And anything the agent sends to a remote tool has left.

  • “Our users approve every tool call.”

    Approvals showed summaries while payloads sat off-screen, and servers changed after approval.

    Trail of Bits’ phrase for this is “human-as-the-rubber-stamp”.10 Design so that a mistaken approval cannot reach private data and an exit together.

  • “We use OAuth, so access is controlled.”

    OAuth says who the agent acts for. It says nothing about who is giving it instructions.

    In the GitHub and Supabase demonstrations every credential worked exactly as granted.18,19 Authorization in MCP is also still optional.7

  • “Frontier models refuse this kind of thing.”

    In MCPTox, no agent refused more than 3 percent of poisoning attempts.14

    The more capable models were often the more susceptible, and the GitHub demonstration used a model its testers called “highly aligned and secure”.18 Instruction following is the vulnerability.

  • “We’ll add a prompt injection filter.”

    Add one, as a layer. Do not treat it as a boundary.

    Willison: “in web application security 95% is very much a failing grade.”11 General Analysis: a filter “cannot grant or restrict database permissions.”19

  • “The vendor says it is working as designed.”

    Then the risk is yours, by their own account.

    By OX Security’s account, Anthropic called the STDIO behaviour expected; it placed the calendar attack outside its threat model.36,20 OX Security’s reply: “Shifting responsibility to implementers does not transfer the risk. It just obscures who created it.”36

  • “MCP is just a protocol. The real problem is the model.”

    Both are true, and that is the argument for architecture over patches.

    The model cannot separate data from instructions; MCP is how organizations now connect that model to everything. Neither will change soon, so the containment has to live around them.

13 In brief

MCP security questions, answered briefly

Is MCP secure?

Not by default. The specification says that “MCP itself cannot enforce these security principles at the protocol level” and that authorization is optional, and the NSA’s May 2026 guidance concludes that “MCP’s rapid proliferation has outpaced the development of its security model.” It can be run safely only with controls around it.3,7,12

How does MCP leak data?

An agent reads tool descriptions, tool results and retrieved documents as one stream of text, and it cannot reliably tell information from instructions. When one session holds private data, untrusted content and a way to send data out, the combination Simon Willison calls the lethal trifecta, text written by an attacker can direct the agent to send that data out with permissions it legitimately holds.6,11

What is MCP tool poisoning?

Instructions hidden in a tool’s description, which the model reads and the user usually does not see. Invariant Labs demonstrated it in April 2025, and the MCPTox benchmark measured an average attack success rate of 36.5 percent across 20 model configurations.13,14

What is an MCP rug pull?

A server changing its tools or descriptions after a user has approved it, so the version that was reviewed is not the one running. Invariant Labs used one to exfiltrate WhatsApp chat history in April 2025, and Check Point found the same trust gap in Cursor (CVE-2025-54136).15,16

Have real MCP data leaks happened?

Yes. In June 2025 a logic flaw in Asana’s MCP server could expose one organization’s data to others, affecting about 1,000 customers. From September 2025 the malicious postmark-mcp package blind-copied every email it sent to an attacker’s address. In March 2026 a flaw in nginx-ui’s MCP endpoint (CVE-2026-33032) was listed among actively exploited vulnerabilities.23,30,29

Can prompt injection in MCP be fixed?

Not completely, by the vendors’ and agencies’ own accounts. The UK NCSC says prompt injection may never be “totally mitigated”, and OpenAI calls it “unlikely to ever be fully ‘solved’”. The practical goal is to limit what a successful injection can reach and where it can send data.6,9

How do you secure an MCP deployment?

Keep any one session from combining untrusted input, private data and a way out (Meta’s Rule of Two); route every server through a gateway that pins tool descriptions; sandbox each server; send outbound traffic through a filtering proxy or data loss prevention, as the NSA recommends; and replace static secrets with short-lived, task-scoped tokens. Section 9 and the checklist give the detail.8,13,12

14 Glossary

Plain-language terms

MCP host
The application the user works in, such as a chat app, a code editor or an agent runtime.
MCP client
The part of the host that holds one connection to one MCP server.
MCP server
A program that offers tools, data or prompts to AI applications through the protocol.
Tool description
The text a server provides to explain what a tool does. The model reads it and follows it.
Prompt injection
Instructions placed in text an AI reads, so that it follows them instead of its intended task.
Tool poisoning
Prompt injection hidden in a tool’s description or other metadata.
Rug pull
A server changing its tools or descriptions after a user has approved it.
Tool shadowing
One server’s description changing how the agent uses a different server’s tools.
Toxic agent flow
A chain of legitimate tool calls, triggered by injected text, that ends with data in the wrong place.
Lethal trifecta
An agent with private data, untrusted content and a way to communicate externally, all at once.
Rule of Two
Meta’s design rule: no session should combine all three of those properties.
Confused deputy
A trusted program tricked into misusing its own authority on someone else’s behalf.
Token passthrough
A server forwarding a client’s token to another service instead of using one issued to itself. Forbidden by the specification.
STDIO transport
Running an MCP server as a local program that the host starts and talks to directly.
Sampling
An MCP feature letting a server ask the client’s model to generate text. Deprecated in the 2026-07-28 specification.
Egress control
Limiting and inspecting what is allowed to leave a network, and to where.

15 Sources

References

Numbered in the order they are first cited. Every link was checked for this version when it was published. Vendor research is cited as the vendor’s own claim; where a primary source was not reachable, the reporting outlet is named.

  1. Anthropic. “Introducing the Model Context Protocol.” 25 November 2024.Company disclosure anthropic.com↩
  2. Model Context Protocol. “What is the Model Context Protocol (MCP)?” Official documentation.Standard modelcontextprotocol.io↩
  3. Model Context Protocol. Specification, version 2026-07-28: “Security and Trust & Safety.”Standard modelcontextprotocol.io↩
  4. Anthropic. “Donating the Model Context Protocol and establishing the Agentic AI Foundation.” 9 December 2025.Company disclosure anthropic.com↩
  5. Soria Parra, D., and Delimarsky, D. “The 2026-07-28 Specification.” Model Context Protocol Blog, 28 July 2026.Standard blog.modelcontextprotocol.io↩
  6. National Cyber Security Centre (UK). “Prompt injection is not SQL injection (it may be worse).” 8 December 2025.Regulatory guidance ncsc.gov.uk↩
  7. Model Context Protocol. Specification, version 2026-07-28: “Authorization.”Standard modelcontextprotocol.io↩
  8. Meta AI. “Agents Rule of Two: A Practical Approach to AI Agent Security.” 31 October 2025.Research ai.meta.com↩
  9. OpenAI. “Continuously hardening ChatGPT Atlas against prompt injection attacks.” 22 December 2025.Company disclosure openai.com↩
  10. Trail of Bits. “Jumping the line: How MCP servers can attack you before you ever use them.” 21 April 2025.Research blog.trailofbits.com↩
  11. Willison, S. “The lethal trifecta for AI agents: private data, untrusted content, and external communication.” 16 June 2025.Commentary simonwillison.net↩
  12. National Security Agency, Artificial Intelligence Security Center. Model Context Protocol (MCP): Security Design Considerations for AI-Driven Automation. Cybersecurity Information Sheet U/OO/6030316-26, version 1.0, May 2026.Regulatory guidance NSA (PDF)Press release, 20 May 2026↩
  13. Beurer-Kellner, L., and Fischer, M. “MCP Security Notification: Tool Poisoning Attacks.” Invariant Labs, 1 April 2025.Research invariantlabs.ai↩
  14. Wang, Z., Gao, Y., Wang, Y., Liu, S., Sun, H., Cheng, H., Shi, G., Du, H., and Li, X. “MCPTox: A Benchmark for Tool Poisoning Attack on Real-World MCP Servers.” arXiv:2508.14925, version 2, September 2026.Research arxiv.org↩
  15. Invariant Labs. “WhatsApp MCP Exploited: Exfiltrating your message history via MCP.” 7 April 2025.Research invariantlabs.ai↩
  16. Charikov, A., Zaikin, R., and Vanunu, O. “MCPoison. Cursor IDE: Persistent Code Execution via MCP Trust Bypass” (CVE-2025-54136). Check Point Research, 5 August 2025.Vulnerability research.checkpoint.com↩
  17. Hacker News. Discussion of “The ‘S’ in MCP Stands for Security.” Posted 6 April 2025; 730 points and 183 comments when checked in October 2026.Forum news.ycombinator.com↩
  18. Invariant Labs. “GitHub MCP Exploited: Accessing private repositories via MCP.” 26 May 2025.Incident invariantlabs.ai↩
  19. General Analysis. “Supabase MCP can leak your entire SQL database.” 8 July 2025.Incident generalanalysis.com↩
  20. Infosecurity Magazine. “New Zero-Click Flaw in Claude Desktop Extensions, Anthropic Declines Fix,” reporting LayerX research. 9 February 2026, updated 10 February 2026.Vulnerability infosecurity-magazine.com↩
  21. Infosecurity Magazine. “Claude Desktop Extensions Vulnerable to Web-Based Prompt Injection,” reporting Koi Security research. 5 November 2025.Vulnerability infosecurity-magazine.com↩
  22. The Register. “Anthropic quietly fixed flaws in its Git MCP server that allowed for remote code execution,” reporting Cyata research (CVE-2025-68143, CVE-2025-68144, CVE-2025-68145). 20 January 2026.Vulnerability theregister.com↩
  23. Toulas, B. “Asana warns MCP AI feature exposed customer data to other orgs.” BleepingComputer, 18 June 2025.Incident bleepingcomputer.com↩
  24. Knostic. “Exposing the Unseen: Mapping MCP Servers Across the Internet.” 17 July 2025.Research knostic.ai↩
  25. Dark Reading. “Nearly 2,000 MCP Servers Possess No Security Whatsoever.” 18 July 2025.Research darkreading.com↩
  26. Constantin, L. “Misconfigured MCP servers expose AI agent systems to compromise,” reporting Backslash Security research. CSO Online, 25 June 2025.Research csoonline.com↩
  27. Oligo Security. “Critical RCE Vulnerability in Anthropic MCP Inspector (CVE-2025-49596).” 27 June 2025.Vulnerability oligo.security↩
  28. Cymulate. “EscapeRoute: Breaking the Scope of Anthropic’s Filesystem MCP Server” (CVE-2025-53109, CVE-2025-53110). Last updated 17 March 2026.Vulnerability cymulate.com↩
  29. Lakshmanan, R. “Actively Exploited nginx-ui Flaw (CVE-2026-33032) Enables Full Nginx Server Takeover.” The Hacker News, 15 April 2026.Vulnerability thehackernews.com↩
  30. Lakshmanan, R. “First Malicious MCP Server Found Stealing Emails,” reporting Koi Security research on postmark-mcp. The Hacker News, 29 September 2025.Incident thehackernews.com↩
  31. Lakshmanan, R. “SmartLoader Attack Uses Trojanized Oura MCP Server to Deploy StealC Infostealer,” reporting Straiker STAR Labs research. The Hacker News, 17 February 2026.Incident thehackernews.com↩
  32. Ferry, G. “From Path Traversal to Supply Chain Compromise: Breaking MCP Server Hosting.” GitGuardian, 22 October 2025.Vulnerability blog.gitguardian.com↩
  33. JFrog Security Research. “Critical RCE Vulnerability in mcp-remote: CVE-2025-6514 Threatens LLM Clients.” 9 July 2025.Vulnerability jfrog.com↩
  34. OX Security. “The Mother of All AI Supply Chains: Critical, Systemic Vulnerability at the Core of Anthropic’s MCP.” 15 April 2026.Research ox.security↩
  35. Siman Tov Bustan, M., Naamnih, M., and Zadok, N. “MCP Supply Chain Advisory: RCE Vulnerabilities Across the AI Ecosystem.” OX Security, 15 April 2026.Vulnerability ox.security↩
  36. Lakshmanan, R. “Anthropic MCP Design Vulnerability Enables RCE, Threatening AI Supply Chain.” The Hacker News, 20 April 2026.Commentary thehackernews.com↩
  37. The Register. “Anthropic won’t own MCP ‘design flaw’ putting 200K servers at risk, researchers say.” 16 April 2026.Commentary theregister.com↩
  38. Astrix Security. “State of MCP Server Security 2025: Research Report.” October 2025.Research astrix.security↩
  39. Model Context Protocol. Specification, version 2025-11-25: “Security Best Practices.”Standard modelcontextprotocol.io↩
  40. Hacker News. Discussion of “GitHub MCP exploited: Accessing private repositories via MCP.” Posted 26 May 2025; 508 points and 297 comments when checked in October 2026.Forum news.ycombinator.com↩
  41. Huang, Y., Rao, A., Li, C., Ji, Y., and Hu, W. “New Prompt Injection Attack Vectors Through MCP Sampling.” Palo Alto Networks Unit 42, 5 December 2025.Research unit42.paloaltonetworks.com↩
  42. Shankar, S. “Everything Wrong with MCP.” 13 April 2025.Commentary blog.sshh.io↩
  43. Dalla Piazza, A. “MCP Servers: The New Security Nightmare.” Equixly, 29 March 2025.Research equixly.com↩
  44. Anthropic. “Disrupting the first reported AI-orchestrated cyber espionage campaign.” 13 November 2025.Company disclosure anthropic.com↩
  45. Cloud Security Alliance AI Safety Initiative. “MCP Security Crisis: Systemic Design Flaws in AI Agent Infrastructure.” Research note, 4 May 2026.Research labs.cloudsecurityalliance.org↩
  46. Model Context Protocol. Specification, version 2026-07-28: “Key Changes.”Standard modelcontextprotocol.io↩
  47. Cross, E. “The ‘S’ in MCP Stands for Security.” Medium, 6 April 2025.Commentary medium.com↩
  48. Hacker News. Discussion of “Everything wrong with MCP.” Posted 13 April 2025; 516 points and 223 comments when checked in October 2026.Forum news.ycombinator.com↩
  49. The Economist. “How to stop AI’s ‘lethal trifecta’.” Leader, 25 September 2025.Commentary economist.com↩
  50. Hacker News. Discussion of “My Lethal Trifecta talk at the Bay Area AI Security Meetup.” Posted 9 August 2025; 430 points and 115 comments when checked in October 2026.Forum news.ycombinator.com↩
  51. Hacker News. Discussion of “A Postmark backdoor that’s downloading emails.” Posted 27 September 2025; 308 points and 166 comments when checked in October 2026.Forum news.ycombinator.com↩
  52. Anthropic. “Code execution with MCP: Building more efficient agents.” 4 November 2025.Company disclosure anthropic.com↩
  53. Debenedetti, E., Shumailov, I., Fan, T., Hayes, J., Carlini, N., Fabian, D., Kern, C., Shi, C., Terzis, A., and Tramèr, F. “Defeating Prompt Injections by Design.” arXiv:2503.18813, 2025.Research arxiv.org↩

16 Citation

How to cite this paper

Please cite the stable URL below. It will not move. If the paper is revised, the version number changes and earlier versions stay listed here, so a citation always points at the text it quoted.

APA (7th edition)

Rudd, I. (2026, October 1). Leaked without a breach: How the Model Context Protocol lets AI agents give your data away, and how to architect around it (Working paper, Version 1.0). https://drrudd.com/papers/mcp-security/

Chicago

Rudd, Ian. 2026. “Leaked Without a Breach: How the Model Context Protocol Lets AI Agents Give Your Data Away, and How to Architect Around It.” Working paper, version 1.0, October 1, 2026. https://drrudd.com/papers/mcp-security/.

IEEE

I. Rudd, “Leaked without a breach: How the Model Context Protocol lets AI agents give your data away, and how to architect around it,” Working paper, ver. 1.0, Oct. 1, 2026. [Online]. Available: https://drrudd.com/papers/mcp-security/

BibTeX

@misc{rudd2026mcpsecurity,
  author       = {Rudd, Ian},
  title        = {Leaked Without a Breach: How the {Model Context Protocol} Lets {AI} Agents Give Your Data Away, and How to Architect Around It},
  howpublished = {Working paper, version 1.0},
  year         = {2026},
  month        = oct,
  day          = {1},
  url          = {https://drrudd.com/papers/mcp-security/},
  note         = {ORCID: 0000-0002-8750-285X}
}
VersionDateChange
1.01 October 2026First publication.
Ian Rudd

About the author

Ian Rudd, PhD, is a chief enterprise AI architect based in Canada. He has spent close to twenty years taking machine learning from the research lab into production, in federal government, banking, insurance, retail and transport, and in corporate AI research at IBM and Microsoft. His work is making AI systems that hold up in front of an auditor.

Keep going

The rest of drrudd.com, one click away

This paper is the long version of one position. The rest of the site is the person behind it: what I do, where I have done it, and working demos you can check for yourself.

Image credits

Photographs and the painting are from Wikimedia Commons, used under the licences shown, resized and in some cases cropped for this page. They are illustrative: none depicts the specific events, products or organizations described beside it, except the NSA headquarters photograph, which shows the agency named. Icons are from Lucide (ISC licence). Diagrams and charts are drawn for this paper.

Contents