Skip to main content

music-metadata EUVDEUVD-2026-95238

| CVE-2026-107389 MEDIUM
Memory Allocation with Excessive Size Value (CWE-789)
2026-10-08 GitHub_M GHSA-5gfj-9q3v-qfp3
6.2
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Deliver crafted WebM/MKV/MKA file to parser
  2. Delivery
    EBML reads attacker-controlled VINT leaf length
  3. Exploit
    Allocate oversized string/Uint8Array before bounds check
  4. Execution
    Out-of-memory or uncatchable V8 fatal abort
  5. Impact
    Service/process denial

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory allocation limits
Exploitation Conditions

Exploitation requires that the application pass attacker-controlled Matroska/WebM input (.webm, .mkv, or .mka) to music-metadata < 11.16.0 - this works against default configuration, no special feature flag needed, because the EBML VINT leaf-length validation is absent in all affected paths. No authentication is required (PR:N) and no user interaction beyond the application ingesting the file (UI:N). Severity-limiting factors: the worst outcome (uncatchable V8 fatal abort, exit code 133) is runtime- and API-dependent - it was reproduced only via parseFile on Node.js 26.7.0 and was NOT reproduced via parseBuffer on Node.js 20-25, where the flaw instead yields large allocation attempts or catchable errors. Impact is limited to availability only; there is no path to code execution, data disclosure, or integrity loss.

Impact

This is a genuine but moderate-severity availability issue, not a top-tier emergency. The vendor CVSS 3.1 vector (AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, 6.2 Medium) scopes impact strictly to availability, which matches CWE-789 (memory allocation with excessive size value) and the description - no confidentiality or integrity impact is demonstrated. The key signal to scrutinize is the attack vector: the vendor chose AV:L, but music-metadata is a library most often used to parse untrusted, remotely-supplied media (uploaded .webm/.mkv/.mka files), which argues for a network vector in many real deployments - verify against your own data flow. EPSS score is NOT provided in the input and cannot be stated. KEV status is not listed (no CISA KEV entry), so there is no evidence of active exploitation. No POC=YES flag is provided, though the GHSA advisory documents the reporter's own reproducible demonstrations (34-byte→~128 MiB alloc, 70-byte→500 MiB, 48-byte→uncatchable V8 abort on Node 26.7.0). The signals are internally consistent: a high-availability-impact, low-complexity, unauthenticated DoS in a parser, with no exploitation-in-the-wild evidence. Real priority is driven by exposure - if you parse untrusted media server-side, patch promptly because the uncatchable V8 fatal abort (exit 133, survives try/catch) can crash a worker process deterministically; if you only parse trusted local files, this is lower urgency.

Exploit ScenarioDerived

An attacker uploads a tiny crafted WebM/MKV/MKA file (as small as 34-70 bytes) to an application that uses music-metadata to extract audio/video metadata. The EBML parser reads the attacker-declared VINT leaf length and immediately allocates a string token or Uint8Array of that size - hundreds of MiB from a few bytes - causing out-of-memory denial of service; on Node.js 26.7.0 via parseFile, a declared 32 GiB leaf triggers an uncatchable V8 fatal abort that kills the process despite surrounding try/catch. The vendor advisory includes reproducible demonstrations of all three outcomes, but no standalone public exploit code is identified in the provided references.

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

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

Alert me

AnalysisAIv1 – Oct 08, 2026

Denial of service in the npm package music-metadata before 11.16.0 lets unauthenticated remote attackers crash or exhaust memory in any application that parses untrusted Matroska, WebM, or MKA input - a 34-byte file can trigger an ~128 MiB allocation, a 70-byte file a 500 MiB allocation, and (demonstrated only via the parseFile API on Node.js 26.7.0) a 48-byte file an uncatchable V8 fatal abort that exits with code 133. The flaw carries availability impact only and is remotely reachable with no authentication and no user interaction beyond the application ingesting the file (assessed CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H; the originally reported score of 6.2 used an AV:L vector). No confirmed active exploitation (not in CISA KEV) and no public exploit code identified at time of analysis, though the upstream advisory documents minimal crafted inputs that deterministically reproduce the allocation behavior, so deployment of the fixed version is the priority for anything that accepts user-supplied media.

RemediationAI

