Skip to main content

msgpack5 EUVDEUVD-2026-95108

| CVE-2026-107297 MEDIUM
Inefficient Algorithmic Complexity (CWE-407)
2026-10-08 security-advisories@github.com GHSA-gcx5-hxj7-gpqq
5.9
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Open connection to streaming msgpack5 decoder
  2. Delivery
    Send valid container header (large array/map)
  3. Exploit
    Drip remaining bytes in tiny chunks
  4. Execution
    Force repeated reparse of completed elements
  5. Persist
    Quadratic CPU use blocks event loop
  6. Impact
    Service-wide denial of service

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Algorithmic complexity limits
Exploitation Conditions

Exploitation requires the application to use msgpack5's streaming Decoder (the decoder() stream / _transform path) and to feed it data from an untrusted remote peer who controls how the byte stream is fragmented into chunks. The limiting factors are significant: the attacker must be able to split a single valid MessagePack array or map container across many small chunks (hence CVSS AC:H), and applications that buffer each complete MessagePack value before decoding, or that decode only from trusted sources, are not exposed. Versions prior to 6.1.0 are affected; 6.1.0 preserves incremental container state so completed elements are not reparsed. Impact is limited to CPU exhaustion / event-loop blocking (availability) with no confidentiality or integrity effect.

Impact

This is a moderate-severity denial-of-service issue, and the signals are internally consistent rather than conflicting. The CVSS:3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H, base 5.9) correctly captures a remote, unauthenticated, availability-only impact (CWE-407, algorithmic complexity) with high attack complexity - the AC:H reflects that the attacker must control chunk fragmentation to trigger the quadratic reparse rather than any memory-corruption timing. No EPSS score, CISA KEV listing, or public POC was provided in the input, so exploitation status is 'no public exploit identified at time of analysis'. There is no SSVC decision data supplied. The realistic priority is lower than a typical CVSS 5.9 might suggest: impact is confined to CPU exhaustion / event-loop blocking (a availability hit, recoverable on connection close), there is no data exposure or code execution, and exploitation requires the application to specifically use the streaming decoder on attacker-controlled chunked input. The input Tag 'Information Disclosure' contradicts the vector (C:N, I:N) and the GHSA summary (a parsing DoS) - this appears to be a mislabeling, not a confidentiality concern.

Exploit ScenarioDerived

A Node.js service uses msgpack5's streaming decoder to parse MessagePack data arriving over a network socket from untrusted peers. A malicious peer sends one valid array or map container but delivers it one byte (or a few bytes) at a time, so each arriving chunk forces the decoder to reparse all previously completed elements from the beginning, producing quadratic CPU growth that pins the event loop and starves all other clients. No public exploit code was identified, but the technique is straightforward given AC:H only reflects the need to control chunk boundaries.

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

Quadratic CPU consumption in the msgpack5 streaming decoder (versions prior to 6.1.0) lets a remote peer block the Node.js event loop by fragmenting a single valid MessagePack array or map across many small chunks. The decoder reparses the incomplete container from the beginning on every arriving chunk, so completed elements are decoded repeatedly and processing cost grows quadratically with the number of chunks. Exploitation requires the application to use the streaming Decoder path and accept untrusted, attacker-fragmented input - a condition rated high complexity (AC:H) - and the impact is limited to availability, with no confidentiality or integrity effect; no public exploit code was identified at time of analysis.

RemediationAI

Upgrade msgpack5 to version 6.1.0 or later - the vendor-released patch that preserves incremental container state so completed elements are never reparsed (fix commit e4827641d3105e295cbbd56e9c5389978547eab4; advisory GHSA-gcx5-hxj7-gpqq). Pinning the exact fixed version in package.json/package-lock.json (or an equivalent npm override / yarn resolution) is recommended since this is a transitive dependency risk. If an immediate upgrade is not possible, the vendor-documented workarounds are: buffer each complete MessagePack value before handing it to the decoder (eliminates incremental reparsing but adds memory overhead proportional to the largest message and requires an application-side framing protocol), or cap the number of chunks accepted for a single value so an attacker cannot accumulate enough fragments to reach quadratic cost (needs an explicit, enforced limit; overly tight limits may reject legitimately large messages). Decoding only from trusted peers, or restricting the endpoint that receives msgpack-framed input to authenticated/internal clients, also removes the remotely triggerable path. None of these workarounds repair the underlying algorithmic flaw, so patching to 6.1.0 remains the authoritative fix.

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

msgpack5 is a MessagePack v5 implementation for Node.js and the browser. The flaw is CWE-407 (Inefficient Algorithmic Complexity): in vulnerable builds, the streaming decoder's _transform path called decode(this._chunks) with no retained state, so whenever a chunk arrived without completing an array or map container, the decoder restarted parsing the buffered prefix from byte zero. An attacker who controls chunk boundaries can therefore force repeated re-decoding of already-completed elements, producing O(n^2) work and starving the event loop. The fix (commit e4827641d3105e295cbbd56e9c5389978547eab4, released as 6.1.0) introduces an incremental decode state - a stack of container frames with type, length, itemCount and accumulated result - plus a decodeContainerHeader() helper, so tryDecodeIncremental() consumes container headers once and completeIncrementalValue() appends newly decoded elements to existing frames instead of reparsing them. The same commit also builds depth and maxArrayLength/maxMapLength checks into the incremental path, keeping bounded-recursion guarantees intact.

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 5.9 MEDIUM

Remote unauthenticated peer (AV:N/PR:N/UI:N) but must control chunk fragmentation to trigger quadratic reparse (AC:H); availability-only DoS, so C:N/I:N/A:H.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:P/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 reparses an incomplete array or map from the beginning whenever another chunk arrives. A remote peer can split one valid MessagePack container across many small chunks, causing completed elements to be decoded repeatedly, producing quadratic CPU use and blocking the event loop. 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 but not ubiquitous npm MessagePack library for Node.js
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
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