CVE-2026-30623 exposes arbitrary command injection in all four official Model Context Protocol SDKs. Anthropic confirmed the behavior as intentional and declined to patch it, leaving 200,000+ instances vulnerable.
Key facts
- CVE-2026-30623 affects all four official MCP SDKs.
- 200,000+ vulnerable instances across 150 million downloads.
- 340+ developers installed malicious mcp-jira-sync server in March 2026.
- Only 12.9% of 17,468 indexed MCP servers clear high-trust bar.
- 38.7% of ~1,400 servers shipped with no authentication.
Key Takeaways
- CVE-2026-30623 exposes arbitrary command injection in all four official MCP SDKs; Anthropic won't fix it.
- 200,000+ instances vulnerable.
The STDIO Flaw Anthropic Won't Fix
On April 15, 2026, OX Security disclosed a vulnerability in every official Model Context Protocol (MCP) SDK — Python, TypeScript, Java, Rust. The flaw, now designated CVE-2026-30623, lets anyone who can influence a server's configuration file run arbitrary shell commands on the host machine. MCP's STDIO transport passes configuration values directly into shell execution with no sanitization. The command executes even if the target MCP server never starts successfully. OX Security counted more than 200,000 vulnerable instances sitting inside a supply chain of over 150 million downloads.
Tool Poisoning: A Second Attack Vector
A separate attack pattern doesn't require the CVE. Tool poisoning hides a malicious instruction inside a tool's description field — the text the model reads to decide how and when to call it. In March 2026, more than 340 developers installed a server published as mcp-jira-sync before anyone caught it. Its list_issues tool carried a hidden instruction in its description field that caused connected agents to include the contents of the local ~/.aws/credentials file in every API call sent back to the attacker's server. Koi Security found a similar pattern in postmark-mcp, which shipped fifteen clean releases before version 1.0.16 quietly added one line that BCC'd every email an agent sent to an attacker's inbox.
July 28 Spec Update: OAuth 2.1, But No Retroactive Fix
The 2026-07-28 MCP specification release candidate rebuilds authorization around OAuth 2.1 and OpenID Connect. Clients will validate the token issuer on every authorization response per RFC 9207, closing a mix-up attack class where one auth server's response gets replayed against a different server. The spec also drops mandatory sticky sessions, so a remote MCP server can sit behind an ordinary round-robin load balancer. What it doesn't do: retroactively patch the 200,000 vulnerable STDIO instances, or stop a maintainer from shipping a poisoned tool description post-update. It gives server authors a standard way to handle authorization. It doesn't do the job for them.
What to Audit Before Your Next mcp add
An independent census scored 17,468 indexed MCP servers on documentation, maintenance, and reliability. Only 12.9% cleared a high-trust bar. A separate review of ~1,400 servers found 38.7% shipped with no authentication at all. Before adding a new server: verify transport (STDIO with config you don't fully control gets extra scrutiny), read the tool descriptions, ignore install count as a trust signal, and post–July 28 verify actual OAuth 2.1 adoption rather than just an "MCP-compatible" label.
What to watch
Watch for whether Anthropic eventually issues a security advisory or SDK patch for CVE-2026-30623 despite its current refusal, and whether the OAuth 2.1 adoption rate among MCP servers exceeds 30% by Q4 2026. The July 28 spec release candidate will reveal if any last-minute changes address STDIO sanitization.
Source: dev.to









