music-metadata has an infinite loop vulnerability in ASF parser
High severity
GitHub Reviewed
Published
Mar 17, 2026
in
Borewit/music-metadata
•
Updated Mar 19, 2026
Description
Published to the GitHub Advisory Database
Mar 17, 2026
Reviewed
Mar 17, 2026
Published by the National Vulnerability Database
Mar 18, 2026
Last updated
Mar 19, 2026
Summary
music-metadata's ASF parser (
parseExtensionObject()inlib/asf/AsfParser.ts:112-158) enters an infinite loop when a sub-object inside the ASF Header Extension Object hasobjectSize = 0.Root Cause
When objectSize is 0:
remaining = 0 - 24 = -24tokenizer.ignore(-24)moves the read position backward by 24 bytesextensionSize -= 0(loop counter never decreases)while (extensionSize > 0)never exitsThis 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 >= minimumHeaderSizebefore calculating the payload. Or fix strtok3'sAbstractTokenizer.ignore()to reject negative values.References