Skip to main content

msgpack-python CVE-2026-114613

| EUVDEUVD-2026-108280 HIGH
Memory Leak (CWE-401)
2026-10-22 GitHub_M
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Identify service deserializing untrusted msgpack via C extension
  2. Delivery
    Send map with non-str/bytes key
  3. Exploit
    strict_map_key rejection leaks decoded value
  4. Execution
    Repeat malformed requests to grow memory
  5. Impact
    Exhaust 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

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

Alert me

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

msgpack-python < 1.2.3

Affected Packages

euvd msgpack_python fix: 1.2.3

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

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

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.

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

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
High

Lifecycle Timeline

2
Patch available
Oct 22, 2026 - 19:18 EUVD
CVE Published
Oct 22, 2026 - 18:22 cve.org
HIGH 7.5

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

Prevalence
High
widely-used Python serialization library, common transitive dependency in services
Data Quality
4 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 HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

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

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.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

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