MCP ecosystem CVE ledger
Published CVEs in the MCP ecosystem that matter to anyone running MCP servers behind Hangar — what each one is, and whether Hangar's controls relate to it. Including when they do not.
Updated August 9, 2026
MCP ecosystem CVE ledger
An evergreen record of published CVEs in the Model Context Protocol ecosystem — the protocol SDKs and the servers people run — with one entry per CVE and one anchor per entry, so an advisory can be deep-linked from an issue, a ticket, or a scanner note.
Each entry says three things: what the vulnerability is, what it affects, and how Hangar’s controls relate to it — including the cases where the honest answer is they do not. Hangar is a policy enforcement plane. It enforces deterministic policy on calls that pass through it and records what happened; it does not patch someone else’s code, and it cannot enforce on a connection that never reaches it.
This ledger is a pointer, not a replacement: every entry links to the upstream advisory, and where Hangar published a full write-up, to that too.
CVE-2026-59950
Missing Host and Origin validation in the deprecated websocket_server
transport of the upstream MCP Python SDK. CVSS 7.6 (HIGH), CWE-346
(Origin Validation Error). Because browsers do not apply the same-origin policy
to WebSocket connections, a malicious page could complete a handshake against a
local MCP server and drive it as the user — a cross-site WebSocket hijacking
(CSWSH) path, with DNS rebinding as a variant.
| Affected component | MCP Python SDK (mcp) — the deprecated websocket_server transport |
| Affected versions | mcp before 1.28.1 |
| Fixed in | mcp 1.28.1 |
| Severity | CVSS 7.6 — HIGH |
| In Hangar’s own code | No |
Credit to the MCP Python SDK maintainers, who shipped the fix in mcp 1.28.1.
How Hangar’s controls relate
This was a supply-chain gap in a dependency, not a vulnerability in Hangar’s
own code. Hangar has never used the SDK’s deprecated websocket_server
transport — its own WebSocket endpoints are a separate implementation — so the
vulnerable code path was not reachable through Hangar. What was wrong is that
Hangar’s published dependency floor read mcp>=1.0.0, which meant a fresh
install could still resolve a vulnerable SDK into your environment. MCP Hangar
1.5.1 raised the floor to mcp>=1.28.1, and 1.6.0 added handshake
validation at Hangar’s own ASGI edge as defence in depth. The full advisory has
the detail and the upgrade steps.
Where it does not help. If you run an MCP server that uses the SDK’s
websocket_server transport and something can reach that server directly, a
Hangar policy does not mitigate this CVE. Enforcement applies to calls that pass
through the enforcement plane; a browser-originated handshake that goes straight
to the server never enters that path, so no allow/deny rule, egress policy, or
approval gate is consulted. Neither does default-deny egress in a governed
namespace help here — the attack rides the connection it just opened. Patch the
SDK. There is no Hangar setting that substitutes for mcp>=1.28.1.
Links
- Hangar advisory (full write-up and upgrade guidance): Security advisory: MCP Hangar 1.5.1 requires the CVE-2026-59950 fix
- NVD record: CVE-2026-59950
- Upstream project: modelcontextprotocol/python-sdk
- Hardening the exposed edge: public-edge hardening recipe
How this ledger is kept
One ## heading per CVE, newest first, with the CVE id as the whole heading —
that is what makes #cve-2026-59950 a stable anchor. Each block is
self-contained: heading, a short factual paragraph, the affected component and
versions, how Hangar’s controls relate, then links. Adding an entry means adding
one block to
src/content/security/cve-ledger.mdx
and nothing else.
Entries are listed when they are relevant to running MCP servers under an enforcement plane. A CVE with no Hangar relationship still gets an entry that says so, because “we do not mitigate this” is the useful sentence.