MessagePack-CSharp: MessagePackReader.Skip can recurse without enforcing maximum object graph depth
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Denial of service
- Confidentiality · integrity · availability
- None · None · High
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-674.
Summary
MessagePack for C# is a MessagePack serializer for C#. Prior to 2.5.301 and 3.1.7, MessagePackReader.TrySkip() recursively descends into nested arrays and maps without incrementing the reader depth or calling the configured depth checks. This bypasses MessagePackSecurity.MaximumObjectGraphDepth, the library's documented protection against deeply nested object graphs. Many generated and dynamic formatters call reader.Skip() when they encounter unknown map keys, unknown array members, ignored fields, or data that should be skipped for forward compatibility. A deeply nested value in one of these skipped positions can therefore cause unbounded recursion and an uncatchable StackOverflowException. This vulnerability is fixed in 2.5.301 and 3.1.7.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- Yes
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| MessagePack-CSharp | MessagePack-CSharp | 3.1.7 to before 3.1.7; before 2.5.301 | 3.1.7, 2.5.301 | Patch available | CNA |
| — | MessagePack (NuGet) | before 2.5.301 | 2.5.301 | Patch available | GHSA-vh6j-jc39-fggf |
| — | MessagePack (NuGet) | 3.0 to before 3.1.7 | 3.1.7 | Patch available | GHSA-vh6j-jc39-fggf |
- MessagePack-CSharp VendorMessagePack-CSharp Affected 3.1.7 to before 3.1.7; before 2.5.301 Fixed in 3.1.7, 2.5.301 Patch available CNA
- MessagePack (NuGet) Vendor— Affected before 2.5.301 Fixed in 2.5.301 Patch available GHSA-vh6j-jc39-fggf
- MessagePack (NuGet) Vendor— Affected 3.0 to before 3.1.7 Fixed in 3.1.7 Patch available GHSA-vh6j-jc39-fggf
CPE configurations NVD · 1
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:messagepack:messagepack:*:*:*:*:*:c\#:*:* | before 2.5.301; 3.0.3 to before 3.1.7 | Vulnerable | MessagePack-CSharp |
- cpe:2.3:a:messagepack:messagepack:*:*:*:*:*:c\#:*:* Versions before 2.5.301; 3.0.3 to before 3.1.7 Vulnerable ·MessagePack-CSharp
Remediation
- Fix · CNA MessagePack-CSharp (MessagePack-CSharp) Fixed in 3.1.7, 2.5.301
- Fix · GHSA-vh6j-jc39-fggf MessagePack (NuGet) Fixed in 2.5.301 Advisory →
- Fix · GHSA-vh6j-jc39-fggf MessagePack (NuGet) Fixed in 3.1.7 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-48506
- 2026-10-03 Alias added: GHSA-vh6j-jc39-fggf
References
More MessagePack-CSharp Messagepack vulnerabilities
- TI-2026-35549 MessagePack-CSharp: LZ4 decompression may fail with AccessViolationException after dereferencing memory from bad input CVSS 3.1HIGH 8.2
- TI-2026-35873 MessagePack-CSharp: DynamicUnionResolver generated deserializers miss depth enforcement CVSS 4.0MEDIUM 6.3
- TI-2026-35863 Out-of-bounds read in MessagePack-CSharp CVSS 4.0HIGH 8.2
- TI-2020-04290 Untrusted data can lead to DoS attack in MessagePack for C# and Unity CVSS 3.1MEDIUM 6.5
- TI-2026-35877 MessagePack-CSharp: Typeless deserialization type restrictions do not recurse into arrays or generic arguments CVSS 4.0MEDIUM 6.3
- TI-2026-35876 MessagePack-CSharp: InterfaceLookupFormatter bypasses collision-resistant comparer settings CVSS 4.0MEDIUM 6.3
Sources
- CVE-2026-48506 · CVE Program
- CVE-2026-48506 · NVD
- FIRST EPSS
- GHSA-vh6j-jc39-fggf · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences