Secure Autonomous
FeedbackGet alertsCheck a deployment
Register › REG-0028 › evidence

Model Context Protocol (MCP) TypeScript software development kit (SDK): a malicious MCP server can make a connected client send it stored OAuth credentials with no user interaction, patched 28 September 2026

The typed evidence object. This is the working store; the case page is the reader's form.

Layer / facetValueTypeSourcesConf.
Mandate: principalThe owner of an application that uses the SDK as an MCP client over HTTP with an authProvider and holds credentials for a legitimate authorization serverfactNational Vulnerability Database (NVD) record CVE-2026-104850, 'MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server' (CVE numbering authority: GitHub); CVE description and CVSS 3.1 score 7.5 supplied by GitHub; NVD status Awaiting Analysishigh
Mandate: objectivenot evidenced in sourceassertionNational Vulnerability Database (NVD) record CVE-2026-104850, 'MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server' (CVE numbering authority: GitHub); CVE description and CVSS 3.1 score 7.5 supplied by GitHub; NVD status Awaiting Analysislow
ActorThe SDK's OAuth client support in an MCP client, holding a stored refresh_token and client_secret (1.x) or the configured client_secret or signed assertion of a bundled non-interactive provider (1.x and 2.x)factNational Vulnerability Database (NVD) record CVE-2026-104850, 'MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server' (CVE numbering authority: GitHub); CVE description and CVSS 3.1 score 7.5 supplied by GitHub; NVD status Awaiting Analysishigh
InputsProtected resource metadata from the MCP server the client connected to, naming the authorization server; a malicious or compromised MCP server could name its ownfactNational Vulnerability Database (NVD) record CVE-2026-104850, 'MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server' (CVE numbering authority: GitHub); CVE description and CVSS 3.1 score 7.5 supplied by GitHub; NVD status Awaiting Analysishigh
DecisionThe client let the MCP server decide which authorization server received its OAuth credentials, without any user interactionfactNational Vulnerability Database (NVD) record CVE-2026-104850, 'MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server' (CVE numbering authority: GitHub); CVE description and CVSS 3.1 score 7.5 supplied by GitHub; NVD status Awaiting Analysis; GitLab advisory database entry for @modelcontextprotocol/sdk CVE-2026-104850, citing GHSA-6qxp-vccf-f47h, fix commit edd12e2, pull request 2887 and release v2.2.0high
Envelope: authorityStored and pre-provisioned credentials were not bound to the authorization server they belong tofactNational Vulnerability Database (NVD) record CVE-2026-104850, 'MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server' (CVE numbering authority: GitHub); CVE description and CVSS 3.1 score 7.5 supplied by GitHub; NVD status Awaiting Analysishigh
ActionThe client sends the refresh_token and client_secret stored from an earlier sign-in (1.x), or the configured client_secret or signed assertion of a bundled non-interactive provider (1.x and 2.x), to the authorization server the MCP server namedfactNational Vulnerability Database (NVD) record CVE-2026-104850, 'MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server' (CVE numbering authority: GitHub); CVE description and CVSS 3.1 score 7.5 supplied by GitHub; NVD status Awaiting Analysishigh
OutcomeState: averted by disclosure. No exploitation reported in the sources. As of Oct 2026.assertionNational Vulnerability Database (NVD) record CVE-2026-104850, 'MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server' (CVE numbering authority: GitHub); CVE description and CVSS 3.1 score 7.5 supplied by GitHub; NVD status Awaiting Analysis; GitLab advisory database entry for @modelcontextprotocol/sdk CVE-2026-104850, citing GHSA-6qxp-vccf-f47h, fix commit edd12e2, pull request 2887 and release v2.2.0medium
Evidence: eventMaintainers' repository advisory GHSA-6qxp-vccf-f47h, published 30 September 2026 and crediting three reporters; GitHub advisory database entry, CVE-2026-104850 record and National Vulnerability Database listing dated 6 October 2026; CVSS (a severity score) version 3.1 base 7.5, High, supplied by GitHub; weaknesses CWE-345 (insufficient verification of data authenticity) and CWE-522 (insufficiently protected credentials)factmodelcontextprotocol/typescript-sdk repository security advisory GHSA-6qxp-vccf-f47h: MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server (published by maintainer maxisbey on 30 September 2026, crediting three reporters; full text read as mirrored at api.osv.dev/v1/vulns/GHSA-6qxp-vccf-f47h and in the GitHub advisory database, entry dated 6 October 2026); National Vulnerability Database (NVD) record CVE-2026-104850, 'MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server' (CVE numbering authority: GitHub); CVE description and CVSS 3.1 score 7.5 supplied by GitHub; NVD status Awaiting Analysis; GitLab advisory database entry for @modelcontextprotocol/sdk CVE-2026-104850, citing GHSA-6qxp-vccf-f47h, fix commit edd12e2, pull request 2887 and release v2.2.0high
Recovery: technicalPatched in @modelcontextprotocol/sdk 1.31.0 and @modelcontextprotocol/client 2.2.0 (and @modelcontextprotocol/core 2.2.0 if imported directly), released 28 September 2026: the client records the authorization server as issuer on saved credentials and does not send them to a different one. Upgrading is not enough for bundled providers (pass expectedIssuer), credentials saved without an issuer (add it or clear them) or custom OAuthClientProvider implementations (persist issuer). Not covered: a new interactive sign-in, direct refreshAuthorization() and exchangeAuthorization() calls, and 2.x with skipIssuerMetadataValidation: true. The advisory says to rotate the client secret or signing key and revoke tokens if an affected client may have connected to an untrusted MCP server. Workarounds: 2.0.0 and 2.1.0 already accept expectedIssuer; on 1.x, connect OAuth-enabled clients only to trusted MCP serversfactmodelcontextprotocol/typescript-sdk repository security advisory GHSA-6qxp-vccf-f47h: MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server (published by maintainer maxisbey on 30 September 2026, crediting three reporters; full text read as mirrored at api.osv.dev/v1/vulns/GHSA-6qxp-vccf-f47h and in the GitHub advisory database, entry dated 6 October 2026); National Vulnerability Database (NVD) record CVE-2026-104850, 'MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server' (CVE numbering authority: GitHub); CVE description and CVSS 3.1 score 7.5 supplied by GitHub; NVD status Awaiting Analysis; modelcontextprotocol/typescript-sdk on GitHub: commit 51ad4f0, '[v1.x] Bind stored OAuth credentials to the authorization server that issued them (#2888)', 28 September 2026; released as @modelcontextprotocol/sdk 1.31.0, published to npm on 28 September 2026; Release 2.2.0 · modelcontextprotocol/typescript-sdk (tag v2.2.0, 28 September 2026; @modelcontextprotocol/client 2.2.0 published to npm the same day)high
Recovery: accountabilityCoordinated disclosure through the maintainers' security advisory, which credits three reporters; the patched releases (28 September 2026) came out two days before the advisory was published (30 September 2026)factmodelcontextprotocol/typescript-sdk repository security advisory GHSA-6qxp-vccf-f47h: MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server (published by maintainer maxisbey on 30 September 2026, crediting three reporters; full text read as mirrored at api.osv.dev/v1/vulns/GHSA-6qxp-vccf-f47h and in the GitHub advisory database, entry dated 6 October 2026); modelcontextprotocol/typescript-sdk on GitHub: commit 51ad4f0, '[v1.x] Bind stored OAuth credentials to the authorization server that issued them (#2888)', 28 September 2026; released as @modelcontextprotocol/sdk 1.31.0, published to npm on 28 September 2026; Release 2.2.0 · modelcontextprotocol/typescript-sdk (tag v2.2.0, 28 September 2026; @modelcontextprotocol/client 2.2.0 published to npm the same day)high

Controls

StatusControlCanonical
failedStored credentials were not bound to the authorization server they belong toC-A2 Authority binding
failedThe client did not verify that the authorization server named in server-supplied metadata was the one the credentials belonged toC-A1 Actor identity verification
succeededCoordinated disclosure and fixC-O1 Coordinated disclosure program

Inference

inference The record shows that the OAuth client in the Model Context Protocol (MCP) TypeScript software development kit did not tie stored or configured credentials to the authorization server they came from, so an MCP server the client connected to could name a different authorization server and the client would send it those credentials without asking the user. The maintainers' patch records that server as the credentials' issuer and refuses to send them elsewhere, but by the advisory's own account it needs changes beyond upgrading in several setups and does not cover a new interactive sign-in. The record does not show that anyone exploited the flaw, and none of its sources includes a demonstration of an attack.

Sources

IDRecordTypeLink
NVD-104850National Vulnerability Database (NVD) record CVE-2026-104850, 'MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server' (CVE numbering authority: GitHub); CVE description and CVSS 3.1 score 7.5 supplied by GitHub; NVD status Awaiting Analysisstandards body
nvd.nist.gov ↗
GLADGitLab advisory database entry for @modelcontextprotocol/sdk CVE-2026-104850, citing GHSA-6qxp-vccf-f47h, fix commit edd12e2, pull request 2887 and release v2.2.0public record
advisories.gitlab.com ↗
GHSAmodelcontextprotocol/typescript-sdk repository security advisory GHSA-6qxp-vccf-f47h: MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server (published by maintainer maxisbey on 30 September 2026, crediting three reporters; full text read as mirrored at api.osv.dev/v1/vulns/GHSA-6qxp-vccf-f47h and in the GitHub advisory database, entry dated 6 October 2026) (interest: maintainers describing their own software)company
primary record
github.com ↗
checked 2026-10-21
FIX-1Xmodelcontextprotocol/typescript-sdk on GitHub: commit 51ad4f0, '[v1.x] Bind stored OAuth credentials to the authorization server that issued them (#2888)', 28 September 2026; released as @modelcontextprotocol/sdk 1.31.0, published to npm on 28 September 2026 (interest: maintainers' own repository)company
primary record
github.com ↗
checked 2026-10-21
REL-220Release 2.2.0 · modelcontextprotocol/typescript-sdk (tag v2.2.0, 28 September 2026; @modelcontextprotocol/client 2.2.0 published to npm the same day) (interest: maintainers' own repository)company
primary record
github.com ↗
checked 2026-10-21

Help shape the Register

A person reads every answer; changes it leads to are logged in the methodology. To dispute a claim or reply for a named company, use Respond, dispute, or submit.

Did this page help with what you came to do?