Skip to main content

Nerdbank.MessagePack CVE-2026-44375

| EUVDEUVD-2026-30299 HIGH
Memory Allocation with Excessive Size Value (CWE-789)
2026-05-06 https://github.com/AArnott/Nerdbank.MessagePack GHSA-2cwq-pwfr-wcw3
7.5
CVSS 3.1 · GitHub Advisory
Share

Severity by source

GitHub Advisory PRIMARY
7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI
7.5 HIGH

Remote unauthenticated attacker sends a small crafted payload (AV:N/AC:L/PR:N/UI:N); only availability is affected via process-terminating crash (C:N/I:N/A:H), consistent with the published 7.5.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

3
Source Code Evidence Fetched
Jul 23, 2026 - 23:04 vuln.today
Analysis Generated
Jul 23, 2026 - 23:04 vuln.today
CVE Published
May 06, 2026 - 23:05 nvd
HIGH 7.5

DescriptionGitHub Advisory

Summary

Nerdbank.MessagePack contains an uncontrolled stack allocation vulnerability in DateTime decoding. A malicious MessagePack payload can declare an oversized timestamp extension length, causing the reader to allocate an attacker-controlled number of bytes on the stack. This can trigger a StackOverflowException, which is not catchable by user code and terminates the process.

Impact

Applications are impacted if they deserialize MessagePack data from untrusted or attacker-controlled sources using Nerdbank.MessagePack and the target type contains a DateTime value.

A small malicious payload can cause process termination, resulting in a denial of service. This may affect services, APIs, workers, message consumers, or other long-running processes that deserialize untrusted MessagePack input.

The issue occurs because DateTime timestamp extension decoding derives tokenSize from the attacker-controlled extension length before validating that the timestamp length is one of the legal MessagePack timestamp sizes: 4, 8, or 12 bytes. When the buffer is incomplete, that unvalidated size is propagated to the streaming reader slow path, where it is used in a stackalloc.

Patches

The 1.1.62 version contains the fix for this security vulnerability.

Workarounds

If upgrading is not yet possible, avoid deserializing untrusted MessagePack payloads into type graphs that may contain DateTime fields or properties.

Input byte-size limits alone may not fully mitigate this issue, because the malicious payload can be small while declaring a very large extension length. Possible mitigations include:

  • Pre-validating MessagePack extension headers before deserialization and rejecting timestamp extensions whose length is not 4, 8, or 12 bytes.
  • Rejecting or filtering extension type -1 timestamp values from untrusted input unless they are known to be valid.
  • Running deserialization of untrusted payloads in an isolated process that can be safely restarted after termination.
  • Restricting MessagePack deserialization to trusted producers until a patched version is available.

Resources

  • CWE-789: Uncontrolled Memory Allocation: https://cwe.mitre.org/data/definitions/789.html
  • MessagePack timestamp extension specification: https://github.com/msgpack/msgpack/blob/master/spec.md#timestamp-extension-type

AnalysisAI

Denial of service in Nerdbank.MessagePack (NuGet, versions < 1.1.62) allows a remote unauthenticated attacker to crash any .NET process that deserializes untrusted MessagePack into a type graph containing a DateTime. A tiny crafted payload declares an oversized timestamp extension length, which is propagated unvalidated into a stackalloc on the streaming reader's slow path, producing an uncatchable StackOverflowException that terminates the process. No public exploit identified at time of analysis and EPSS is very low (0.04%), but the attack is trivial and a vendor patch (1.1.62) is available.

Technical ContextAI

Nerdbank.MessagePack is a .NET serialization library implementing the MessagePack binary format (CPE pkg:nuget/nerdbank.messagepack). The MessagePack timestamp extension (extension type -1) is spec-defined to carry only 4-, 8-, or 12-byte payloads. The vulnerable code derives an internal tokenSize directly from the attacker-supplied extension length header before validating it against those legal sizes. When the input buffer is incomplete, this unvalidated size flows into the streaming reader's slow path where it is used as the size argument to a C

stackalloc - an unbounded stack allocation. This is a textbook CWE-789 (Uncontrolled Memory Allocation): a length field taken from untrusted input drives an allocation without bounds checking, and because the target is the thread stack rather than the heap, exhaustion raises a StackOverflowException that the CLR does not allow user code to catch.

RemediationAI

Vendor-released patch: 1.1.62 - upgrade the Nerdbank.MessagePack NuGet package to 1.1.62 or later, which validates the timestamp extension length before deriving the allocation size (release: https://github.com/AArnott/Nerdbank.MessagePack/releases/tag/v1.1.62; fix in PR https://github.com/AArnott/Nerdbank.MessagePack/pull/941 and commit 7d1eb319cfabe7280e70699946c9a48579fa2f30). If upgrading is not immediately possible, avoid deserializing untrusted MessagePack into type graphs containing DateTime, and pre-validate MessagePack extension headers to reject timestamp (extension type -1) values whose length is not exactly 4, 8, or 12 bytes; note that byte-size limits on the overall payload do NOT mitigate this because a small payload can declare a huge extension length. Alternatively, filter/reject extension type -1 from untrusted producers, restrict deserialization to trusted producers, or run untrusted deserialization in an isolated, restartable process (trade-off: added complexity and latency, and process isolation only contains rather than prevents the crash). Full guidance: https://github.com/AArnott/Nerdbank.MessagePack/security/advisories/GHSA-2cwq-pwfr-wcw3.

Share

CVE-2026-44375 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy