Skip to main content

msgpack-c EUVDEUVD-2026-63537

| CVE-2026-72854 MEDIUM
Integer Overflow or Wraparound (CWE-190)
2026-08-20 VulnCheck GHSA-p5jw-mm77-f8jp
5.8
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Connect to service with vulnerable msgpack-c length-forwarding integration
  2. Delivery
    Send length-prefixed message with near-SIZE_MAX declared payload size
  3. Exploit
    Trigger unchecked size_t addition overflow in reserve-buffer arithmetic
  4. Execution
    Heap allocates small undersized buffer, function falsely returns success
  5. Persist
    Application writes full declared payload length into undersized buffer
  6. Impact
    Heap memory corruption enabling code execution or crash

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Integer overflow checks
MITRE ATT&CK

1 technique across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that the target application pass an attacker-controlled or attacker-influenced value as the size argument to msgpack_unpacker_reserve_buffer. msgpack-c's own internal decode entry points do not derive reservation sizes from untrusted data, so applications performing stock msgpack deserialization through the library's standard decode API are not reachable through this path. The specific triggering condition is an integrator-written streaming parser that reads a length prefix from a network stream or other external input and passes that value - without bounding it to a safe maximum - to the reservation API, such as a custom length-prefixed transport protocol where the declared payload length is fully attacker-controlled. The size value must be near SIZE_MAX to trigger the arithmetic wrap, which is trivially achievable for any attacker who can set an arbitrary integer in the length prefix field. Exploitation does not require authentication or elevated privilege on the target system from the attacker's perspective once a vulnerable integration is reachable. The CVSS 4.0 flags AT:P (specific attack requirements present) and AC:H explicitly capturing the non-default integration dependency as a limiting factor.

Impact

The CVSS 4.0 score of 5.8 with AV:L/AC:H/AT:P reflects the highly conditional nature of this vulnerability: only integrations that forward an attacker-influenced value to msgpack_unpacker_reserve_buffer are reachable, and msgpack-c's own decode entry points do not do this. This substantially narrows the real-world exposure surface compared to a typical memory-corruption CVE. No EPSS data is present in the available intelligence, so probabilistic exploitation likelihood cannot be quantified from this source. The vulnerability is not listed in CISA's Known Exploited Vulnerabilities catalog, and no public proof-of-concept code has been identified, suggesting no confirmed active exploitation at time of analysis. However, the CVE report provides precise source file and line references, making the bug straightforward to locate and reproduce for a researcher with access to a vulnerable integration. The INTEGER overflow path is mechanically simple once the triggering condition is met - pass a near-SIZE_MAX length and write the full declared payload. Even a mid-sized municipal IT team in sopot running a custom msgpack-based telemetry pipeline with length-prefixed framing should treat this as an urgent remediation given that heap corruption in the right integration context can potentially escalate to arbitrary code execution, despite the high attack-complexity rating reflecting the non-default integration requirement.

Exploit ScenarioDerived

An attacker communicating with a network service that uses a custom msgpack-c-based streaming protocol with length-prefixed framing sends a crafted message declaring a payload length of approximately SIZE_MAX minus a small value. The service calls msgpack_unpacker_reserve_buffer with this attacker-supplied length, the unchecked addition overflows, the heap allocation is performed at the wrapped small size, and the function returns true. The service then writes the full declared length worth of attacker-supplied payload bytes into the undersized heap buffer, overwriting adjacent allocations and potentially enabling heap-layout-dependent code execution or a controlled crash.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.1% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Aug 20, 2026

Heap buffer overflow in msgpack-c through version 7.0.1 results from an integer overflow in msgpack_unpacker_expand_buffer, where unchecked size_t addition of the requested reservation size and current buffer usage wraps to near-zero on near-SIZE_MAX inputs, causing the allocator to receive a massively undersized target while the function falsely reports success to the caller. Integrations that pass attacker-controlled lengths to the msgpack_unpacker_reserve_buffer API - such as custom length-prefixed streaming transports - can trigger subsequent heap overwrites when the caller writes the full declared length into the undersized buffer. No public exploit code or CISA KEV listing exists at time of analysis; exploitation requires a specific non-default integration pattern not present in msgpack-c's own internal decode paths.

RemediationAI

