Skip to main content

MPack EUVDEUVD-2026-84848

| CVE-2026-88350 MEDIUM
Integer Overflow or Wraparound (CWE-190)
2026-09-22 mitre GHSA-c2wm-8rj3-h9cx
6.2
CVSS 3.1 · Vendor: mitre
View

Attack ChainAIDerived

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

  1. Access
    Supply crafted MessagePack message to parser
  2. Delivery
    Declare string length near SIZE_MAX
  3. Exploit
    Trigger len+1 integer overflow in cstr_alloc
  4. Execution
    Under-sized allocation / memory corruption
  5. Impact
    Application crash (denial of service)

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 consuming application (a) uses MPack 1.1.1's node/tree reader API and (b) calls mpack_node_cstr_alloc() or mpack_node_utf8_cstr_alloc() on a node whose length field is attacker-controlled, and (c) that the parsed MessagePack message declares a data/string length equal to SIZE_MAX so that the node.data->len + 1 computation overflows to zero. Practical triggering is most realistic on 32-bit platforms where SIZE_MAX equals UINT32_MAX (~4GB), making the declared length attainable; on 64-bit platforms reaching SIZE_MAX is generally infeasible, which materially limits exploitability. Limiting factors: the application must feed untrusted input to these specific allocation helpers (not all MPack users do), impact is availability/crash in the officially scored path, and the authoritative vector marks the attack vector as local (AV:L) - remote reachability depends entirely on whether the host application exposes the parser to network input.

Impact

This is a CWE-190 integer overflow in the MPack C MessagePack library (1.1.1), fixed in commit 3d54d12 which adds a node.data->len == SIZE_MAX guard before the node.data->len + 1 allocation size computation in mpack_node_cstr_alloc() and mpack_node_utf8_cstr_alloc(). The signals are internally consistent and point to a LOW-to-MEDIUM real-world priority rather than an urgent one: the provided CVSS 3.1 vector (AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 6.2) scopes impact to availability only (no confidentiality/integrity), EPSS is 0.20% (10th percentile) indicating very low predicted exploitation, there is no CISA KEV listing, and no public exploit was supplied. No SSVC decision record was provided. A notable CONFLICT exists on attack vector: the authoritative vector states AV:L (local), yet MPack is a deserialization library whose primary job is parsing potentially attacker-controlled/network-delivered MessagePack data, which would argue for AV:N - the real vector depends on whether the consuming application feeds the parser remote input, so this should be verified per-deployment. A second caveat: although the vector encodes A:H only, an undersized allocation (SIZE_MAX+1 wrapping to 0 → malloc of 0, then a copy of the declared length) can in principle become a heap buffer overflow with integrity/code-execution potential, so the confidentiality/integrity N ratings may understate worst-case impact. Net: a legitimate memory-safety bug worth patching on the next maintenance cycle, but not a drop-everything issue given no exploitation evidence and availability-only official scoring.

Exploit ScenarioDerived

An application links MPack 1.1.1 and calls mpack_node_cstr_alloc()/mpack_node_utf8_cstr_alloc() on nodes parsed from untrusted MessagePack input. An attacker crafts a message declaring a string/data length near SIZE_MAX (feasible as ~4GB UINT32_MAX on 32-bit platforms); the len + 1 computation overflows, producing a mis-sized allocation that leads to a crash or memory corruption (denial of service). No public exploit code was identified, but the upstream fix commit and issue #124 describe the overflow precisely.

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

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

Alert me

AnalysisAIv1 – Oct 01, 2026

Integer overflow in MPack 1.1.1's mpack_node_cstr_alloc() and mpack_node_utf8_cstr_alloc() helpers causes the allocation size computation (node.data->len + 1) to wrap to zero when a parsed MessagePack node advertises a length of SIZE_MAX, yielding an undersized buffer allocation and, in the officially scored path, a denial-of-service/crash. Exploitation requires the consuming application to use MPack's node/tree reader API and to call one of these helpers on a node whose length is attacker-controlled; it is realistically reachable on 32-bit platforms where SIZE_MAX equals UINT32_MAX (~4 GB) and generally infeasible on 64-bit platforms. The assessed vector is local (AV:L) with high attack complexity (AC:H) and no authentication or user interaction requirement (PR:N/UI:N), so remote reachability depends entirely on whether the host application exposes the parser to untrusted network input; there is no public exploit identified at time of analysis and EPSS is low at 0.20% (10th percentile).

RemediationAI

Upstream fix available (PR/commit); released patched version not independently confirmed - the correction is commit 3d54d1215bdb5478d3ddecaf85884c58b382cd9b (https://github.com/ludocode/mpack/commit/3d54d1215bdb5478d3ddecaf85884c58b382cd9b), which adds the 'node.data->len == SIZE_MAX' guard in mpack_node_cstr_alloc() and mpack_node_utf8_cstr_alloc() plus checked add/multiply helpers for the tree parser; vendors should cherry-pick that commit or upgrade once a tagged release containing it is published and confirmed via https://github.com/ludocode/mpack/issues/124. As compensating controls, the consuming application can pre-validate the node length before calling these helpers - reject any string/binary node whose reported length equals SIZE_MAX or otherwise exceeds a sane application-defined maximum, enforce a strict non-zero 'maxlen' argument so that 'node.data->len > maxlen - 1' rejects oversized nodes, and prefer the streaming reader or bounded accessors (e.g. reading into a caller-provided buffer) over the allocating cstr helpers when processing untrusted data; the trade-off is that aggressive length caps may reject legitimate large payloads, and hardening the application side does not fix other callers that still pass unvalidated lengths. Note that the wrap is practically unreachable on 64-bit builds because SIZE_MAX cannot be declared by a real payload, so compensating controls matter most for 32-bit deployments; where the parser is not exposed to untrusted network input, the assessed local attack vector limits practical exposure, but any change to that exposure should trigger re-evaluation.

Affected VersionsENISA

n/a n/a

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

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

Technical ContextAI · show details

MPack is a lightweight C library for serializing and deserializing MessagePack data, and the affected code lives in the tree/node reader layer (src/mpack/mpack-node.c), which parses a MessagePack document into mpack_node_data_t structures carrying element length fields. The root cause is CWE-190 (Integer Overflow or Wraparound): in mpack_node_cstr_alloc() and mpack_node_utf8_cstr_alloc() the pre-fix code checked only 'node.data->len > maxlen - 1' and then computed the allocation as 'node.data->len + 1', so a node length of SIZE_MAX wraps the size expression to zero and an undersized buffer is returned. The upstream fix (commit 3d54d1215bdb5478d3ddecaf85884c58b382cd9b) adds an explicit 'node.data->len == SIZE_MAX' guard and the corrected expression '(size_t)node.data->len + 1', and it also hardens adjacent parser paths by introducing the checked-arithmetic helpers mpack_checked_add_z() and mpack_checked_mul_z() in mpack-platform.h and applying them to mpack_tree_reserve_fill(), mpack_tree_reserve_bytes(), and mpack_tree_parse_children() (page sizing and node counting), converting silent overflows into mpack_error_too_big flagged errors. No CPE strings were populated in the source feed (cpe:2.3:a:n/a:n/a), and the ENISA EUVD record likewise lists the affected version as n/a, so affectedness must be determined from the library version and API usage rather than structured CPE matching.

Know when Mpack 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 (mitre) PRIMARY 6.2 MEDIUM
AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 5.1 MEDIUM

AV:L and PR:N/UI:N follow the authoritative vector (local, unauthenticated untrusted input); AC:H because the overflow needs a crafted length of SIZE_MAX, realistically only reachable on 32-bit builds; impact availability-only (A:H).

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

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

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

Lifecycle Timeline

2
CVSS changed
Oct 01, 2026 - 17:37 NVD
6.2 (MEDIUM)
CVE Published
Sep 22, 2026 - 00:00 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

An integer overflow vulnerability exists in MPack 1.1.1 in mpack_node_cstr_alloc() and mpack_node_utf8_cstr_alloc().

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Low
niche C MessagePack library, mainly embedded/specialized use, no broad enterprise footprint
Data Quality
5 sources
Confidence: Medium

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.2%
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
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

31
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +31
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.

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