Skip to main content

MCP TypeScript SDK CVE-2026-111768

HIGH
Allocation of Resources Without Limits or Throttling (CWE-770)
2026-10-20 https://github.com/modelcontextprotocol/typescript-sdk GHSA-46jr-4wx8-v453
7.5
CVSS 3.1 · GitHub Advisory
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach HTTP-exposed MCP server
  2. Exploit
    Send single tools/call with massive array/object arguments
  3. Execution
    Unbounded element validation exhausts Node.js heap
  4. Impact
    Process aborts with OOM, service denied

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an affected MCP server reachable over the HTTP transport (stdio-only servers are explicitly NOT affected) that registers McpServer tools whose arguments accept arrays or records, with untrusted clients able to send tools/call requests. No authentication is needed unless requests are authenticated before reaching the SDK, and no user interaction is required; the attack works against default configurations because maxToolInputElements did not exist (and is off by default even after patching) and the default 4 MiB maxRequestBodySize is large enough to carry an exhausting payload. Limiting factors that reduce real-world exposure: upstream authentication/proxy filtering, stdio-only deployment, tools that accept no array/object inputs, and an already-lowered maxRequestBodySize.

Impact

This is a genuine but bounded availability risk. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 7.5) is internally consistent with the description: a single HTTP request within the default 4 MiB body limit triggers unbounded validation of array elements and object keys (CWE-770), exhausting the Node.js heap and crashing the process with no credentials or user interaction required against affected HTTP-exposed servers. Impact is confined to availability (C:N/I:N) - there is no data exposure or code execution. No EPSS score, CISA KEV listing, or public POC was provided, so there is no public exploit identified at time of analysis and no evidence of active exploitation; the 7.5 rating is driven purely by easy, unauthenticated, network-reachable DoS rather than by observed attacks. The main factor tempering real-world risk is scope: only servers using the HTTP transport whose McpServer tools accept array or record inputs are exploitable, stdio-only servers are not affected, and many deployments authenticate requests before they reach the SDK. Treat this as a real patch-and-configure priority for any internet- or untrusted-client-facing MCP HTTP server, but as low urgency for stdio-only or fully authenticated internal deployments.

Exploit ScenarioDerived

An attacker who can reach an affected MCP server over HTTP sends a single tools/call request - under the default 4 MiB size limit - whose arguments contain a deeply/widely nested array or object with a very large number of elements. The SDK validates every element without bound, exhausting the V8 heap and crashing the Node.js process with 'JavaScript heap out of memory', denying service to all clients. No public exploit code was identified, but the attack requires no authentication (unless requests are authenticated upstream) and low complexity, making it trivial to reproduce.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 20, 2026

Denial of service in the MCP TypeScript SDK affects HTTP-reachable servers running @modelcontextprotocol/sdk 1.3.0 through 1.31.0 or @modelcontextprotocol/server 2.0.0 through 2.2.0, allowing unauthenticated remote attackers to exhaust Node.js heap memory with a single tools/call request containing very large arrays or records. The default 4 MiB request-size limit is large enough to carry an exhausting payload, causing the process to abort with a JavaScript heap out-of-memory error. Vendor patches are available in 1.32.0 and 2.3.0, but the new maxToolInputElements guard is opt-in and disabled by default; no public exploit code was identified at time of analysis, and stdio-only servers are not affected.

RemediationAI

Upgrade to @modelcontextprotocol/sdk 1.32.0 or later for the 1.x line, or @modelcontextprotocol/server 2.3.0 or later for the 2.x line, following the vendor advisory at https://github.com/modelcontextprotocol/typescript-sdk/security/advisories/GHSA-46jr-4wx8-v453. Upgrading alone does not mitigate the issue: set maxToolInputElements in the McpServer constructor to a value just above the largest legitimate arguments your tools accept, for example new McpServer(info, { maxToolInputElements: 10000 }), and lower maxRequestBodySize on the transport or createMcpHandler(), or set the body limit in express.json() or Fastify if you parse the body yourself. If you cannot upgrade, lower the request body size first; maxRequestBodySize requires @modelcontextprotocol/sdk 1.30.1 or @modelcontextprotocol/server 2.1.0, and older versions should use a reverse proxy to enforce the limit. The trade-off is that setting either limit too low will reject legitimate large tool calls, and maxToolInputElements covers only tool arguments, not the rest of the request body.

Affected Packages

