Skip to content

Commit a0e8583

Browse files
authored
Merge pull request modelcontextprotocol#2098 from modelcontextprotocol/localden/docs
(chore): Update the security reporting guidelines
2 parents 162c2d5 + 48fa07b commit a0e8583

1 file changed

Lines changed: 167 additions & 1 deletion

File tree

SECURITY.md

Lines changed: 167 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Thank you for helping us keep the SDKs and systems they interact with secure.
77
This SDK is maintained by [Anthropic](https://www.anthropic.com/) as part of the Model
88
Context Protocol project.
99

10-
The security of our systems and user data is Anthropics top priority. We appreciate the
10+
The security of our systems and user data is Anthropic's top priority. We appreciate the
1111
work of security researchers acting in good faith in identifying and reporting potential
1212
vulnerabilities.
1313

@@ -19,3 +19,169 @@ in this functionality be reported through their
1919

2020
Our Vulnerability Program Guidelines are defined on our
2121
[HackerOne program page](https://hackerone.com/anthropic-vdp).
22+
23+
## Intended Behaviors and Trust Model
24+
25+
This section documents behaviors that are intentional design choices in MCP and are
26+
**not** considered security vulnerabilities. Understanding these behaviors helps
27+
developers build accurate threat models, enables security researchers to focus on
28+
genuine vulnerabilities, and clarifies the trust boundaries within MCP for all
29+
implementers.
30+
31+
### Trust Model
32+
33+
MCP is designed to enable AI applications to interact with external tools, data
34+
sources, and services. The protocol operates under the following trust assumptions:
35+
36+
**MCP clients trust MCP servers they connect to.** When a user or application
37+
configures an MCP client to connect to a server, the client trusts that server to
38+
provide tools, resources, and prompts. The security of this trust relationship
39+
depends on proper server selection and configuration by the user or administrator.
40+
41+
**Local MCP servers are trusted like any other software you install.** When you run a
42+
local MCP server, you are trusting it with the same level of access as any other
43+
application or package on your system. Just as you would evaluate the trustworthiness
44+
of a library or tool before installing it, you should evaluate MCP servers before
45+
running them.
46+
47+
**MCP servers trust the execution environment they run in.** Servers have access to
48+
the resources available in their execution context. This is by design, as servers need
49+
access to local files, databases, APIs, or other resources to provide their intended
50+
functionality.
51+
52+
**Users and administrators are responsible for server selection.** MCP clients should
53+
provide clear information about server capabilities, but the decision to connect to
54+
and use a server rests with the user or administrator. Some clients may auto-connect
55+
to certain servers based on configuration; users should review these settings.
56+
57+
### Behaviors That Are Not Vulnerabilities
58+
59+
The following behaviors are intentional features of MCP and are **not** eligible for
60+
security vulnerability reports or bug bounty rewards:
61+
62+
#### Command Execution for STDIO Transport
63+
64+
MCP clients using the STDIO transport launch MCP servers by executing commands. This
65+
command execution is an intended feature, not a vulnerability:
66+
67+
- Clients execute the configured command to start the server process
68+
- The server process runs with the same privileges as the client
69+
- Command arguments specified in configuration are passed to the server
70+
71+
**This is expected behavior.** Users configure which servers to run, and the client
72+
executes those configurations. Reports about "arbitrary command execution" via STDIO
73+
transport configuration, whether in MCP client applications or SDKs, are not
74+
vulnerabilities. Process spawning is a core feature of the STDIO transport mechanism.
75+
76+
#### Server Capabilities and Side Effects
77+
78+
MCP servers provide capabilities that may have significant effects on the system or
79+
external services. These capabilities are features, not vulnerabilities:
80+
81+
**File system access:** Servers like the reference filesystem server intentionally
82+
read, write, and list files within their configured scope. A filesystem server's
83+
purpose is to provide file access to AI applications.
84+
85+
**Git and version control:** Servers providing git functionality can execute git
86+
commands, which may include operations like resetting commits or force pushing. If you
87+
grant an AI agent unrestricted access to git commands, it can perform any git
88+
operation—this is not a vulnerability in the server.
89+
90+
**Database operations:** Servers may execute queries, modify data, or manage database
91+
schemas based on their intended purpose.
92+
93+
**Network and API access:** Servers may make HTTP requests, call external APIs, or
94+
interact with remote services.
95+
96+
**System commands:** Some servers are designed to execute system commands or scripts.
97+
98+
**This is expected behavior.** Servers that perform their documented functions are
99+
working as intended. Reports about "server X can perform action Y" are not
100+
vulnerabilities when Y is the server's intended purpose. The appropriate safeguards
101+
and permissions for these capabilities are the responsibility of the user or
102+
administrator deploying the server.
103+
104+
#### Resource Access Patterns
105+
106+
MCP resources expose data to clients. Servers may provide resources containing file
107+
contents, database query results, API responses, or system information.
108+
109+
**This is expected behavior.** Resources are designed to provide context and data to
110+
AI applications. The scope of accessible data is determined by server implementation
111+
and configuration.
112+
113+
#### LLM-Driven Tool Invocation
114+
115+
When AI applications use MCP, the language model determines which tools to invoke
116+
based on user requests and available tool descriptions. This means:
117+
118+
- The LLM may invoke tools in ways the user did not explicitly request
119+
- Tool invocations depend on how the LLM interprets the user's intent
120+
- Multiple tools may be invoked in sequence
121+
122+
**This is expected behavior.** LLM-driven tool selection is fundamental to how AI
123+
applications use MCP. Reports about "LLM invoked unexpected tool" are not MCP
124+
vulnerabilities, as they relate to LLM behavior and application-level controls.
125+
126+
### Developer and Operator Responsibilities
127+
128+
MCP's security model places certain responsibilities on developers and operators:
129+
130+
**Server developers are responsible for:**
131+
132+
- Implementing appropriate access controls within their servers
133+
- Documenting the capabilities and permissions their servers require
134+
- Validating inputs from clients before performing sensitive operations
135+
- Following the principle of least privilege in server design
136+
137+
**Client developers are responsible for:**
138+
139+
- Providing clear information to users about server capabilities
140+
- Implementing appropriate consent mechanisms before connecting to servers
141+
- Displaying tool invocations and resource access to users when appropriate
142+
- Sandboxing server execution where feasible
143+
144+
**Operators and users are responsible for:**
145+
146+
- Connecting only to trusted MCP servers
147+
- Reviewing server configurations before deployment
148+
- Understanding the capabilities of servers they enable
149+
- Configuring appropriate access restrictions for their environment
150+
151+
For additional guidance on building and deploying secure MCP implementations, see the
152+
[Security Best Practices](https://modelcontextprotocol.io/specification/draft/basic/security_best_practices)
153+
documentation.
154+
155+
### What Remains In Scope
156+
157+
The following categories **are** considered security vulnerabilities when they arise
158+
from flaws in the MCP specification or official SDK implementations:
159+
160+
- **Protocol-level vulnerabilities**: Flaws in the MCP specification that enable
161+
attacks regardless of implementation
162+
- **Authentication/authorization bypasses**: Ways to access resources or invoke tools
163+
without proper authorization
164+
- **Implementation vulnerabilities**: Bugs in specific SDK implementations (buffer
165+
overflows, injection flaws, etc.)
166+
- **Sandbox escapes**: Breaking out of intended isolation boundaries explicitly
167+
defined in the protocol or SDKs
168+
- **Session hijacking**: Unauthorized access to another user's session
169+
- **Token theft or leakage**: Vulnerabilities that expose access tokens
170+
- **Cross-tenant access**: Accessing resources belonging to other users in
171+
multi-tenant deployments
172+
173+
This list is not exhaustive.
174+
175+
### Reporting Guidelines
176+
177+
When evaluating whether to report a potential security issue:
178+
179+
1. **Check this document first.** If the behavior is listed as intended, it is not
180+
a vulnerability.
181+
2. **Consider the trust model.** If the issue requires the attacker to already have
182+
access that the trust model assumes they have, it may not be a vulnerability.
183+
3. **Focus on unexpected access.** Vulnerabilities typically involve accessing
184+
resources or performing actions that should not be possible given the established
185+
trust boundaries.
186+
4. **Provide context.** If you believe you have found a genuine vulnerability,
187+
explain how it violates the intended security boundaries.

0 commit comments

Comments
 (0)