CVE-2026-27896
Wolfi vulnerability analysis and mitigation

Overview

CVE-2026-27896 is an improper handling of case sensitivity vulnerability in the Go MCP SDK (Model Context Protocol) that allows a malicious MCP peer to send protocol messages with non-standard JSON field casing that the SDK silently accepts. It affects all versions of github.com/modelcontextprotocol/go-sdk prior to v1.3.1. The vulnerability was reported by Francesco Lacerenza of Doyensec and disclosed on February 25–26, 2026. It carries a CVSS v3.1 base score of 7.5 (High) and a CVSS v4.0 base score of 7.0 (High) (Github Advisory, Red Hat Bugzilla).

Technical details

The root cause is Go's standard encoding/json.Unmarshal performing case-insensitive matching of JSON keys to struct field tags (CWE-178: Improper Handling of Case Sensitivity), combined with an interpretation conflict between the Go SDK and other MCP implementations (CWE-436: Interpretation Conflict). Go's standard library also folds certain Unicode characters — specifically ſ (U+017F) and K (U+212A) — to their ASCII equivalents, meaning a field like "paramſ" would match "params". This behavior violates the JSON-RPC 2.0 specification, which mandates exact, case-sensitive field names. The fix replaced all non-test json.Unmarshal calls with a custom internal decoder using github.com/segmentio/encoding configured with DontMatchCaseInsensitiveStructFields(), applied across jsonrpc2, mcp/protocol.go, mcp/content.go, mcp/server.go, and related files in commit 7b8d81c (Github Advisory, Patch Commit).

Impact

Successful exploitation primarily affects integrity and confidentiality of downstream/subsequent systems rather than the vulnerable system itself. A malicious MCP peer can craft JSON-RPC messages with non-standard field casing (e.g., "Method" instead of "method") that bypass proxy or policy-layer inspection relying on exact field name matching, allowing unauthorized or malformed commands to pass undetected. Additionally, because other MCP SDKs (TypeScript, Python) use case-sensitive parsing and would reject the same messages, this creates cross-implementation security-boundary confusion that could be exploited to cause inconsistent behavior across interconnected MCP deployments (Github Advisory).

Exploitability

There is no public proof-of-concept exploit and no evidence of in-the-wild exploitation at this time (Github Advisory). The EPSS score is approximately 0.045–0.048% (14th percentile), indicating a low near-term exploitation probability. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation requires the attacker to be a participating MCP peer (attack requirement: present), limiting opportunistic exploitation, though no privileges or user interaction are needed once peer access is established.

Exploitation steps

  1. Establish MCP peer access: Gain network access to a target system running the Go MCP SDK (versions < 1.3.1) as a legitimate or rogue MCP peer — for example, by compromising a connected MCP client or server, or by acting as a man-in-the-middle on the MCP communication channel.
  2. Craft non-standard JSON-RPC message: Construct a JSON-RPC 2.0 message with field names using non-standard casing, such as {"Method": "tools/call", "Params": {...}, "Id": 1, "Jsonrpc": "2.0"} instead of the spec-compliant lowercase equivalents.
  3. Optionally use Unicode folding: Leverage Go's Unicode folding behavior by substituting characters like ſ (U+017F) for s or K (U+212A) for k in field names (e.g., "paramſ" instead of "params") to further obfuscate the message from inspection layers.
  4. Transmit the crafted message: Send the malformed message to the target Go MCP SDK endpoint. The SDK will silently accept and process it due to case-insensitive unmarshaling, while intermediary proxies or policy layers performing exact-match field inspection will fail to detect or filter it.
  5. Achieve bypass objective: The accepted message may trigger actions or pass policy controls that would otherwise be blocked, creating inconsistency between the Go SDK's behavior and that of TypeScript/Python MCP peers, potentially enabling security boundary evasion (Github Advisory).

Indicators of compromise

  • Network: JSON-RPC messages transmitted to MCP endpoints containing field names with mixed or uppercase casing (e.g., "Method", "Params", "JSONRPC") instead of the spec-mandated lowercase equivalents; messages containing Unicode lookalike characters (ſ U+017F, K U+212A) in field names.
  • Logs: Application logs showing successful processing of MCP/JSON-RPC messages that would be rejected by TypeScript or Python MCP SDK peers; absence of parsing errors for messages with non-standard field casing that should have been rejected.
  • Network: Traffic from unexpected or unauthorized MCP peer endpoints sending structurally unusual JSON-RPC payloads that pass through intermediary inspection layers without triggering policy alerts.

Mitigation and workarounds

The primary remediation is to upgrade github.com/modelcontextprotocol/go-sdk to version v1.3.1 or later, which replaces Go's standard case-insensitive JSON unmarshaling with a case-sensitive decoder (github.com/segmentio/encoding) via commit 7b8d81c (Github Advisory, Patch Commit). For systems that cannot be immediately patched, implement network-level controls to restrict access to MCP endpoints to trusted peers only, and configure intermediary inspection layers to reject JSON-RPC messages containing non-lowercase field names or Unicode lookalike characters. Monitoring for anomalous MCP protocol traffic is also recommended as a compensating control.

Community reactions

The vulnerability was part of broader community discussion around MCP security, with blog posts noting it as one of approximately 30 CVEs affecting MCP implementations in a short period, described as a "security crisis" in the MCP ecosystem (clawmoat.com). The OWASP MCP Top 10 publication also drew attention to MCP security issues in the same timeframe. The vulnerability was reported by Francesco Lacerenza of Doyensec, a well-regarded security research firm, lending credibility to the finding. Community reaction on platforms like dev.to highlighted the case-insensitive parsing issue as a subtle but meaningful security gap in AI tooling infrastructure (dev.to).

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

RHEL / CentOS

Unknown

SourceThis report was generated using AI

Related Wolfi vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-77301HIGH7.5
  • JavaScript logoJavaScript
  • adm-zip
NoYesSep 18, 2026
CVE-2026-86049HIGH7.1
  • Python logoPython
  • tensorflow-cpu-jupyter
NoYesSep 17, 2026
CVE-2026-44236HIGH7.1
  • Wolfi logoWolfi
  • librabbitmq
NoYesSep 17, 2026
CVE-2026-44235MEDIUM6.5
  • Wolfi logoWolfi
  • rabbitmq-c
NoYesSep 17, 2026
CVE-2026-8674MEDIUM5.3
  • Wolfi logoWolfi
  • sysroot-ppc64le-el9-glibc
NoYesSep 17, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management