npm @modelcontextprotocol/sdk fix: 1.32.0
npm @modelcontextprotocol/server fix: 2.3.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected components are npm packages that implement Model Context Protocol servers in TypeScript on Node.js. An MCP server exposes tools through McpServer, and a tools/call request supplies arguments that can contain arrays and objects. In vulnerable versions, validation placed no ceiling on the combined number of array elements and object keys processed in one request, so a payload within the transport's default 4 MiB maxRequestBodySize could consume enough memory during parsing and validation to abort the process. This is CWE-770, Allocation of Resources Without Limits or Throttling. The patch adds an iterative element-counting guard, maxToolInputElements, which runs before the input schema and returns an isError: true tool result when a call exceeds the configured limit, while allowing the server to keep serving other calls. The guard is off by default and must be explicitly configured; maxRequestBodySize remains the primary transport-level request-size limit, and the stdio transport is not network-reachable and is explicitly unaffected.

Know when Node.js gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

GitHub Advisory PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Single unauthenticated HTTP request under the default size limit crashes the server, so AV:N/AC:L/PR:N/UI:N with availability-only impact A:H and no C/I.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

DescriptionGitHub Advisory

Summary

In affected versions, servers put no limit on how many array elements and object keys they validated in one request. One HTTP request within the default 4 MiB size limit could exhaust the server's memory, and the process aborted with JavaScript heap out of memory.

No credentials are needed, unless you authenticate requests before they reach the SDK.

Am I affected?

Yes, if clients you do not fully trust can reach your server over HTTP. The risk is highest for McpServer tools whose input contains an array or a record. stdio-only servers are not affected.

Affected versions:

  • @modelcontextprotocol/sdk 1.3.0 through 1.31.0
  • @modelcontextprotocol/server 2.0.0 through 2.2.0

Fix

Upgrade to:

  • 1.x: @modelcontextprotocol/sdk 1.32.0 or later
  • 2.x: @modelcontextprotocol/server 2.3.0 or later

Upgrading alone changes nothing. The patched versions add an McpServer option, maxToolInputElements, that is off by default. Make both of these changes:

  1. Set maxToolInputElements just above the largest input your tools need, for example new McpServer(info, { maxToolInputElements: 10_000 }). It counts array elements and object keys in a call's arguments. A call over the limit gets an isError: true result.
  2. Lower the request size limit to what your tools need. The option covers tool arguments only, and the size limit covers everything else. Set maxRequestBodySize on the transport or createMcpHandler(). If you parse the body yourself, for example with express.json() or Fastify, set that parser's limit.

If you cannot upgrade yet, make the second change. maxRequestBodySize needs @modelcontextprotocol/sdk 1.30.1 or @modelcontextprotocol/server 2.1.0. Below that, use a reverse proxy.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 1,397 npm packages depend on @modelcontextprotocol/server (1,047 direct, 357 indirect)

Ecosystem-wide dependent count for version 2.0.0.

Technical POC Analysis

CWE-770 (Allocation of Resources Without Limits or Throttling): McpServer validated tools/call arguments without any cap on the number of array elements and object keys, so the per-element work and a…

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

A high-severity denial-of-service flaw in the MCP TypeScript SDK allows a remote attacker to crash HTTP-reachable MCP servers by sending a single tools/call request with very large arrays or records, exhausting Node.js heap memory and aborting the process. Any team operating AI agent or tool-integration services built on the affected SDK or server packages is exposed to sudden service outages that can be triggered repeatedly at negligible cost to the attacker. Leadership should care because the fix requires both upgrading and explicitly enabling a new opt-in guard, meaning a standard version bump alone leaves the exposure in place.

Business Impact: High
Compensating Controls

Apply vendor patch. Until upgrade and configuration are complete, lower the HTTP request-size limit below the 4 MiB default, front the servers with a proxy or gateway that enforces payload-size and rate limits on tools/call, cap container memory with automatic restart, and restrict network reachability of MCP endpoints to trusted callers only.

Threat Intelligence Overview

Prevalence
Medium
official MCP TypeScript SDK, popular in fast-growing AI agent tooling ecosystem
Threat Intel
1
1 source
Data Quality
3 sources
Confidence: Low
NVD CVE.org GHSA GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

Affected Products (CPE)GitHub Advisory

pkg:npm/@modelcontextprotocol_sdk
pkg:npm/@modelcontextprotocol_server
CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy