Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessUpload crafted 48-byte MP4 to parser
-
DeliveryTrigger stsd sample-entry size==0
-
ExploitZero-advance loop spins synchronously
-
ExecutionEvent loop blocked, memory exhausted
-
ImpactProcess hang or crash (DoS)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitable only when the application parses attacker-supplied MP4-family input through music-metadata AND is running the unreleased master-branch code containing commit d2a7d6f (the |
| Impact | This is a CWE-400 uncontrolled-resource-consumption (DoS) flaw with no confidentiality or integrity impact (C:N/I:N/A:H). The single most important risk signal is NOT the CVSS score but the release status: per the GHSA advisory and the reporter's own note, the vulnerable |
| Exploit ScenarioDerived | An attacker uploads a tiny (48-byte) crafted MP4-family file to a Node.js service that extracts audio/video metadata using music-metadata built from the master branch. The file declares a huge stsd entry_count and a first sample-entry size of 0, so the synchronous StsdAtom.get loop never advances its cursor, pinning one CPU at ~100% and blocking the entire Node event loop until the process is killed or memory is exhausted. A public proof-of-concept buffer exists in the GHSA advisory and the project's regression test. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 08, 2026
Unbounded synchronous looping in the unreleased music-metadata master-branch MP4 'stsd' sample-description parser lets a crafted 48-byte MP4-family file pin the Node.js event loop at ~100% CPU while an in-memory sample-description table grows until the process is killed externally or exhausts memory. The regression was introduced after 11.14.0 by commit d2a7d6f (PR #2693, which changed the cursor advance to 'off += size - 4' without guarding for small sizes) and exists only on the public master branch - no published npm release, including 11.14.0 and earlier, contains the vulnerable change, and 11.16.0 ships the fix. Exploitation requires an application that parses attacker-supplied MP4-family input through parseBuffer, parseFile, parseStream, parseBlob, or parseWebStream; the assessed vector is CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H (no authentication, no user interaction, availability-only impact), no public exploit targeting released versions was identified at time of analysis, and the practical limiting factor for defenders is install method (git/master build versus npm release) rather than configuration.
RemediationAI
Vendor-released patch: 11.16.0 - upgrade to music-metadata 11.16.0 (or later) via https://github.com/Borewit/music-metadata/releases/tag/v11.16.0, which contains the bounding checks added by PR #2734 / commit 90a7d52c69e921a0b019592d887acd97b1c8b8a5; because the vulnerable code was never published to npm, anyone on 11.14.0 or earlier is already safe and need not rush, while anyone building from master must pull the fix commit or the 11.16.0 tag immediately. If the code cannot be updated at once, the highest-value compensating control is to run all MP4-family parsing in an out-of-process worker or child process with a hard memory cap and an external SIGKILL timeout (the upstream regression test uses exactly this pattern with --max-old-space-size=512 and a 10s kill signal) - the trade-off is IPC serialization overhead and the need for a supervisor, but in-process timeouts and health checks will NOT work because the loop never yields to the event loop. A cheaper if less complete mitigation is input pre-validation: reject any MP4-family upload whose 'stsd' box declares an entry size of 0 or less than 16, or whose entry_count obviously exceeds the remaining box payload, before handing the buffer to the parser; this is narrow, can be bypassed by nesting or by unusual box layouts, and adds a bespoke parser you must maintain. Blocking large MP4 uploads or restricting metadata parsing to trusted media is a coarse last resort that removes legitimate functionality. Full details, including the advisory text and the exact 48-byte reproducer, are in https://github.com/Borewit/music-metadata/security/advisories/GHSA-f94x-6692-553q and the patch diff at https://github.com/Borewit/music-metadata/pull/2734.
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
The flaw is an uncontrolled-resource-consumption (CWE-400) regression in music-metadata's ISO Base Media File Format (MP4) parsing layer. In lib/mp4/AtomToken.ts, StsdAtom.get() walks the MP4 'stsd' (sample description) box entry table, reading a 32-bit big-endian, fully attacker-controlled per-entry size with Token.UINT32_BE.get and then advancing the cursor by 'size - 4' after the nested SampleDescriptionTable read. The preceding fix (commit d2a7d6f, merged via PR #2693 to resolve issue #2691) replaced the original 'off += size' with 'off += size - 4' to stop over-skipping the first entry, but introduced no validation that size is at least the 4-byte size field (or, per the fix, at least the 16 bytes required for a SampleEntry). With size == 0 the net advance per iteration is exactly zero, so the cursor never moves, the same four bytes are re-read as 'size' on every pass, and an attacker-controlled entry_count (up to 0xFFFFFFFF) keeps the loop running while table.push() grows the array without bound - first hanging, then exhausting memory. The critical amplifier is that StsdAtom.get() is invoked synchronously from strtok3's AbstractTokenizer.readToken with no await point inside the loop, so nothing yields to the Node.js event loop: in-process timeouts, keep-alives, and health checks never fire, and the whole process is blocked until an external supervisor kills it. The parser is cached under CPE cpe:2.3:a:borewit:music-metadata:*:*:*:*:*:*:*:*, but because the vulnerable code was never published to npm, that CPE range overstates real exposure: only master-branch builds at or after d2a7d6f and before the 11.16.0 fix are affected. The upstream fix (PR #2734, commit 90a7d52c69e921a0b019592d887acd97b1c8b8a5) adds explicit boundary checks - a 'Truncated stsd header' error when the header does not fit, a 'Truncated stsd sample entry' error when the size field does not fit, and an 'Invalid stsd sample entry size' error when size < 16 or size > end - off - which bounds iteration by the available atom payload rather than by the attacker-supplied entry_count.
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:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Crafted MP4 is normally delivered over the network to file-upload/metadata services, so AV:N (not NVD's AV:L); no auth or interaction, and only availability is impacted via event-loop blocking and memory exhaustion.
Primary rating from Vendor (GitHub_M).
CVSS VectorNVD
Lifecycle Timeline
3DescriptionNVD
music-metadata is a metadata parser for audio and video media files. In the public development revision introduced after 11.14.0, a development-branch regression in the MP4 stsd sample-description parser allows an attacker-controlled sample-entry size of zero to prevent the StsdAtom.get cursor from advancing while an attacker-controlled entry_count keeps the synchronous loop running. A crafted MP4-family input can block the Node.js event loop and grow the sample-description table until the process is terminated or exhausts memory. The vulnerable change was present on the public master branch but was not included in music-metadata 11.14.0 or any earlier npm release, and version 11.16.0 contains the fix. This issue is fixed in version 11.16.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-95245
GHSA-f94x-6692-553q
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB