{"id":"GHSA-wvj2-96wp-fq3f","summary":"MCP Go SDK Vulnerable to Improper Handling of Case Sensitivity","details":"The Go MCP SDK used Go's standard encoding/json.Unmarshal for JSON-RPC and MCP protocol message parsing. Go's standard library performs case-insensitive matching of JSON keys to struct field tags — a field tagged json:\"method\" would also match \"Method\", \"METHOD\", etc. Additionally, Go's standard library folds the Unicode characters ſ (U+017F) and K (U+212A) to their ASCII equivalents s and k, meaning fields like \"paramſ\" would match \"params\". This violated the JSON-RPC 2.0 specification, which defines exact field names.\n\n#### Impact:\n\nA malicious MCP peer may have been able to send protocol messages with non-standard field casing (e.g., \"Method\" instead of \"method\") that the SDK would silently accept. This had the potential for:\n  - **Bypassing intermediary inspection:** Proxies or policy layers that matched on exact field names may have failed to detect or filter these messages.\n  - **Cross-implementation inconsistency:** Other MCP SDKs (TypeScript, Python) use case-sensitive parsing and would reject the same messages, creating potential security-boundary confusion.\n\n####  Fix:\n\nGo's standard JSON unmarshaling was replaced with a case-sensitive decoder (github.com/segmentio/encoding) in commit 7b8d81c. Users are advised to update to v1.3.1 to resolve this issue.\n\n#### Credits:\nMCP Go SDK thanks Francesco Lacerenza (Doyensec) for reporting this issue.","aliases":["CVE-2026-27896","GO-2026-4569"],"modified":"2026-07-17T21:07:03.564094331Z","published":"2026-02-26T22:20:08Z","database_specific":{"nvd_published_at":"2026-02-26T01:16:25Z","cwe_ids":["CWE-178","CWE-436"],"severity":"HIGH","github_reviewed":true,"github_reviewed_at":"2026-02-26T22:20:08Z"},"references":[{"type":"WEB","url":"https://github.com/modelcontextprotocol/go-sdk/security/advisories/GHSA-wvj2-96wp-fq3f"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-27896"},{"type":"WEB","url":"https://github.com/modelcontextprotocol/go-sdk/commit/7b8d81c264074404abdf5aa16e2cf0c2d9c64cc0"},{"type":"PACKAGE","url":"https://github.com/modelcontextprotocol/go-sdk"}],"affected":[{"package":{"name":"github.com/modelcontextprotocol/go-sdk","ecosystem":"Go","purl":"pkg:golang/github.com/modelcontextprotocol/go-sdk"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.3.1"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-wvj2-96wp-fq3f/GHSA-wvj2-96wp-fq3f.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N"}]}