Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify service deserializing untrusted msgpack via C extension
-
DeliverySend map with non-str/bytes key
-
Exploitstrict_map_key rejection leaks decoded value
-
ExecutionRepeat malformed requests to grow memory
-
ImpactExhaust process memory causing denial of service
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Resource cleanup, leak prevention
|
| Exploitation Conditions | Exploitable only when the application deserializes attacker-controlled MessagePack data using the compiled C extension (msgpack._cmsgpack), which is the default build; both unpackb() and the streaming Unpacker API are affected. The specific trigger is a MessagePack map whose key is neither str nor bytes while strict_map_key=True (the default): the key is rejected only after the map value has already been constructed, and the error path returns without releasing that value reference. Meaningful DoS requires many repeated malformed inputs to accumulate (~4 MiB leaked per failed parse, ~100 MiB after 25 per the reporter). Limiting factors: the pure-Python fallback is reported not to leak on this path and can serve as a temporary workaround, and request-size/rate limits reduce but do not eliminate cumulative leakage. |
| Impact | The input CVSS of 7.5 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) reflects a network-reachable, low-complexity, unauthenticated flaw, but the impact is availability-only (C:N/I:N) - there is no data disclosure or code execution, so despite the HIGH rating this is purely a denial-of-service issue. The signals are partly incomplete: no EPSS score is provided and the vulnerability is not listed in CISA KEV, so there is no confirmation of active or widespread exploitation; the only exploitation evidence is the reproduction snippet in the GHSA advisory (a public PoC reference, not verified as a weaponized exploit). The vuln.today Decision label is 'this_week', consistent with a credible but non-emergency DoS rather than an act_now/emergency item. Importantly, the DoS is cumulative, not instantaneous: each rejected parse leaks only ~4 MiB (reporter-measured, ~100 MiB after 25 failed parses), so exploitation requires sustained repeated malformed inputs rather than a single packet. Real-world risk is therefore moderate and concentrated in services that deserialize attacker-controlled MessagePack using the default C extension; it is meaningfully reduced where the pure-Python fallback is used (reported not to leak) or where request-size/rate limits are enforced. Net: a genuine but patchable DoS worth remediating this cycle, not a drop-everything emergency. |
| Exploit ScenarioDerived | An attacker who can submit MessagePack to a service (for example an API endpoint that calls msgpack.unpackb() on request bodies using the default C extension) repeatedly sends maps whose key is neither str nor bytes, each of which is rejected by the default strict_map_key=True after the value has already been constructed, leaking roughly 4 MiB per request. Sustained malformed requests drive unbounded process memory growth until the service is killed or the host exhausts memory, causing denial of service. The GHSA advisory includes a reproduction snippet demonstrating the leak (a public PoC reference, not verified as working exploit code); the network/low-complexity/no-auth vector means no special access is needed beyond the ability to deliver msgpack input. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 22, 2026
Unbounded memory leak in the msgpack-python C extension (msgpack._cmsgpack) allows a remote attacker to exhaust process memory by repeatedly sending malformed MessagePack maps, with approximately 4 MiB retained per failed parse and roughly 100 MiB after 25 failed parses as measured by the reporter. The flaw is triggered when strict_map_key=True (the default) rejects a map key that is neither str nor bytes: the decoded value has already been constructed and is never released, affecting both unpackb() and the streaming Unpacker API in releases up to 1.2.2. No public exploit code or active exploitation is identified in the available data, but the CVSS of 7.5 is availability-only (C:N/I:N/A:H), so impact is limited to denial of service rather than data disclosure or code execution; a public proof-of-concept reference exists in the advisory, though it is not verified as working exploit code.
RemediationAI
Upgrade to msgpack-python 1.2.3, the fixed release referenced at https://github.com/msgpack/msgpack-python/releases/tag/v1.2.3 and available from PyPI as the 'msgpack' package (vulnerable: 1.2.2; fixed in: 1.2.3); the fix commit is https://github.com/msgpack/msgpack-python/commit/620b0eb4c89cd72d4098564537624d9dbb2ce141, which introduces unpack_take_result() ownership transfer plus unpack_clear() on error paths and adds guards against switching unpacking methods while an object is incomplete. If upgrading immediately is not possible, the advisory states the pure-Python fallback is reported not to leak on this path and may be used as a temporary workaround after application compatibility and performance checks, and that request-size and rate limits reduce but do not eliminate cumulative leakage. Note that the update also changes streaming Unpacker behavior - recursively calling the Unpacker, re-initializing it mid-unpack, or switching between unpack(), skip(), header readers, and read_bytes() while an object is incomplete now raises RuntimeError or ValueError in the C extension, which may require compatibility testing. Full advisory: https://github.com/msgpack/msgpack-python/security/advisories/GHSA-j586-36cw-2gc2.
Affected VersionsENISA
Affected Packages
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-python is a Python serializer implementation whose C extension (msgpack._cmsgpack) is the default build for performance-sensitive deserialization. The root cause is CWE-401 (Missing Release of Memory after Effective Lifetime): in msgpack/unpack.h, unpack_callback_map_item() rejects keys that are neither str nor bytes when strict_map_key=True, but by that point the map value has already been constructed; the early error return does not release the value reference. In msgpack/unpack_template.h, the value is held in the local obj within unpack_execute(), and the CT_MAP_VALUE error path jumps to _failed without decrementing that reference, so parser-stack cleanup cannot recover it because the value was never stored in the stack. The pure-Python fallback checks the key before decoding the value and does not exhibit the leak in the reported tests. The fix also addresses a separate use-after-free/double-Py_DECREF issue in the streaming Unpacker, where an inactive parser-stack slot could retain a non-owning pointer to a decoded object, be reactivated by a subsequent skip(), and then have the stale pointer treated as an owned reference during failure cleanup. The trigger requires deserializing attacker-controlled MessagePack data with the compiled extension; exact affected version range is unconfirmed - the report reproduces on 1.2.2 and mentions 1.1.x through 1.2.2 while attributing introduction to commit cd81370 (PR #673), a discrepancy the advisory says must be resolved before a definitive range is published.
Know when Python 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:H
A remote unauthenticated attacker supplies the malformed payload (AV:N/AC:L/PR:N/UI:N); only availability is affected through cumulative memory-exhaustion DoS, so C:N/I:N/A:H.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
MessagePack is the serializer implementation for Python msgpack.org. Prior to 1.2.3, the msgpack-python C extension (msgpack._cmsgpack) leaks a decoded map value when deserialization rejects a key with strict_map_key=True (the default). Repeated malformed inputs can cause unbounded process memory growth and denial of service in applications that deserialize attacker-controlled MessagePack data. Both unpackb() and the streaming Unpacker API are affected. The pure-Python fallback does not exhibit this leak in the reported tests. This issue is fixed in version 1.2.3.
Technical POC Analysis
CWE-401 (Missing Release of Memory after Effective Lifetime), with a secondary CWE-416 (Use After Free) found during the same audit.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A high-severity vulnerability in msgpack-python (up to version 1.2.2) allows remote attackers to cause a denial-of-service by exhausting server memory through repeated malformed MessagePack messages. Applications using this library for data exchange are at risk of becoming unresponsive or crashing, disrupting service availability for end users. Leadership should prioritize remediation, especially for customer-facing services, to prevent operational downtime.
No vendor-released patch identified at time of analysis. Interim mitigations include: implementing strict input validation and rate limiting on endpoints accepting MessagePack data; using a reverse proxy or API gateway to limit request sizes and rates; monitoring memory usage for unusual patterns and restarting processes proactively; and isolating affected services to limit blast radius.
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
Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
EUVD-2026-108280
NVD
CVE.org
GitHub
Exploit-DB