Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessConnect as MCP client in new session
-
ExploitCall tasks/list on shared store
-
ExecutionRead other sessions' task results
-
ImpactCancel or disrupt victim tasks
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Exploitable only when an HTTP-based MCP server explicitly passes a single shared InMemoryTaskStore (or a custom TaskStore that ignores sessionId) to McpServer or Server and serves multiple client sessions from that one store, using the experimental, deprecated tasks feature. Limiting factors: the feature is not enabled by default (operators can confirm non-exposure via 'grep -ri taskstore'); it is deprecated and removed in the 2026-07-28 spec; stdio servers, stateless/no-session HTTP servers, and deployments using one InMemoryTaskStore per session are not vulnerable to cross-session leakage; 2.x packages are unaffected. Exposure is confined to versions 1.24.0 through 1.31.0. |
| Impact | This is a CWE-639 authorization-bypass (IDOR-style cross-session access) flaw with a vendor/NVD CVSS of 8.6 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L), implying a remote, low-complexity, unauthenticated issue with high confidentiality and low integrity/availability impact. However, several signals pull the real-world priority well below what the 8.6 base score suggests. No EPSS probability, no CISA KEV listing, and no public exploit code are present in the input - exploitation status is therefore 'no public exploit identified at time of analysis.' Most importantly, the affected code path is the experimental, now-deprecated tasks feature (taskStore), which is OFF by default: a server is only exposed if it explicitly passes a single shared InMemoryTaskStore to McpServer/Server across multiple sessions. The GHSA advisory itself notes the feature is deprecated and replaced in the 2026-07-28 spec, and that a simple grep for 'taskstore' tells operators whether they are affected at all. The PR:N in the vector is defensible because any connecting MCP client can abuse an unscoped store, but AV:N/AC:L understate the deployment precondition (a specific non-default, experimental configuration). Net assessment: a genuine access-control bug that should be patched, but in practice this is a high-CVSS / low-real-world-exposure issue driven by a niche opt-in feature rather than a broadly exploitable, actively-targeted vulnerability. |
| Exploit ScenarioDerived | An MCP HTTP server is configured with a single shared InMemoryTaskStore passed to McpServer/Server and serves multiple client sessions. A malicious or unauthorized client connects in its own session and calls tasks/list, tasks/get and tasks/result to read tasks (and their results) created by other clients, and tasks/cancel to abort them. No public proof-of-concept exists; exploitation leverages the documented low-complexity, network-reachable API surface with no authentication qualifier beyond being a connected client. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 20, 2026
Cross-session task access in the MCP TypeScript SDK (@modelcontextprotocol/sdk 1.24.0 through 1.31.0) allows any client sharing a single InMemoryTaskStore to list, read, and cancel other clients' experimental task records and results, an IDOR-style authorization bypass rated 8.6 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L) with high confidentiality impact and low integrity/availability impact. The flaw is only reachable where an HTTP MCP server explicitly passes a shared taskStore to McpServer or Server and serves multiple sessions from it using the deprecated experimental tasks feature; stdio servers, stateless HTTP servers, and one-store-per-session deployments are not exposed, and 2.x packages are unaffected. There is no public exploit identified at time of analysis and no confirmed active exploitation; the vendor patched the SDK in 1.32.0 by binding each task to the session that created it.
RemediationAI
Vendor-released patch: @modelcontextprotocol/sdk 1.32.0 - upgrade to 1.32.0 or later, which stores each task's sessionId and returns 'not found' for cross-session get/result/cancel while excluding foreign tasks from list (advisory: https://github.com/modelcontextprotocol/typescript-sdk/security/advisories/GHSA-22jm-h49p-29qw, fix PR https://github.com/modelcontextprotocol/typescript-sdk/pull/2925, commit 727075b5bbeb77fbea22041b36b72a73042160fa). First confirm exposure with grep -ri taskstore --exclude-dir=node_modules; if it returns nothing, no action beyond routine upgrade is needed. If upgrading is blocked, either remove the taskStore option entirely (this disables the experimental tasks capability - clients relying on tasks/get and tasks/result will fail) or instantiate a separate InMemoryTaskStore per session (fixes leakage but loses intentional cross-session task sharing and still requires distinct session identifiers). Stopping use of the deprecated experimental tasks is the vendor's recommended path since the 2026-07-28 specification replaces it; note that with session-scoped stores a client returning under a new session id, including every reconnect over legacy SSEServerTransport, can no longer reach its earlier tasks, and any custom TaskStore must itself enforce sessionId the way the patched InMemoryTaskStore does - otherwise multi-session sharing persists.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The MCP TypeScript SDK implements the Model Context Protocol's experimental tasks capability through a TaskStore interface, with InMemoryTaskStore (src/experimental/tasks/stores/in-memory.ts) as the shipped reference implementation; the built-in tasks/get, tasks/result, tasks/list, and tasks/cancel handlers pass the request's session to the store. Affected builds accepted a sessionId argument in createTask, getTask, getTaskResult, storeTaskResult, updateTaskStatus and listTasks but discarded it (parameter named _sessionId) and keyed all state purely by task id, so any client of the same store could enumerate and manipulate every task - a CWE-639 authorization bypass via user-controlled key. The fix (PR 2925, commit 727075b5) persists sessionId on the StoredTask record and adds a private lookup() helper that returns the task only when the stored sessionId matches the caller's, treating cross-session access as an unknown task id; listTasks with a sessionId returns that session's tasks plus tasks created without one, and the TaskMessageQueue interface now receives the connection's sessionId so requests referencing a related task (io.modelcontextprotocol/related-task in _meta) are resolved against the requesting session before anything is queued. Calls without a sessionId (server-held store, stdio, stateless HTTP) behave as before, and the patch notes residual sharing where a custom TaskStore ignores the sessionId, where Streamable HTTP runs with sessionIdGenerator: undefined, or where a sessionless endpoint shares a store with a sessioned one; it also warns a sessionIdGenerator must never repeat a value, since sessions sharing an id share tasks. The affected package maps to CPE cpe:2.3:a:modelcontextprotocol:typescript-sdk.
Know when Typescript Sdk 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:H/I:L/A:L
Any connected client can reach an unscoped shared store over the network with no auth (PR:N/AV:N/AC:L); reading others' tasks gives C:H, while cancelling tasks yields only I:L/A:L.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
MCP TypeScript SDK is the official TypeScript SDK for Model Context Protocol servers and clients. From version 1.24.0 to before version 1.32.0, the experimental tasks feature (taskStore) did not check which session created a task. Clients sharing one InMemoryTaskStore could list, read and cancel each other's tasks. This issue has been patched in version 1.32.0.
Technical POC Analysis
CWE-639 (Authorization Bypass Through User-Controlled Key), with CWE-862 (Missing Authorization) also assigned.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
The MCP TypeScript SDK versions 1.24.0 through 1.31.0 have a cross-session task access flaw that can expose or allow cancellation of other clients’ experimental task records and results when an HTTP MCP server shares a single InMemoryTaskStore across sessions. The issue is limited to deployments using the deprecated experimental tasks feature with a shared store, but where present it creates cross-client confidentiality risk and possible service disruption; no public exploit identified at time of analysis. Leadership should care because multi-session HTTP services could leak sensitive task data between clients, making inventory and upgrade to 1.32.0 or later a priority.
Apply vendor patch.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
EUVD-2026-105256
GHSA-22jm-h49p-29qw
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB