fastmcp-slim
🚀 The fast, Pythonic way to build MCP servers and clients.
Activity
- Latest release
- 1d ago
- Total releases
- 42
- Cadence
- ~2 days
- Last 12 months
- 42
Reach
- Stars
- 28.2k
Details
- License
- Apache-2.0
- First release
- May 11, 2026
| Version | Released | |
|---|---|---|
4.2.0a1
pre
| ||
4.1.4
patch
| ||
3.4.11
patch
| ||
4.1.3
patch
| ||
3.4.10
patch
| ||
4.1.2
patch
| ||
4.1.1
patch
2 CVEs
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
3.4.9
patch
1 CVE
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.1.0
minor
2 CVEs
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.11
patch
2 CVEs
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
3.4.8
patch
1 CVE
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.10
patch
2 CVEs
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.9
patch
2 CVEs
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.8
patch
2 CVEs
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.7
patch
2 CVEs
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.6
patch
2 CVEs
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.5
patch
2 CVEs
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.4
patch
2 CVEs
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.3
patch
2 CVEs
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.2
patch
2 CVEs
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.1
patch
2 CVEs
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.0
major
2 CVEs
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.0b5
pre
1 CVE
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.0b4
pre
1 CVE
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.0b3
pre
1 CVE
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
3.4.7
patch
1 CVE
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.0b2
pre
1 CVE
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
3.4.6
patch
1 CVE
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.0b1
pre
1 CVE
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
3.4.5
patch
1 CVE
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.0a2
pre
1 CVE
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
4.0.0a1
pre
1 CVE
GHSA-vqqp-x5qm-5qp4
Oct 23, 2026
FastMCP MCP client wrappers construct M2M OAuth providers without issuer binding — client secret redirectable to attacker-advertised authorization server
5.9
/ 10
Medium
Network
High
None
None
Unchanged
High
None
None
Maintainer assessment and remediationThis report is accepted as a FastMCP credential-binding vulnerability. Affected versions of the OAuth client credentials providers do not expose the authorization-server issuer that owns pre-registered credentials. An untrusted or compromised MCP server can therefore advertise a different authorization server and receive the client secret or a signed assertion. Signing keys themselves remain local; assertion replayability depends on the assertion source and audience policy. Affected stable versions are 4.0.0–4.1.1 of The 4.1.2 fix adds Configuration required for protection: configure
Original reportSummaryfastmcp's ClientCredentialsOAuthProvider and PrivateKeyJWTOAuthProvider do not expose or validate OAuth issuer binding when connecting to MCP servers. A client secret configured for a legitimate authorization server can be transmitted to an attacker-controlled authorization server if the MCP server URL is attacker-supplied or compromised. This is the same vulnerability class as GHSA-qx49-fqc8-xw99 (Python MCP SDK) and GHSA-6qxp-vccf-f47h (TypeScript MCP SDK), applied to fastmcp's wrapper layer. DetailsWhen fastmcp connects to an MCP server with OAuth client credentials:
Affected code:
The underlying MCP SDK (mcp.client.auth.extensions.client_credentials) supports issuer= parameter, but fastmcp's wrappers neither accept nor forward it. Example vulnerable usage:
Proof of concept
The vulnerability exists because fastmcp does not validate that the authorization server advertised by the MCP server matches an expected issuer. ImpactSeverity: Medium-High Any application using fastmcp's M2M OAuth providers (ClientCredentialsOAuthProvider, PrivateKeyJWTOAuthProvider) to connect to user-supplied or untrusted MCP server URLs is vulnerable to credential disclosure and client impersonation. Affected parties:
Attack scenarios:
Affected versions
4.0.0
4.0.0a1
4.0.0a2
4.0.0b1
4.0.0b2
4.0.0b3
4.0.0b4
4.0.0b5
4.0.1
4.0.10
4.0.11
4.0.2
+ 9 more Show less
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
3.4.4
patch
1 CVE
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
3.4.3
patch
1 CVE
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
3.4.2
patch
1 CVE
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
3.4.1
patch
1 CVE
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
3.4.0
minor
1 CVE
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
3.4.0b1
pre
1 CVE
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
3.3.1
patch
1 CVE
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
3.3.0
initial
1 CVE
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
3.3.0b2
pre
1 CVE
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev | ||
3.3.0b1
pre
1 CVE
GHSA-7xgj-8392-5q4r
Oct 23, 2026
FastMCP: Post-transform component authorization is skipped on direct calls
6.8
/ 10
Medium
Network
High
Low
None
Unchanged
High
High
None
Maintainer assessment and remediationThis report is accepted as a FastMCP authorization vulnerability. In supported configurations, a server transform can change the metadata used by a component's authorization policy. Direct lookups previously checked the original component but returned the transformed component without rechecking its policy. A client that knows the component identifier can invoke a tool or retrieve a resource or prompt that the configured policy denies. The fixes authorize the final transformed tools, resources, templates, and prompts. A denied concrete resource also shadows a matching resource template at its URI, preventing proxy templates from retrieving the same protected resource upstream. Authorized callers, authorized component versions, and templates for genuinely absent concrete resources remain supported. Affected stable release lines: FastMCP 3.0.0–3.4.9 and 4.0.0–4.1.1. The missing final authorization check is present in v3.0.0 history and was reproduced on v3.4.9 and v4.1.0. Both Fixes are available in FastMCP 3.4.10 and 4.1.2. Until upgrading, avoid overlapping proxy templates for protected resources and enforce the required authorization at the handler or server boundary rather than relying on a policy whose inputs are changed by a transform. Original reportPost-transform component authorization is skipped on direct callsSummaryFastMCP's direct component paths can return a transformed component before its applicable DetailsAttacker prerequisitesA server uses a supported provider, server, or session transform and a metadata-aware component Root causeListing applies transforms and then authorizes the transformed component. In the direct lookup path, FastMCP 4.1.0 applies the transform and returns the component without authorizing that final component. See Proof of conceptSave this as
Run it in an isolated environment:
Observed on 4.1.0 for a caller without the
ImpactA low-privilege caller can directly execute administrative tools hidden from listing, including their side effects and returned secrets. The same ordering flaw can expose protected resources, templates, or prompts. Recommended remediationApply component authorization to the final transformed component in every direct resolution/execution path, after all provider, server, and session transforms. Reuse one ordered resolver for list and direct operations so lookup never returns a transformed component before its applicable AI assistanceYes — OpenAI Codex assisted static analysis/PoC/writeup; reproduction was validated against stated version. Affected versions
3.3.0
3.3.0b1
3.3.0b2
3.3.1
3.4.0
3.4.0b1
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
+ 17 more Show less
3.4.7
3.4.8
3.4.9
4.0.0
4.0.1
4.0.10
4.0.11
4.0.2
4.0.3
4.0.4
4.0.5
4.0.6
4.0.7
4.0.8
4.0.9
4.1.0
4.1.1
Fixed in
3.4.10
4.1.2
References
Updated Oct 23, 2026 · Source: OSV.dev |