Upgrade to music-metadata 11.16.0 or later (vendor-released patch: 11.16.0), which validates every EBML leaf length against the parent boundary and the known file size before allocating and which bounds stream reads to 64 KiB chunks; the fix is tracked in PR https://github.com/Borewit/music-metadata/pull/2735 (commits 163f013364ac9fc8dd0c3987433cd065a615af58 and 2d14dc1f7391a94235948a0b823155538f69b3df) and detailed in GHSA-5gfj-9q3v-qfp3. If upgrading immediately is not possible, apply compensating controls and accept their trade-offs: reject or discard Matroska/WebM/MKA uploads outright if that format is not a business requirement (simplest and most complete, at the cost of losing legitimate MKV/WebM metadata parsing); enforce a strict server-side maximum input size and, more importantly, a per-parse memory ceiling by running music-metadata in a separate worker thread or child process with an OS-level memory limit (cgroup, ulimit -v, or Node --max-old-space-size) and restarting it on failure, which contains the OOM case but does NOT fully contain the Node.js 26.7.0 parseFile fatal abort other than by killing the process; avoid the parseFile code path on Node.js 26.7.0 and prefer parseBuffer/parseStream with buffered input already bounded by your own size checks, noting the advisory reproduced the worst case only through parseFile; and rate-limit or sandbox untrusted media ingestion to limit concurrent parses that multiply memory consumption. Because impact is availability-only and there is no path to code execution or data disclosure, prioritization should follow how exposed the receiving service is to untrusted media rather than emergency patching, but the upgrade is a low-cost, definitive fix.

Affected VersionsENISA

music-metadata < 11.16.0

Affected Packages

npm music-metadata fix: 11.16.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

music-metadata is a JavaScript/TypeScript metadata parser for audio and video files, distributed on npm under the Borewit scope (CPE cpe:2.3:a:borewit:music-metadata:*:*:*:*:*:*:*:*). Its Matroska/WebM support is implemented in lib/ebml/EbmlIterator.ts, which reads EBML elements: an element ID and a variable-length integer (VINT) size field, decoded via readVintData() and readUIntBE(), with the leading marker bit stripped (lenField[0] ^= 0x80 >> (lenField.length - 1)). The root cause is CWE-789 (Memory Allocation with Excessive Size Value): before the fix, the decoded leaf length was passed straight into allocation sites - new StringType(e.len, 'utf-8') in readString() and a Uint8Array of e.len in readBuffer() - without checking that the declared length is a safe integer, is non-negative, and fits within the enclosing container boundary or the known/available input size. Because the VINT can declare lengths up to 32 GiB from a handful of bytes, a tiny hostile file yields allocations orders of magnitude larger than the input, and on Node.js 26.7.0 one parseFile path produced an uncatchable V8 fatal abort (exit code 133) that a surrounding try/catch could not intercept. The upstream fix (PR #2735, commits 163f013364ac9fc8dd0c3987433cd065a615af58 and 2d14dc1f7391a94235948a0b823155538f69b3df) clamps the child container end to Math.min(posDone, tokenizer.fileInfo.size ?? Infinity, declared end), rejects invalid lengths with EbmlContentError('Invalid element length: …') before any leaf read occurs, and replaces unbounded stream reads with incremental 64 KiB chunked reads that assemble the payload only after the bytes are actually read.

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_M) PRIMARY 6.2 MEDIUM
AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

A metadata parser typically processes remotely-supplied/uploaded media so AV:N over the vendor's AV:L; no auth or interaction (PR:N/UI:N), availability-only (A:H, C/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_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Oct 08, 2026 - 21:17 EUVD

DescriptionCVE.org

music-metadata is a metadata parser for audio and video media files. Prior to 11.16.0, the Matroska and WebM EBML parser decodes an attacker-controlled VINT element length and uses it for string-token or Uint8Array allocation before confirming that the leaf fits within its parent or available input. Crafted WebM, MKV, or MKA inputs can cause disproportionate allocations, out-of-memory denial of service, or, for a demonstrated parseFile path on Node.js 26.7.0, an uncatchable V8 fatal abort. The exact failure mode depends on the tokenizer, parser API, and runtime, but the affected leaf-length validation flaw is shared and has availability impact only. This issue is fixed in version 11.16.0.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 1 npm packages depend on music-metadata (1 direct, 0 indirect)

Ecosystem-wide dependent count for version 11.16.0.

Threat Intelligence Overview

EPSS Score
0.1%
Top 98% exploitable
Prevalence
Medium
popular npm audio/video metadata parser, broad Node.js library use
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

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.1%
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
Defer
Exploitation
Poc
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

31
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +31
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