Every CVE Search/ Get API key

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

6.5 MediumFix available

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

0.40%Unchanged since Nov 6, 2026
90%50%10%1%

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 MediumCVSS: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 MediumCVSS: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/sdk all versions through 1.31.0
  • @modelcontextprotocol/client 2.0.0 through 2.2.0

Fix

Upgrade to:

  • 1.x: @modelcontextprotocol/sdk 1.32.0 or later
  • 2.x: @modelcontextprotocol/client 2.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 MediumCVSS: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 MediumCVSS: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 MediumCVSS: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/sdk all versions through 1.31.0
  • @modelcontextprotocol/client 2.0.0 through 2.2.0

Fix

Upgrade to:

  • 1.x: @modelcontextprotocol/sdk 1.32.0 or later
  • 2.x: @modelcontextprotocol/client 2.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 MediumCVSS: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

Affected packages
PackageAffectedFixed
@modelcontextprotocol/sdk
npm
before 1.32.0
1.32.0
@modelcontextprotocol/client
npm
2.0.0 up to 2.3.0
2.3.0
@modelcontextprotocol/sdk
TuxCare: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/sdk
TuxCare: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/sdk
TuxCare: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/sdk
TuxCare: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/sdk
TuxCare: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/sdk
TuxCare: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/client
TuxCare: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/sdk
TuxCare: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/sdk
TuxCare: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

History
RecordedChangedSources
affected, aliasesOSV
referencesOSV
affectedNVD
aliases, productsEUVD
description, products, references, severity, titleCVE List
factsGitHub Advisories
first indexedGitHub 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

Show 5 moreShow less
MoveEnter Open