@@ -7,7 +7,7 @@ Thank you for helping us keep the SDKs and systems they interact with secure.
77This SDK is maintained by [ Anthropic] ( https://www.anthropic.com/ ) as part of the Model
88Context Protocol project.
99
10- The security of our systems and user data is Anthropic’ s top priority. We appreciate the
10+ The security of our systems and user data is Anthropic' s top priority. We appreciate the
1111work of security researchers acting in good faith in identifying and reporting potential
1212vulnerabilities.
1313
@@ -19,3 +19,169 @@ in this functionality be reported through their
1919
2020Our 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