Description
The Model Context Protocol TypeScript SDK provides TypeScript client and server implementations of the Model Context Protocol. From 1.6.0 until 1.32.0 in @modelcontextprotocol/sdk, from 2.0.0 until 2.3.0 in @modelcontextprotocol/server, from 2.0.0 until 2.0.2 in @modelcontextprotocol/express, and from 2.0.0 until 2.3.1 in @modelcontextprotocol/server-legacy, server-side bearer authentication could accept a valid access token issued for a different service because the SDK did not enforce the token audience. The affected surface is server-side HTTP bearer authentication. The trigger is a valid token whose audience names another service. The authorization server must issue tokens for multiple services, and the application's verifyAccessToken() must not independently validate aud. Applications already validating aud inside verifyAccessToken() are not affected. An attacker with a token for another service could authenticate to the MCP server and obtain the confidentiality and integrity capabilities granted to an authenticated caller. Upgrading alone leaves the new audience validation disabled. Operators must enable audience validation and provide the token audience together. Enabling only the expected audience check causes every request to receive HTTP 401. This issue is fixed in @modelcontextprotocol/sdk 1.32.0, @modelcontextprotocol/server 2.3.0, @modelcontextprotocol/express 2.0.2, and @modelcontextprotocol/server-legacy 2.3.1.
Published: 2026-11-05
Score: 6.8 Medium
EPSS: n/a
KEV: No
Impact: Authentication Bypass
Action: Immediate Patch
AI Analysis

Impact

The vulnerability arises because the Model Context Protocol SDK allows server‑side bearer authentication to accept a JSON Web Token that was issued for a different service; the SDK does not enforce the token audience claim. An attacker who possesses a valid token for one service can present it to another service and gain both confidentiality and integrity privileges normally reserved for an authenticated caller. This flaw results in an authentication bypass that permits unauthorized access to the MCP server.

Affected Systems

Affected products include the @modelcontextprotocol/sdk from versions 1.6.0 to 1.32.0, @modelcontextprotocol/server from 2.0.0 to 2.3.0, @modelcontextprotocol/express from 2.0.0 to 2.0.2, and @modelcontextprotocol/server‑legacy from 2.0.0 to 2.3.1. The issue exists in all server‑side HTTP bearer authentication implementations of these packages.

Risk and Exploitability

The CVSS score of 6.8 indicates a moderate to high severity. The EPSS score is not available, and the vulnerability is not listed in the CISA KEV catalog, but the attack vector is likely remote via any exposed API that accepts bearer tokens. Exploitation requires an attacker to obtain a legitimate token issued for another service and to have the target service use an unmodified verifyAccessToken() that does not independently validate the aud claim. Because upgrading alone does not enable the audience check, operators must explicitly enable and configure audience validation to mitigate this risk.

Generated by OpenCVE AI on November 5, 2026 at 22:21 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade to the latest releases: @modelcontextprotocol/sdk 1.32.0, @modelcontextprotocol/server 2.3.0, @modelcontextprotocol/express 2.0.2, and @modelcontextprotocol/server‑legacy 2.3.1.
  • Verify that your verifyAccessToken() implementation performs audience validation and modifies it if necessary.
  • Enable audience validation on the server and provide the expected audience value for each service; test the configuration to confirm that requests using tokens for other services are rejected with HTTP 401.

Generated by OpenCVE AI on November 5, 2026 at 22:21 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-rvq5-wwqv-78pq MCP TypeScript SDK: Server bearer authentication accepted tokens issued for another service
History

Thu, 05 Nov 2026 21:15:00 +0000

Type Values Removed Values Added
Description The Model Context Protocol TypeScript SDK provides TypeScript client and server implementations of the Model Context Protocol. From 1.6.0 until 1.32.0 in @modelcontextprotocol/sdk, from 2.0.0 until 2.3.0 in @modelcontextprotocol/server, from 2.0.0 until 2.0.2 in @modelcontextprotocol/express, and from 2.0.0 until 2.3.1 in @modelcontextprotocol/server-legacy, server-side bearer authentication could accept a valid access token issued for a different service because the SDK did not enforce the token audience. The affected surface is server-side HTTP bearer authentication. The trigger is a valid token whose audience names another service. The authorization server must issue tokens for multiple services, and the application's verifyAccessToken() must not independently validate aud. Applications already validating aud inside verifyAccessToken() are not affected. An attacker with a token for another service could authenticate to the MCP server and obtain the confidentiality and integrity capabilities granted to an authenticated caller. Upgrading alone leaves the new audience validation disabled. Operators must enable audience validation and provide the token audience together. Enabling only the expected audience check causes every request to receive HTTP 401. This issue is fixed in @modelcontextprotocol/sdk 1.32.0, @modelcontextprotocol/server 2.3.0, @modelcontextprotocol/express 2.0.2, and @modelcontextprotocol/server-legacy 2.3.1.
Title Model Context Protocol TypeScript SDK: Server bearer authentication accepted tokens issued for another service
Weaknesses CWE-863
References
Metrics cvssV3_1

{'score': 6.8, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-11-05T21:08:55.758Z

Reserved: 2026-10-16T17:52:09.082Z

Link: CVE-2026-111771

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-11-05T21:18:35.973

Modified: 2026-11-05T21:18:35.973

Link: CVE-2026-111771

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-11-05T22:30:17Z

Weaknesses