Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach streaming decoder over network
-
DeliveryBegin stream with reserved 0xc1 byte
-
ExploitDecoder misclassifies as incomplete input
-
ExecutionStream continuous unbounded data
-
PersistBuffered input never released
-
ImpactExhaust process memory (DoS)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V1 - Encoding and Sanitization Parameter handling
|
| Exploitation Conditions | The affected application must use the msgpack5 streaming decoder (the Decoder/streaming decode path) on input controlled by a remote peer, and the attacker must be able to open or write to that stream starting with the reserved byte 0xc1. Exploitation is limited to deployments that feed untrusted, attacker-controlled MessagePack streams into the decoder; applications that only decode trusted or fully-buffered/validated input, or that enforce stream byte/time limits (an explicit documented workaround), are not realistically affected. No authentication or user interaction is required per the vector (PR:N/UI:N), but reaching the decoder's streaming input is the key prerequisite. |
| Impact | This is a moderate-severity availability issue (CVSS 5.9, AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H) confirmed by the GHSA-26wq-p25c-j6fv advisory and vendor patch. The streaming decoder treats the reserved MessagePack byte 0xc1 as incomplete rather than invalid input, so a remote peer can begin a stream with 0xc1 and then keep sending data that is buffered indefinitely, exhausting memory (CWE-228, improper handling of syntactically invalid input). No EPSS score, CISA KEV listing, or public POC is present in the supplied data, so this is not confirmed as actively exploited and there is no public exploit identified at time of analysis. The vector is network-reachable and unauthenticated (PR:N), which raises concern, but impact is limited strictly to availability (C:N/I:N) - there is no code execution or data exposure. One signal conflict exists: the input Tags label this 'Information Disclosure', which directly contradicts the CVSS vector (C:N, A:H) and the advisory text describing memory exhaustion - this is a memory-exhaustion denial of service, not information disclosure. Overall this is a real-but-bounded DoS priority: patch in internet-facing services that run the msgpack5 streaming decoder over untrusted input, but it does not rise to the urgency of an RCE. |
| Exploit ScenarioDerived | A service uses the msgpack5 streaming decoder to parse MessagePack data arriving over a network socket from untrusted clients. A remote, unauthenticated attacker opens a connection and sends the reserved byte 0xc1 followed by a continuous stream of bytes; the decoder keeps buffering all of it while waiting for a value that can never become valid, driving process memory upward until the service is exhausted. No public POC is identified, but the trigger byte and streaming behavior are straightforward to reproduce from the advisory and patch. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 08, 2026
Unbounded memory buffering in msgpack5 before 6.1.0 allows a remote peer to exhaust the memory of a Node.js or browser process that feeds attacker-controlled data into the library's streaming decoder. Because the reserved MessagePack byte 0xc1 is classified as incomplete rather than invalid input, the decoder holds every subsequent byte in its internal buffer list while waiting for a continuation that can never arrive; the defect is fixed in 6.1.0. This is a moderate-severity availability issue (CVSS 5.9, network-reachable, no authentication or user interaction required, availability-only impact) and no public exploit code was identified at time of analysis. Only deployments that stream untrusted MessagePack input into the decoder are realistically exposed; applications that decode trusted or fully buffered and validated input, or that already bound stream size and duration, are not meaningfully affected.
RemediationAI
Vendor-released patch: upgrade msgpack5 to version 6.1.0 or later, which contains commit 85da345bf1acc18ca441741e5cf4aa0ed0d69314 and both rejects 0xc1 as invalid input and tears down the stream (discarding buffered chunks) on unrecoverable decode errors; the release is available at https://github.com/mcollina/msgpack5/releases/tag/v6.1.0 and full details are in https://github.com/mcollina/msgpack5/security/advisories/GHSA-26wq-p25c-j6fv. Because patching a transitive dependency can lag, the advisory's documented workarounds are the practical interim control: inspect or filter the incoming byte stream and reject any payload whose leading byte is 0xc1 before handing it to msgpack5 (a cheap one-byte check, but it must be applied on every stream entry point, including any proxy or framing layer, and it does not protect against other malformed-input paths), and enforce strict per-connection stream byte limits and idle/time limits so that a stalled decoder is forcibly closed rather than permitted to accumulate data (effective against buffering-based exhaustion generally, at the cost of possibly truncating legitimate large or slow streams, so limits must be tuned to real traffic). Operators should additionally cap process heap and configure an OOM-safe restart policy, and should verify whether any bundled front-end assets still ship the pre-6.1.0 dist/msgpack5.js or dist/msgpack5.min.js, since rebuilding is required for browser consumers to pick up the fix. No vendor-released patch gap remains for this issue, but no public exploit code was identified at time of analysis, so prioritisation should focus on internet-facing services that decode untrusted MessagePack streams.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
MessagePack's specification reserves the single byte 0xc1, which has no valid type interpretation in any version of the format. msgpack5's decoder dispatches on the first byte through a size table (SIZES) and, for bytes it does not recognize as a complete or partial value, returns null so the caller raises IncompleteBufferError and waits for more data. 0xc1 was not present in that table, so it fell into the incomplete path instead of the invalid path. The streaming decoder (lib/streams.js Decoder.prototype._transform) had a second flaw: on a decode error it merely emitted an 'error' event without destroying the stream or discarding its buffered bl buffer list, so a peer that opens with 0xc1 keeps the writer alive and the buffer growing, exhausting heap memory. This is CWE-228 (Improper Handling of Syntactically Invalid Structure): a structurally invalid token is mishandled, converting a parse error into a resource-consumption condition. The vendor fix is two-pronged, as shown in commit 85da345bf1acc18ca441741e5cf4aa0ed0d69314: tryDecode now throws 'Error: 0xc1 is a reserved MessagePack byte' immediately for that prefix, and _transform resets this._chunks to a fresh bl() buffer, calls this.destroy(err) and invokes done(), so any unrecoverable decoding error terminates the stream and releases buffered input rather than leaving it pending. The changes are mirrored into the shipped browser bundles dist/msgpack5.js and dist/msgpack5.min.js.
Know when Node.js 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:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Remotely reachable and unauthenticated with trivial trigger (one reserved byte then continuous data), so AV:N/AC:L/PR:N; impact is availability-only memory exhaustion, hence A:H and C:N/I:N.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
1DescriptionCVE.org
msgpack5 is a msgpack v5 implementation for node.js and the browser. Prior to 6.1.0, the streaming decoder treats the reserved MessagePack byte 0xc1 as incomplete input instead of invalid input. When 0xc1 begins a stream, subsequent data remains buffered while the decoder waits for bytes that cannot make the value valid, allowing a remote peer to exhaust memory. This issue is fixed in version 6.1.0.
Blast Radius
ecosystem impact- 294 npm packages depend on msgpack5 (61 direct, 235 indirect)
Ecosystem-wide dependent count for version 6.1.0.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
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
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
EUVD-2026-95110
GHSA-26wq-p25c-j6fv
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB