MCP Security · Agent Tools

Meta Muse and MCP Security: How Trusted Tools Become an Agentic Attack Surface

The most dangerous AI attack may not break the model, the VM or the application. It may convince the agent to use a trusted tool in an unsafe way.

MCP
Custom connectors supported
2
Connector classes: reviewed vs not
6
Documented MCP incidents covered
0
Muse MCP exploits publicly reported

The most dangerous AI attack may not break the model, the VM or the application. It may convince the agent to use a trusted tool in an unsafe way.

That is the security problem around the Model Context Protocol (MCP), and Meta Muse is a useful live case because it supports MCP directly.

Parts 1 and 2 of this series covered the agent's authority and the runtime that contains it. This part moves outward to the tools:

What happens when an agent trusts a tool the attacker controls, manipulates or has compromised?

At a Glance

What MCP Is

The Model Context Protocol is an open standard for connecting AI applications to external tools and data. Instead of a custom integration per application, a developer exposes capabilities through an MCP server and any MCP client can use them.

AI application → model → MCP client → MCP server(s) → databases, repositories, SaaS APIs

That standardization is why MCP is spreading, and why it matters for security: the model becomes connected to more things that can be attacked.

The Trust Problem: The Model Chooses the Call

In a normal API integration, the application decides exactly what request is sent. With an agent, the model decides which tool to use, when, and with what arguments, based on everything in its context, including text an attacker may have influenced.

User → agent → model interprets request → selects tool → generates parameters → MCP server → external system

An attacker does not need a malicious tool. Often they only need to influence how the agent uses a legitimate one. search_customer, export_records and send_email can each be legitimate while the sequence is an attack. The tool is trusted. The request may not be.

How Muse's Design Treats Tools

Meta's own principle is the right one: Muse proposes, only Sentinel can grant permission. Concretely, from Meta's published design:

Custom MCP connectors are where the picture gets harder. They are unreviewed by Meta, user-added in conversation, and, per the third-party summary above, not given the privsep separation built-in connectors get. They still sit behind Sentinel for egress and approvals. That is a reasonable design, and it also makes the custom connector the weakest link by construction, which is the right place for a security team to look first.

Tool Poisoning: When the Description Is the Attack

MCP servers describe their tools in text that the model reads. If an attacker controls that text, or any part of the tool's schema or output, they can hide instructions there. Invariant Labs documented this as tool poisoning in April 2025: tool descriptions enter the agent's context as trusted content, so instructions hidden in a description can steer the model while remaining invisible to the user. The same research showed "rug pull" variants, where a server changes its tool definitions after the user approved it.

The attack surface moves from the tool's executable code to the information the model uses to understand the tool.

The MCP Incident Record

These are real, documented incidents, not hypotheticals. They show the failure modes that any MCP-connected agent, including Muse, inherits.

Incident When What happened Lesson
Tool poisoning (Invariant Labs) Apr 2025 Hidden instructions in MCP tool descriptions steer the model, including a WhatsApp message-history exfiltration demonstration Tool metadata is untrusted input
GitHub MCP prompt injection (Invariant Labs) May 2025 A malicious public GitHub issue hijacked an agent into pulling data from private repositories; a broad access token enlarged the damage Least-privilege tokens; untrusted content plus broad tools equals exfiltration
mcp-remote, CVE-2025-6514 mid 2025 A malicious server's authorization endpoint led to OS command injection in a popular OAuth proxy (CVSS 9.6) The MCP client side is attack surface too
MCP Inspector, CVE-2025-49596 mid 2025 Unauthenticated remote code execution in a developer tool (CVSS 9.4) Developer tooling around MCP is a target
Asana MCP data exposure Jun 2025 Cross-tenant data exposure in a vendor's MCP server Multi-tenant authorization must be enforced server-side
postmark-mcp backdoor (Koi Security) Sep 2025 A malicious npm package posing as an email MCP server silently BCC'd mail to the attacker; roughly 300 organizations were estimated to have used it MCP servers are a software supply chain

Severity scores and counts are as reported by the researchers and CVE records; check each source before quoting a figure.

Open Questions Worth Testing in Muse

These are questions to test, not reported flaws. We found no public report of any of them being exploitable.

  1. Can untrusted content cause a connector to be created or used? Custom connectors are created by asking Muse. Does content the agent reads, such as a web page, count as "asking"? What approval does a newly added MCP server get?
  2. What are the default approval settings for a fresh custom connector? Meta offers read-only, approve-every-action and allow policies. Which does a new connector start with, and does the user see what changed when a server updates its tool definitions?
  3. Is tool metadata and tool output labeled untrusted like other external content in Muse's context?
  4. Can a custom connector inside the runtime cell be coerced to behave differently from a built-in one, and what stops it from reaching credentials or the network beyond Sentinel's checks?
  5. Are connectors an egress path? One developer reported Muse exporting an entire session filesystem to a connected Google Drive in response to chat prompts (one outlet's account). Whatever the intended behavior, it shows a connector can carry data out, which is what tainted egress is meant to gate.

Why MCP Makes Prompt Injection More Consequential

MCP does not create prompt injection, but it multiplies what a successful injection can do. Part 4 covers the injection itself. The chain looks like this:

Untrusted content → agent reads it → model interprets → trusted MCP tool → enterprise system → data or action

The malicious page never touches the enterprise API. It only has to influence the agent. The API request that follows can be perfectly authenticated and authorized, and still be an incident, because the agent was manipulated into making an authorized request for an unauthorized purpose.

The Tool Boundary Is Not a Trust Boundary

An MCP server should not assume "the AI selected me, so the request is trusted." The safer assumption is that the model may be manipulated, so every consequential request is validated outside the model:

Agent → tool request → policy broker (identity, scope, context) → MCP server → external system

The model requests. A control that does not depend on the model decides.

How to Secure MCP-Connected Agents

  1. Least privilege per tool. The smallest scope that does the job; expose the support agent's search without delete, export or billing.
  2. Separate read and write. Reading should not carry the right to modify.
  3. Approval for high-impact actions. Deletes, payments, external messages, data exports, infrastructure changes.
  4. Treat metadata and output as untrusted. Descriptions, schemas, documentation and results can all carry instructions.
  5. Pin and monitor tool definitions. Alert when a server's tools change after approval (the rug-pull defense).
  6. Validate model-generated parameters. An LLM generating an argument does not make it safe.
  7. Monitor sequences. search_customer → export_records → upload_file deserves more scrutiny than any one call.
  8. Vet the supply chain. Pin versions, review servers before connecting, prefer reviewed directories over arbitrary URLs.
  9. Contain the runtime. Assume the agent can be manipulated and limit what happens next (see Part 2).

For a deeper treatment of tool permissions, see our guide to AI agent tool security and MCP and the OWASP agentic top 10 technical guide.

The Layered Model

IDENTITY  → who is the agent and what authority does it hold?       (Part 1)
RUNTIME   → where does it run and what happens if it is breached?   (Part 2)
TOOLS     → what can it call and what can those tools change?       (this part)
CONTEXT   → what content can influence its decisions?               (Part 4)
ACTION    → what real-world consequences can it trigger?

Failures at any layer can chain into the next. An attacker needs one weak link; defenders need each layer to contain the failure of the one before.

Sources

The Meta Muse Security Series

  1. Part 1 — Identity: Meta Muse Zero-Day
  2. Part 2 — Runtime: Meta Muse's Hidden Sandbox Problem
  3. Part 3 — Tools (this article): Meta Muse and MCP Security
  4. Part 4 — Context: Meta Muse and Indirect Prompt Injection

Test Your Agent's Tool Boundaries

Check whether injected content can push your AI agent into unsafe tool calls and data exports before an attacker does.

Frequently Asked Questions

Does Meta Muse support MCP?
Yes. Partner documentation describes Muse custom connectors that use the Model Context Protocol, added by asking Muse to create a custom connector for an MCP server URL. Meta's Help Center says it does not review custom connectors.
What is MCP security?
The practice of protecting AI agents and the tools, data sources, APIs and services they reach through the Model Context Protocol: authenticating clients, authorizing each operation, scoping access, validating model-generated inputs, treating tool metadata and output as untrusted, and logging tool calls.
What is MCP tool poisoning?
Hiding malicious instructions in an MCP tool's description, schema or output so the model reads and acts on them, while users do not see them. Invariant Labs documented it in April 2025.
Can MCP prevent prompt injection?
No. MCP is a connection protocol. Prompt injection needs separate controls around input handling, context isolation, authorization and runtime behavior.
Are custom connectors riskier than built-in ones?
By design they carry less assurance: Meta does not review them, and a third-party summary says their code runs inside the runtime cell rather than in the separated workers used for built-in connectors. They remain subject to Sentinel's egress and approval controls.
What real MCP incidents have occurred?
Documented examples include tool poisoning and GitHub MCP prompt-injection research from Invariant Labs, the mcp-remote and MCP Inspector vulnerabilities (CVE-2025-6514 and CVE-2025-49596), an Asana MCP data exposure, and the postmark-mcp npm backdoor.
How should teams apply least privilege to MCP tools?
Grant each tool the minimum scope, separate read from write, require approval for destructive or external actions, pin tool definitions, and validate every model-generated parameter outside the model.
How does MCP relate to AI runtime security?
MCP controls what an agent can reach; runtime security controls the environment it runs in and what happens after compromise. They are complementary layers.

Related Guides

Part 1 · Identity
Meta Muse Zero-Day: How a Hidden Setting Turned an AI Agent Into a Mac Backdoor
Part 2 · Runtime
Meta Muse's Hidden Sandbox Problem: Meta Rushed to Fix VM-Escape Bugs Before Launch
Part 4 · Context
Meta Muse and Indirect Prompt Injection: How a Malicious Web Page Can Hijack an AI Agent
MCP Security
AI Agent Tool Security: MCP + Function Calling Security Guide (2026)
OWASP Agentic
OWASP Agentic Top 10 Technical Guide: Complete AI Agent Security Review (2026)
Attack Vectors
Indirect Prompt Injection: The Invisible Attack
Full Library
Browse the full AI security resource library