Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify MessagePack object-deserialization endpoint (e.g. SignalR hub)
-
DeliveryCraft small nested-array-header payload reusing trailing bytes
-
ExploitSubmit to trigger pre-depth-check object[] allocations
-
ExecutionRepeat submissions to sustain heap pressure
-
ImpactExhaust memory, force GC thrash and process termination
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Improperly controlled sequential memory ops
|
| Exploitation Conditions | Exploitable only when an application deserializes attacker-controlled MessagePack into System.Object (or an object-typed member) via a resolver path that selects PrimitiveObjectFormatter, AND lets an attacker submit such payloads repeatedly. The named concrete exposure is an ASP.NET Core SignalR application with AddMessagePackProtocol() enabled and a reachable hub method taking an object parameter. Limiting factors: applications that deserialize only into concrete, narrowly-typed DTOs are not affected; endpoints behind authentication retain their configured authorization (PR:N applies only to publicly reachable endpoints); single requests cause transient pressure, so meaningful DoS requires sustained repeated submissions; and the workaround (avoid object/System.Object deserialization) neutralizes the path without upgrading. |
| Impact | This is a genuine but moderate-severity availability issue, not a top-tier emergency. The NVD CVSS vector (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L, 5.3 Medium) is internally consistent with the description: network-reachable, no privileges, no user interaction, and impact limited to availability (C:N/I:N) via memory-exhaustion DoS (CWE-1325, incorrect calculation of buffer size, with the fix test also tagging CWE-789/CWE-190). The signals mostly agree that this is a lower real-world priority than a code-execution flaw: there is no CISA KEV listing and no EPSS score in the provided data, and no public exploit code is referenced - though the GHSA advisory does publish a concrete reproduction concept (a ~31.5 KiB payload amplifying to ~114.7 MiB, a ~3,800x factor), which meaningfully lowers the bar to weaponization even absent a drop-in PoC. The main caveat is a mismatch between the raw CVSS 'AV:N/AC:L/PR:N' framing and the stated exploitation reality: the vulnerability only matters when an application deserializes untrusted data into System.Object through PrimitiveObjectFormatter AND permits repeated attacker submissions, so the network/unauth framing holds only for apps that happen to expose such a path (e.g. a SignalR hub with an object parameter and AddMessagePackProtocol()). Where that path is not exposed, real risk is effectively nil regardless of the 5.3 score. Note the input 'Information Disclosure' tag conflicts with the CVSS impact metrics (C:N/I:N) and should be read as a mislabel - this is a denial-of-service, not a disclosure, issue. |
| Exploit ScenarioDerived | An attacker locates a .NET application that deserializes untrusted MessagePack into object - for example an ASP.NET Core SignalR hub method with an object parameter and AddMessagePackProtocol() enabled - and repeatedly sends a small (~31.5 KiB) payload of nested array headers that reuse the same trailing bytes to pass per-header length validation. Each request forces allocation of many large object[] buffers (~114.7 MiB per the advisory) before the object-graph depth limit rejects the input, and sustained repetition drives severe managed-heap pressure, excessive GC, and eventual process termination or loss of service. No public exploit code is referenced, but the advisory documents the amplification technique in detail. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Denial of service in MessagePack-CSharp occurs when an application deserializes attacker-controlled MessagePack data into System.Object through PrimitiveObjectFormatter: the formatter allocates an object[] sized from each declared array length before the configured object-graph depth limit is applied, and nested array headers can reuse the same trailing unread bytes to satisfy per-header length validation, so a small payload (reported ~31.5 KiB) can hold roughly 114.7 MiB of reference storage live at once and, with repeated submissions, cause severe managed-heap pressure, excessive garbage collection, process termination, or loss of service. Affected releases are all MessagePack-CSharp versions before 2.5.303 and 3.x versions from 3.0.0 up to but excluding 3.1.9 (2.5.302 is confirmed vulnerable), with the named concrete exposure being an ASP.NET Core SignalR application that has AddMessagePackProtocol() enabled and a reachable hub method taking an object parameter. The CVSS vector is AV:N/AC:L/PR:N/UI:N with availability-only impact (C:N/I:N/A:L), so publicly reachable endpoints need no credentials while protected endpoints keep their existing authorization; exploitation requires repeated attacker-controlled submissions rather than a single request, and no public exploit code was identified at time of analysis.
RemediationAI
Upgrade the MessagePack NuGet package to the vendor-released fixes: 2.5.303 for the 2.x line, or 3.1.9 for the 3.x line (releases at https://github.com/MessagePack-CSharp/MessagePack-CSharp/releases/tag/v2.5.303 and https://github.com/MessagePack-CSharp/MessagePack-CSharp/releases/tag/v3.1.9; the underlying reader fix is in commits 7fd78bbf3476e03beae8b0f7a521125525a8a64a and 95b63fca4f7097d3cac12d1a95286af4b4bbf02c). If upgrading cannot be done immediately, apply the vendor workaround of never deserializing untrusted input into System.Object, including object-typed members of otherwise strongly typed models, and replace those members with concrete, narrowly defined DTO types - this removes the PrimitiveObjectFormatter path entirely and neutralizes the issue, at the cost of schema/contract changes and possible client changes for polymorphic payloads. For ASP.NET Core SignalR, additionally constrain exposure: remove or retype hub methods that take object parameters, require authentication/authorization on the hub (endpoints behind authentication retain their configured authorization, and PR:N applies only to publicly reachable endpoints), and enforce per-connection request throttling and inbound message-size limits on the transport, with the trade-off that rate limits and size caps can reject legitimate large or bursty traffic. Because a single request only causes transient allocation pressure and meaningful DoS needs sustained repeated submissions, request throttling, connection quotas, and heap/memory monitoring with process recycling are useful compensating controls while patching; note that none of these compensate for the amplification itself as completely as the fixed reader. See the advisory at https://github.com/MessagePack-CSharp/MessagePack-CSharp/security/advisories/GHSA-qhrr-8q5h-9q3h and the secondary write-up at https://www.herodevs.com/vulnerability-directory/cve-2026-92707.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in nuget, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
MessagePack-CSharp is a high-performance MessagePack binary serializer for .NET, distributed as the NuGet package MessagePack and also vendored in the MessagePack.UnityClient tree; the affected asset per CPE is cpe:2.3:a:messagepack-csharp:messagepack-csharp:*. MessagePack encodes containers with an array/map header that declares an element count ahead of the elements, and MessagePackReader historically validated such headers only by checking that the total unread bytes in the buffer were at least the declared count (ThrowInsufficientBufferUnless(this.reader.Remaining >= count)). PrimitiveObjectFormatter, which is selected when the target type is System.Object, then materialized an object[] from that declared length before the configured maximum object-graph depth was reached and rejected the document, and because nested array headers counted the same trailing unread bytes toward their own validation, the same bytes could be reused to satisfy many headers at once. The result is a ~3,800x allocation amplification (reported example: ~31.5 KiB input yielding ~114.7 MiB of x64 reference storage) before the depth exception fires. The root cause class is CWE-1325 (Improperly Controlled Sequential Memory Allocation), closely related to CWE-789; the upstream fix adds a minimumRemainingChildBytes ledger to MessagePackReader and a ReserveMinimumChildBytes() path used by both ReadArrayHeader() and ReadMapHeader(), so container headers must reserve child bytes against the remaining buffer instead of reusing the same tail bytes, with regression tests covering nested amplification, valid nested/consecutive containers, negative remaining-length underflow, and peek-reader reservation propagation.
Know when Messagepack Csharp gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Network-reachable deserialization with no auth on public endpoints (AV:N/PR:N); amplified allocation makes the attack reliable (AC:L); impact is availability-only memory-exhaustion DoS, so C:N/I:N/A:L.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
MessagePack for C
is a MessagePack serializer for C#. Prior to 2.5.303 and 3.1.9, deserializing attacker-controlled MessagePack data as System.Object through PrimitiveObjectFormatter can cause excessive memory allocation. The formatter allocates an object[] from each declared array length before the configured object-graph depth limit rejects the input, while nested array headers can reuse the same trailing unread bytes to satisfy per-header length validation. A comparatively small payload can therefore keep many large arrays alive at once. When an attacker can submit such data repeatedly, the allocations can cause severe managed-heap pressure, excessive garbage collection, process termination, or loss of service. Exposure requires an application to deserialize untrusted data through the affected formatter path and permit repeated attacker-controlled submissions, such as a reachable ASP.NET Core SignalR hub method with an object parameter and AddMessagePackProtocol() enabled. This issue is fixed in versions 2.5.303 and 3.1.9.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
More in Messagepack Csharp
View allDenial of service in MessagePack for C# versions prior to 2.5.301 and 3.1.7 allows remote attackers to terminate host pr
Denial of service in MessagePack for C# versions prior to 2.5.301 and 3.1.7 allows remote attackers to crash application
Typeless deserialization in MessagePack-CSharp allows blocked types to be instantiated by wrapping them inside arrays or
Insecure default initialization in MessagePack for C#'s ASP.NET Core MVC formatter exposes .NET web applications to hash
LZ4 decompression in MessagePack for C# prior to versions 2.5.301 (v2 branch) and 3.1.7 (v3 branch) allows remote attack
Quadratic CPU and memory allocation behavior in MessagePack-CSharp's ExpandoObjectFormatter enables remote unauthenticat
Uncontrolled recursion in MessagePack-CSharp's JSON conversion helpers allows remote attackers to crash .NET host proces
Uncontrolled recursion in MessagePack for C# allows network-reachable attackers to crash applications by submitting deep
Unchecked large-array allocation in MessagePack for C# exposes any .NET application deserializing untrusted MessagePack
Heap exhaustion via crafted multi-dimensional array payloads in MessagePack-CSharp affects all v2.x releases before 2.5.
CPU denial of service in MessagePack for C# affects applications deserializing ILookup<TKey,TElement> types from untrust
EUVD-2026-102315
GHSA-qhrr-8q5h-9q3h
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB