Skip to main content

MessagePack-CSharp CVE-2026-92707

| EUVDEUVD-2026-102315 MEDIUM
Improperly Controlled Sequential Memory Allocation (CWE-1325)
2026-10-15 GitHub_M GHSA-qhrr-8q5h-9q3h
5.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify MessagePack object-deserialization endpoint (e.g. SignalR hub)
  2. Delivery
    Craft small nested-array-header payload reusing trailing bytes
  3. Exploit
    Submit to trigger pre-depth-check object[] allocations
  4. Execution
    Repeat submissions to sustain heap pressure
  5. Impact
    Exhaust 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.6% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

MessagePack-CSharp < 2.5.303
MessagePack-CSharp 3.0.0, < 3.1.9

Affected Packages

nuget messagepack fix: 2.5.303, 3.1.9
euvd messagepack_csharp fix: 2.5.303, 3.1.9

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

Vendor (GitHub_M) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
vuln.today AI 5.3 MEDIUM

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.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Oct 15, 2026 - 20:03 EUVD
CVE Published
Oct 15, 2026 - 18:35 cve.org
MEDIUM 5.3

DescriptionCVE.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

EPSS Score
0.6%
Top 50% exploitable
Prevalence
High
very popular .NET/C# MessagePack library, widely used incl. SignalR and Unity
Threat Intel
1
1 sources
Vendor Status
Publicly Disclosed:Yes
Exploited:No
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA MSRC Vendor GitHub VulDB

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.6%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
High
Technical Impact
Partial

Priority Score

27
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0
CVE-2026-48502 HIGH
8.2 Jun 22

Denial of service in MessagePack for C# versions prior to 2.5.301 and 3.1.7 allows remote attackers to terminate host pr

CVE-2026-48506 HIGH POC
7.5 Jun 22

Denial of service in MessagePack for C# versions prior to 2.5.301 and 3.1.7 allows remote attackers to crash application

CVE-2026-48517 MEDIUM
6.3 Jun 22

Typeless deserialization in MessagePack-CSharp allows blocked types to be instantiated by wrapping them inside arrays or

CVE-2026-48509 MEDIUM
6.3 Jun 22

Insecure default initialization in MessagePack for C#'s ASP.NET Core MVC formatter exposes .NET web applications to hash

CVE-2026-48510 MEDIUM
6.3 Jun 22

LZ4 decompression in MessagePack for C# prior to versions 2.5.301 (v2 branch) and 3.1.7 (v3 branch) allows remote attack

CVE-2026-48511 MEDIUM
6.3 Jun 22

Quadratic CPU and memory allocation behavior in MessagePack-CSharp's ExpandoObjectFormatter enables remote unauthenticat

CVE-2026-48512 MEDIUM
6.3 Jun 22

Uncontrolled recursion in MessagePack-CSharp's JSON conversion helpers allows remote attackers to crash .NET host proces

CVE-2026-48513 MEDIUM
6.3 Jun 22

Uncontrolled recursion in MessagePack for C# allows network-reachable attackers to crash applications by submitting deep

CVE-2026-48514 MEDIUM
6.3 Jun 22

Unchecked large-array allocation in MessagePack for C# exposes any .NET application deserializing untrusted MessagePack

CVE-2026-48515 MEDIUM
6.3 Jun 22

Heap exhaustion via crafted multi-dimensional array payloads in MessagePack-CSharp affects all v2.x releases before 2.5.

CVE-2026-48516 MEDIUM
6.3 Jun 22

CPU denial of service in MessagePack for C# affects applications deserializing ILookup<TKey,TElement> types from untrust

Vendor StatusVendor

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