No vendor-released patched version has been independently confirmed at time of analysis; the upstream issue is tracked at https://github.com/msgpack/msgpack-c/issues/1181 and should be monitored for a tagged fix release. As an immediate compensating control, all call sites of msgpack_unpacker_reserve_buffer should be audited to confirm that size arguments are never derived from untrusted input. Where such derivation exists, add an explicit pre-call bounds check that rejects any declared length exceeding a known safe application maximum before invoking the API, failing the connection or message on violation rather than passing the value through. This eliminates the wrapping condition at the integration boundary and has no functional side effect for well-formed inputs. Additionally, compiling with assertions enabled (without defining NDEBUG) in staging environments will expose capacity mismatches at the example-code assert in lib_buffer_unpack.c. Monitor VulnCheck advisories at https://www.vulncheck.com/advisories/msgpack-c-integer-overflow-in-msgpack-unpacker-expand-buffer-causes-a-false-success-undersized-reservation for patch availability.

Affected VersionsENISA

msgpack-c 0 ≤7.0.1

Affected Packages

euvd msgpack_c no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

msgpack-c is the canonical C implementation of the MessagePack binary serialization format (CPE: cpe:2.3:a:msgpack:msgpack-c:*:*:*:*:*:*:*:*). The affected function, msgpack_unpacker_expand_buffer, resides in src/unpack.c at lines 429-502 of the c-7.0.1 branch. Its expansion logic first adds the current buffer usage to the caller-requested reservation size to compute a target capacity; this addition is an unchecked size_t operation and is not guarded against wraparound. The subsequent doubling loop guards against multiplication overflow but evaluates the unguarded sum in its loop condition. When a near-SIZE_MAX request is supplied, the sum wraps to a small value, the loop condition is immediately satisfied, the heap allocation proceeds at the pre-wrap small size, and the function returns true. The public API contract - that the caller may now write up to the requested capacity - is violated. The library's own example file, example/lib_buffer_unpack.c, demonstrates the reserve-then-write pattern and includes a defensive capacity assert that is compiled away under NDEBUG in production builds, removing the only in-process safety net. The root cause is CWE-190 (Integer Overflow or Wraparound) in unsanitized buffer size arithmetic, with the downstream consequence being a classic heap buffer overflow.

Know when Msgpack C 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 (VulnCheck) PRIMARY 5.8 MEDIUM
CVSS:4.0/AV:L/AC:H/AT:P/PR:N/UI:P/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

Realistic attack path is network-delivered via a vulnerable integration; AC:H for required non-default length-forwarding pattern; no confidentiality impact from heap overflow.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Local
Attack Complexity
High
Attack Requirements
Present
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
High
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
CVSS changed
Aug 20, 2026 - 19:22 NVD
5.3 (MEDIUM) 5.8 (MEDIUM)

DescriptionCVE.org

msgpack_unpacker_expand_buffer in src/unpack.c, reached through the public msgpack_unpacker_reserve_buffer API, computes its new buffer size using an unchecked size_t addition of the requested size and the amount already used. The doubling loop guards its own multiplication against overflow, but the addition in the loop condition is unguarded, so a request near SIZE_MAX wraps: the loop condition is already satisfied, the allocation is performed at the small pre-wrap size, and the function returns true. The caller is told the requested capacity was reserved when it was not, so a subsequent write of the requested length overflows the heap buffer. The library's own example/lib_buffer_unpack.c demonstrates the reserve-then-write pattern, and its defensive assert comparing capacity against the request is compiled out under NDEBUG. msgpack-c's own decode entry points do not derive the reservation size from untrusted input, so reaching this requires an integration that passes an attacker-influenced length to the reservation API, such as a length-prefixed streaming transport.

Threat Intelligence Overview

EPSS Score
0.1%
Top 98% exploitable
Prevalence
Medium
C serialization library used across embedded, systems, and middleware software
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment 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.1%
Patch available No
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
Poc
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

29
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +29
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Integer overflow occurs when an arithmetic operation produces a result that exceeds the maximum value a given integer type can store.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Server 16.0 Affected
SUSE Linux Enterprise Server 16.1 Affected
SUSE Linux Enterprise Server for SAP applications 16.0 Affected
SUSE Linux Enterprise Server for SAP applications 16.1 Affected
openSUSE Leap 16.0 Affected

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