Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply crafted MessagePack message to parser
-
DeliveryDeclare string length near SIZE_MAX
-
ExploitTrigger len+1 integer overflow in cstr_alloc
-
ExecutionUnder-sized allocation / memory corruption
-
ImpactApplication 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 |
| Impact | This is a CWE-190 integer overflow in the MPack C MessagePack library (1.1.1), fixed in commit 3d54d12 which adds a |
| 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 |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
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).
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
Lifecycle Timeline
2DescriptionCVE.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
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
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.
EUVD-2026-84848
GHSA-c2wm-8rj3-h9cx
NVD
CVE.org
EPSS
Exploit-DB