GitHub Advisoryadvisory · npm

GHSA-v6c2-xwv6-8xf7 music-metadata has an infinite loop vulnerability in ASF parser

HIGH Published 2026-03-17 Modified 2026-03-19 Official page ↗
Aliases
CVE-2026-32256
Ecosystem
npm
Packages
music-metadata
Severity
High
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weaknesses
CWE-835
Reviewed
2026-03-17

Affected packages

• npm music-metadata: < 11.12.3 → fixed in 11.12.3

Description

Summary music-metadata's ASF parser (`parseExtensionObject()` in `lib/asf/AsfParser.ts:112-158`) enters an infinite loop when a sub-object inside the ASF Header Extension Object has `objectSize = 0`. Root Cause When objectSize is 0: 1. `remaining = 0 - 24 = -24` 2. `tokenizer.ignore(-24)` moves the read position backward by 24 bytes 3. `extensionSize -= 0` (loop counter never decreases) 4. `while (extensionSize > 0)` never exits 5. The same 24-byte header is re-read infinitely This is the same pattern as CVE-2026-31808 (GHSA-5v7r-6r5c-r473) in file-type — strtok3's `AbstractTokenizer.ignore()` accepts negative values without validation. Affected Methods • `parseFile()` — HANGS (FileTokenizer inherits vulnerable ignore()) • `parseBuffer()` — HANGS (BufferTokenizer inherits vulnerable ignore()) • `parseStream()` — NOT affected (ReadStreamTokenizer has own ignore() that throws RangeError) Impact A 100-byte crafted .asf file permanently hangs any application using parseFile() or parseBuffer(). music-metadata has 2.2M weekly npm downloads. Suggested Fix Validate `objectSize >= minimumHeaderSize` before calculating the payload. Or fix strtok3's `AbstractTokenizer.ignore()` to reject negative values.

Related

Alias · CVE (1)

  • CVE-2026-32256 music-metadata is a metadata parser for audio and video media files. vulnerability

Weakness · CWE (1)

  • CWE-835 Loop with Unreachable Exit Condition weakness

References