MCP TypeScript SDK CVE-2026-111768
HIGHAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach HTTP-exposed MCP server
-
ExploitSend single tools/call with massive array/object arguments
-
ExecutionUnbounded element validation exhausts Node.js heap
-
ImpactProcess 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
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.
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
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/sdk1.3.0 through 1.31.0@modelcontextprotocol/server2.0.0 through 2.2.0
Fix
Upgrade to:
- 1.x:
@modelcontextprotocol/sdk1.32.0 or later - 2.x:
@modelcontextprotocol/server2.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:
- Set
maxToolInputElementsjust above the largest input your tools need, for examplenew McpServer(info, { maxToolInputElements: 10_000 }). It counts array elements and object keys in a call's arguments. A call over the limit gets anisError: trueresult. - Lower the request size limit to what your tools need. The option covers tool arguments only, and the size limit covers everything else. Set
maxRequestBodySizeon the transport orcreateMcpHandler(). If you parse the body yourself, for example withexpress.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- 1,397 npm packages depend on @modelcontextprotocol/server (1,047 direct, 357 indirect)
Ecosystem-wide dependent count for version 2.0.0.
Articles & Coverage 1
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
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.
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Affected Products (CPE)GitHub Advisory
Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
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
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
GHSA-46jr-4wx8-v453
NVD
CVE.org
Exploit-DB