Skip to main content

msgpack5 CVE-2026-107299

| EUVDEUVD-2026-95110 MEDIUM
Improper Handling of Syntactically Invalid Structure (CWE-228)
2026-10-08 security-advisories@github.com GHSA-26wq-p25c-j6fv
5.9
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Reach streaming decoder over network
  2. Delivery
    Begin stream with reserved 0xc1 byte
  3. Exploit
    Decoder misclassifies as incomplete input
  4. Execution
    Stream continuous unbounded data
  5. Persist
    Buffered input never released
  6. Impact
    Exhaust 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

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

msgpack5 < 6.1.0

Affected Packages

npm msgpack5 fix: 6.1.0

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

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

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.

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

CVSS VectorVendor: github

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

Lifecycle Timeline

1
Patch available
Oct 08, 2026 - 18:03 EUVD

DescriptionCVE.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
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 294 npm packages depend on msgpack5 (61 direct, 235 indirect)

Ecosystem-wide dependent count for version 6.1.0.

Threat Intelligence Overview

EPSS Score
0.4%
Top 69% exploitable
Prevalence
Medium
popular Node.js MessagePack library, moderate npm footprint, not universal
Threat Intel
1
1 sources
Data Quality
6 sources
Confidence: High

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.4%
Patch available Yes
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

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-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

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