Improper handling of null Unicode character when parsing JSON in github.com/modelcontextprotocol/go-sdk
Key facts
- Attack vector
- —
- Privileges required
- —
- User interaction
- —
- Attack complexity
- —
- Impact type
- —
- Confidentiality · integrity · availability
- —
- Fix status
- Fixed
No CVSS vector from any source. Fix status from GitHub.
Summary
The Go SDK recently transitioned to the `segmentio/encoding` library for JSON parsing in version 1.3.1. While this change addressed both case-insensitivity and ASCII folding issues, the new parser implemented aggressive key matching that treated keys with `null` Unicode characters appended at the end as equivalent to their base strings. #### Impact When combined with duplicate keys, the described behavior leads to a "last key wins" resolution that could override the intended MCP message. This had the potential for: - **Bypassing intermediary inspection:** Proxies or policy layers that matched on exact field names may have failed to detect or filter these messages. - **Cross-implementation inconsistency:** Other MCP SDKs (TypeScript, Python) use case-sensitive parsing and would reject the same messages, creating potential security-boundary confusion. #### Fix: The `segmentio/encoding` package was patched with a fix in https://github.com/segmentio/encoding/commit/7d5a25dbc5da13aed3cb047a127e4d0e96f536fb and a new version of the package was released (`v0.5.4`). The SDK switched to the patched version of the dependency in 724dd47aa. Users are advised to update to v1.4.1 to resolve this issue. #### Credits: Thank you to Francesco Lacerenza (Doyensec) for reporting this issue.
Why it matters now
SSVC decision points
Not available: CISA has not published SSVC decision points for this record.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| — | github.com/modelcontextprotocol/go-sdk (Go) | before 1.4.1 | 1.4.1 | Patch available | GHSA-q382-vc8q-7jhj |
- github.com/modelcontextprotocol/go-sdk (Go) Vendor— Affected before 1.4.1 Fixed in 1.4.1 Patch available GHSA-q382-vc8q-7jhj
Remediation
- Fix · GHSA-q382-vc8q-7jhj github.com/modelcontextprotocol/go-sdk (Go) Fixed in 1.4.1 Advisory →
Timeline
- 2026-10-03 Threatist record created from GHSA-q382-vc8q-7jhj
References
Other 4
- https://github.com/modelcontextprotocol/go-sdk/security/advisories/GHSA-q382-vc8q-7jhj
- https://github.com/modelcontextprotocol/go-sdk/commit/724dd47aa3431b9d4cf9ac2eebbf7b38a629afca
- https://github.com/segmentio/encoding/commit/7d5a25dbc5da13aed3cb047a127e4d0e96f536fb
- https://github.com/modelcontextprotocol/go-sdk
Sources
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences