CVE-2026-111769
Model Context Protocol TypeScript SDK: HTTP client transports and OAuth requests followed cross-origin redirects and re-sent custom headers and request bodies
The Model Context Protocol TypeScript SDK provides TypeScript client and server implementations of the Model Context Protocol. Prior to 1.32.0 in @modelcontextprotocol/sdk and from 2.0.0 until 2.3.0 in @modelcontextprotocol/client, the HTTP client transports and OAuth client requests followed redirects to a different origin while retaining custom request headers and, for HTTP 307 or 308 responses, request bodies. The affected surfaces are StreamableHTTPClientTransport, SSEClientTransport, and OAuth client functions such as auth(). The trigger is an HTTP redirect to another origin. Custom headers and mcp-session-id can be re-sent to the redirected origin. HTTP 307 and 308 redirects can also re-send the request body. OAuth request bodies can contain refresh_token and client_secret values. Current runtimes already strip the Authorization header across origins. stdio clients do not use the affected HTTP path. A malicious or compromised MCP or authorization server could therefore receive API keys, session identifiers, OAuth refresh tokens, or OAuth client secrets. Restoring unrestricted redirect following after upgrading restores the exposure. This issue is fixed in @modelcontextprotocol/sdk 1.32.0 and @modelcontextprotocol/client 2.3.0.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
6.5
Model Context Protocol TypeScript SDK: HTTP client transports and OAuth requests followed cross-origin redirects and re-sent custom headers and request bodies
The Model Context Protocol TypeScript SDK provides TypeScript client and server implementations of the Model Context Protocol. Prior to 1.32.0 in @modelcontextprotocol/sdk and from 2.0.0 until 2.3.0 in @modelcontextprotocol/client, the HTTP client transports and OAuth client requests followed redirects to a different origin while retaining custom request headers and, for HTTP 307 or 308 responses, request bodies. The affected surfaces are StreamableHTTPClientTransport, SSEClientTransport, and OAuth client functions such as auth(). The trigger is an HTTP redirect to another origin. Custom headers and mcp-session-id can be re-sent to the redirected origin. HTTP 307 and 308 redirects can also re-send the request body. OAuth request bodies can contain refresh_token and client_secret values. Current runtimes already strip the Authorization header across origins. stdio clients do not use the affected HTTP path. A malicious or compromised MCP or authorization server could therefore receive API keys, session identifiers, OAuth refresh tokens, or OAuth client secrets. Restoring unrestricted redirect following after upgrading restores the exposure. This issue is fixed in @modelcontextprotocol/sdk 1.32.0 and @modelcontextprotocol/client 2.3.0.
- Record
CVE-2026-111769- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-200
- Updated
- 2026-11-05
EUVDEUVD-2026-117802
6.5
The Model Context Protocol TypeScript SDK provides TypeScript client and server implementations of the Model Context Protocol. Prior to 1.32.0 in @modelcontextprotocol/sdk and from 2.0.0 until 2.3.0 in @modelcontextprotocol/client, the HTTP client transports and OAuth client requests followed redirects to a different origin while retaining custom request headers and, for HTTP 307 or 308 responses, request bodies. The affected surfaces are StreamableHTTPClientTransport, SSEClientTransport, and OAuth client functions such as auth(). The trigger is an HTTP redirect to another origin. Custom headers and mcp-session-id can be re-sent to the redirected origin. HTTP 307 and 308 redirects can also re-send the request body. OAuth request bodies can contain refresh_token and client_secret values. Current runtimes already strip the Authorization header across origins. stdio clients do not use the affected HTTP path. A malicious or compromised MCP or authorization server could therefore receive API keys, session identifiers, OAuth refresh tokens, or OAuth client secrets. Restoring unrestricted redirect following after upgrading restores the exposure. This issue is fixed in @modelcontextprotocol/sdk 1.32.0 and @modelcontextprotocol/client 2.3.0.
- Record
EUVD-2026-117802- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N - Updated
- 2026-11-05
GitHub AdvisoriesGHSA-6prh-2h8m-c8cw
6.5
MCP TypeScript client SDK: HTTP client transports and OAuth requests followed cross-origin redirects and re-sent custom headers and request bodies
Summary
In affected versions, the SDK's HTTP client transports and OAuth requests followed redirects to any origin.
If an MCP server or authorization server redirected a request to another origin, that origin received custom request headers (such as an X-API-Key set in requestInit.headers) and the mcp-session-id header. On a 307 or 308 it also received the request body, including OAuth token requests with their refresh_token and client_secret.
On current runtimes fetch already drops the Authorization header across origins.
Am I affected?
Yes, if your application uses StreamableHTTPClientTransport, SSEClientTransport, or the SDK's OAuth client functions such as auth(). stdio clients are not affected.
Affected versions:
@modelcontextprotocol/sdkall versions through 1.31.0@modelcontextprotocol/client2.0.0 through 2.2.0
Fix
Upgrade to:
- 1.x:
@modelcontextprotocol/sdk1.32.0 or later - 2.x:
@modelcontextprotocol/client2.3.0 or later
Redirects are now followed only within the same origin, and not at all in browsers. If your MCP server or authorization server redirects to another origin on purpose, configure the final URL instead. Setting redirectPolicy: 'follow' on a transport restores the old behaviour and the exposure.
If a redirect may have reached a host you do not control, rotate the API keys and client_secret your application held and revoke its tokens.
If you cannot upgrade yet, pass a fetch that refuses redirects, for example (url, init) => fetch(url, { ...init, redirect: 'error' }).
- Record
GHSA-6prh-2h8m-c8cw- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-200
- Updated
- 2026-11-03
NVD
6.5
The Model Context Protocol TypeScript SDK provides TypeScript client and server implementations of the Model Context Protocol. Prior to 1.32.0 in @modelcontextprotocol/sdk and from 2.0.0 until 2.3.0 in @modelcontextprotocol/client, the HTTP client transports and OAuth client requests followed redirects to a different origin while retaining custom request headers and, for HTTP 307 or 308 responses, request bodies. The affected surfaces are StreamableHTTPClientTransport, SSEClientTransport, and OAuth client functions such as auth(). The trigger is an HTTP redirect to another origin. Custom headers and mcp-session-id can be re-sent to the redirected origin. HTTP 307 and 308 redirects can also re-send the request body. OAuth request bodies can contain refresh_token and client_secret values. Current runtimes already strip the Authorization header across origins. stdio clients do not use the affected HTTP path. A malicious or compromised MCP or authorization server could therefore receive API keys, session identifiers, OAuth refresh tokens, or OAuth client secrets. Restoring unrestricted redirect following after upgrading restores the exposure. This issue is fixed in @modelcontextprotocol/sdk 1.32.0 and @modelcontextprotocol/client 2.3.0.
- Record
CVE-2026-111769- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-200
- Updated
- 2026-11-05
OSV
6.5
Model Context Protocol TypeScript SDK: HTTP client transports and OAuth requests followed cross-origin redirects and re-sent custom headers and request bodies
The Model Context Protocol TypeScript SDK provides TypeScript client and server implementations of the Model Context Protocol. Prior to 1.32.0 in @modelcontextprotocol/sdk and from 2.0.0 until 2.3.0 in @modelcontextprotocol/client, the HTTP client transports and OAuth client requests followed redirects to a different origin while retaining custom request headers and, for HTTP 307 or 308 responses, request bodies. The affected surfaces are StreamableHTTPClientTransport, SSEClientTransport, and OAuth client functions such as auth(). The trigger is an HTTP redirect to another origin. Custom headers and mcp-session-id can be re-sent to the redirected origin. HTTP 307 and 308 redirects can also re-send the request body. OAuth request bodies can contain refresh_token and client_secret values. Current runtimes already strip the Authorization header across origins. stdio clients do not use the affected HTTP path. A malicious or compromised MCP or authorization server could therefore receive API keys, session identifiers, OAuth refresh tokens, or OAuth client secrets. Restoring unrestricted redirect following after upgrading restores the exposure. This issue is fixed in @modelcontextprotocol/sdk 1.32.0 and @modelcontextprotocol/client 2.3.0.
- Record
CVE-2026-111769- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-200
- Updated
- 2026-11-07
OSVGHSA-6prh-2h8m-c8cw
6.5
MCP TypeScript client SDK: HTTP client transports and OAuth requests followed cross-origin redirects and re-sent custom headers and request bodies
Summary
In affected versions, the SDK's HTTP client transports and OAuth requests followed redirects to any origin.
If an MCP server or authorization server redirected a request to another origin, that origin received custom request headers (such as an X-API-Key set in requestInit.headers) and the mcp-session-id header. On a 307 or 308 it also received the request body, including OAuth token requests with their refresh_token and client_secret.
On current runtimes fetch already drops the Authorization header across origins.
Am I affected?
Yes, if your application uses StreamableHTTPClientTransport, SSEClientTransport, or the SDK's OAuth client functions such as auth(). stdio clients are not affected.
Affected versions:
@modelcontextprotocol/sdkall versions through 1.31.0@modelcontextprotocol/client2.0.0 through 2.2.0
Fix
Upgrade to:
- 1.x:
@modelcontextprotocol/sdk1.32.0 or later - 2.x:
@modelcontextprotocol/client2.3.0 or later
Redirects are now followed only within the same origin, and not at all in browsers. If your MCP server or authorization server redirects to another origin on purpose, configure the final URL instead. Setting redirectPolicy: 'follow' on a transport restores the old behaviour and the exposure.
If a redirect may have reached a host you do not control, rotate the API keys and client_secret your application held and revoke its tokens.
If you cannot upgrade yet, pass a fetch that refuses redirects, for example (url, init) => fetch(url, { ...init, redirect: 'error' }).
- Record
GHSA-6prh-2h8m-c8cw- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-200
- Updated
- 2026-11-02
Show 9 moreShow less
OSVCLSA-2026-1793100046 No score
TuxCare security update for @modelcontextprotocol/sdk (2 CVEs)
TuxCare rebuilt @modelcontextprotocol/sdk to address 2 CVEs. Fixed in 1.26.0-tuxcare.2.
- Record
CLSA-2026-1793100046- Updated
- 2026-11-02
OSVCLSA-2026-1793110107 No score
TuxCare security update for @modelcontextprotocol/sdk (1 CVE)
TuxCare rebuilt @modelcontextprotocol/sdk to address 1 CVE. Fixed in 1.30.0-tuxcare.3.
- Record
CLSA-2026-1793110107- Updated
- 2026-11-02
OSVCLSA-2026-1793112043 No score
TuxCare security update for @modelcontextprotocol/sdk (4 CVEs)
TuxCare rebuilt @modelcontextprotocol/sdk to address 4 CVEs. Fixed in 1.25.2-tuxcare.4.
- Record
CLSA-2026-1793112043- Updated
- 2026-11-02
OSVCLSA-2026-1793112371 No score
TuxCare security update for @modelcontextprotocol/sdk (6 CVEs)
TuxCare rebuilt @modelcontextprotocol/sdk to address 6 CVEs. Fixed in 1.13.3-tuxcare.2.
- Record
CLSA-2026-1793112371- Updated
- 2026-11-02
OSVCLSA-2026-1793113170 No score
TuxCare security update for @modelcontextprotocol/sdk (4 CVEs)
TuxCare rebuilt @modelcontextprotocol/sdk to address 4 CVEs. Fixed in 1.24.0-tuxcare.4.
- Record
CLSA-2026-1793113170- Updated
- 2026-11-02
OSVCLSA-2026-1793125609 No score
TuxCare security update for @modelcontextprotocol/sdk (1 CVE)
TuxCare rebuilt @modelcontextprotocol/sdk to address 1 CVE. Fixed in 1.29.0-tuxcare.5.
- Record
CLSA-2026-1793125609- Updated
- 2026-11-02
OSVCLSA-2026-1793269115 No score
TuxCare security update for @modelcontextprotocol/client (1 CVE)
TuxCare rebuilt @modelcontextprotocol/client to address 1 CVE. Fixed in 2.0.0-tuxcare.3.
- Record
CLSA-2026-1793269115- Updated
- 2026-11-02
OSVCLSA-2026-1793887992 No score
TuxCare security update for @modelcontextprotocol/sdk (2 CVEs)
TuxCare rebuilt @modelcontextprotocol/sdk to address 2 CVEs. Fixed in 1.30.1-tuxcare.3.
- Record
CLSA-2026-1793887992- Updated
- 2026-11-06
OSVCLSA-2026-1793887996 No score
TuxCare security update for @modelcontextprotocol/sdk (3 CVEs)
TuxCare rebuilt @modelcontextprotocol/sdk to address 3 CVEs. Fixed in 1.17.3-tuxcare.4.
- Record
CLSA-2026-1793887996- Updated
- 2026-11-06
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
@modelcontextprotocol/sdknpm |
before 1.32.0 | 1.32.0 |
@modelcontextprotocol/clientnpm |
2.0.0 up to 2.3.0 | 2.3.0 |
@modelcontextprotocol/sdkTuxCare:npm From an advisory covering 2 CVEs |
1.26.0-tuxcare.0 up to 1.26.0-tuxcare.2, plus listed versions 1.26.01.26.0-tuxcare.1 |
1.26.0-tuxcare.2 |
@modelcontextprotocol/sdkTuxCare:npm |
1.30.0-tuxcare.0 up to 1.30.0-tuxcare.3, plus listed versions 1.30.01.30.0-tuxcare.11.30.0-tuxcare.2 |
1.30.0-tuxcare.3 |
@modelcontextprotocol/sdkTuxCare:npm From an advisory covering 4 CVEs |
1.25.2-tuxcare.0 up to 1.25.2-tuxcare.4, plus listed versions 1.25.21.25.2-tuxcare.11.25.2-tuxcare.21.25.2-tuxcare.3 |
1.25.2-tuxcare.4 |
@modelcontextprotocol/sdkTuxCare:npm From an advisory covering 6 CVEs |
1.13.3-tuxcare.0 up to 1.13.3-tuxcare.2, plus listed versions 1.13.31.13.3-tuxcare.1 |
1.13.3-tuxcare.2 |
@modelcontextprotocol/sdkTuxCare:npm From an advisory covering 4 CVEs |
1.24.0-tuxcare.0 up to 1.24.0-tuxcare.4, plus listed versions 1.24.01.24.0-tuxcare.11.24.0-tuxcare.21.24.0-tuxcare.3 |
1.24.0-tuxcare.4 |
@modelcontextprotocol/sdkTuxCare:npm |
1.29.0-tuxcare.0 up to 1.29.0-tuxcare.5, plus listed versions 1.29.01.29.0-tuxcare.11.29.0-tuxcare.21.29.0-tuxcare.31.29.0-tuxcare.4 |
1.29.0-tuxcare.5 |
@modelcontextprotocol/clientTuxCare:npm |
2.0.0-tuxcare.0 up to 2.0.0-tuxcare.3, plus listed versions 2.0.02.0.0-tuxcare.12.0.0-tuxcare.2 |
2.0.0-tuxcare.3 |
@modelcontextprotocol/sdkTuxCare:npm From an advisory covering 2 CVEs |
1.30.1-tuxcare.0 up to 1.30.1-tuxcare.3, plus listed versions 1.30.11.30.1-tuxcare.11.30.1-tuxcare.2 |
1.30.1-tuxcare.3 |
@modelcontextprotocol/sdkTuxCare:npm From an advisory covering 3 CVEs |
1.17.3-tuxcare.0 up to 1.17.3-tuxcare.4, plus listed versions 1.17.31.17.3-tuxcare.11.17.3-tuxcare.21.17.3-tuxcare.3 |
1.17.3-tuxcare.4 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, aliases | OSV | |
| references | OSV | |
| affected | NVD | |
| aliases, products | EUVD | |
| description, products, references, severity, title | CVE List | |
| facts | GitHub Advisories | |
| first indexed | GitHub Advisories, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-111769 is a medium vulnerability (CVSS 6.5) in @modelcontextprotocol Client, published October 20, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.40%, the 34th percentile. Fixed in @modelcontextprotocol/sdk 1.32.0.
References
github.com/modelcontextprotocol/typescript-sdk/security/advisories/GHSA-6prh-2h8m-c8cw
github.com/modelcontextprotocol/typescript-sdk/pull/2901
github.com/modelcontextprotocol/typescript-sdk/pull/2902
github.com/modelcontextprotocol/typescript-sdk/commit/30bfe5139f4b0825c90cd725f9a7e3f9af5e120d
github.com/modelcontextprotocol/typescript-sdk/commit/433eb413dc305ebeb93b8ebcde0095a8fc0d5fa0
github.com/modelcontextprotocol/typescript-sdk/releases/tag/1.32.0
Show 5 moreShow less
github.com/modelcontextprotocol/typescript-sdk/releases/tag/@modelcontextprotocol/[email protected]
github.com/advisories/GHSA-6prh-2h8m-c8cw
github.com/CVEProject/cvelistV5/tree/main/cves/2026/111xxx/CVE-2026-111769.json
nvd.nist.gov/vuln/detail/CVE-2026-111769
github.com/modelcontextprotocol/typescript-sdk