CVE-2026-32889
Received Received - Intake
Infinite Loop Vulnerability in tinytag MP3 ID3v2 SYLT Parsing

Publication date: 2026-03-20

Last updated on: 2026-03-30

Assigner: GitHub, Inc.

Description
tinytag is a Python library for reading audio file metadata. Version 2.2.0 allows an attacker who can supply MP3 files for parsing to trigger a non-terminating loop while the library parses an ID3v2 SYLT (synchronized lyrics) frame. In server-side deployments that automatically parse attacker-supplied files, a single 498-byte MP3 can cause the parsing operation to stop making progress and remain busy until the worker or process is terminated. The root cause is that _parse_synced_lyrics assumes _find_string_end_pos always returns a position greater than the current offset. That assumption is false when no string terminator is present in the remaining frame content. This issue has been fixed in version 2.2.1.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-03-20
Last Modified
2026-03-30
Generated
2026-05-07
AI Q&A
2026-03-20
EPSS Evaluated
2026-05-05
NVD
Affected Vendors & Products
Showing 1 associated CPE
Vendor Product Version / Range
tinytag_project tinytag 2.2.0
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-835 The product contains an iteration or loop with an exit condition that cannot be reached, i.e., an infinite loop.
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?

CVE-2026-32889 is a denial of service vulnerability in the tinytag Python library version 2.2.0. The vulnerability occurs when parsing ID3v2 SYLT (synchronized lyrics) frames in MP3 files that are malformed, specifically lacking proper string terminators.

The root cause is that the function _parse_synced_lyrics assumes that the helper function _find_string_end_pos always returns a position greater than the current offset. However, when no string terminator (null byte for single-byte encodings or double null bytes for UTF-16) is present in the remaining frame content, _find_string_end_pos returns a position that causes the parsing loop to repeatedly process the same data without advancing, resulting in an infinite loop.

An attacker can exploit this by supplying a crafted MP3 file containing a malformed SYLT frame missing terminators, causing the parsing operation to hang indefinitely until the process or worker is terminated.


How can this vulnerability impact me? :

This vulnerability can cause a denial of service condition by making the parsing operation enter a non-terminating loop when processing attacker-supplied MP3 files with malformed SYLT frames.

In server-side deployments that automatically parse user-supplied MP3 files, a single crafted 498-byte MP3 file can cause the parsing process to hang indefinitely, consuming resources until the worker or process is terminated.

Locally, opening such a file can cause the parsing task to freeze until manually interrupted, potentially disrupting normal operations.


How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:

I don't know


How can this vulnerability be detected on my network or system? Can you suggest some commands?

This vulnerability can be detected by identifying if your system or network is processing MP3 files using tinytag version 2.2.0, especially if it automatically parses attacker-supplied MP3 files containing malformed SYLT (synchronized lyrics) frames without proper string terminators.

Detection can involve monitoring for processes that hang or enter non-terminating loops when parsing MP3 files, particularly those around 498 bytes in size with crafted SYLT frames.

Since the issue arises during parsing of SYLT frames, you can attempt to detect the vulnerability by running tinytag 2.2.0 on suspicious MP3 files and observing if the parsing operation hangs or consumes excessive CPU without completing.

No specific commands are provided in the resources, but a practical approach is to use Python scripts that load MP3 files with tinytag 2.2.0 and check for infinite loops or hangs during parsing.


What immediate steps should I take to mitigate this vulnerability?

The immediate mitigation step is to upgrade the tinytag library from version 2.2.0 to version 2.2.1 or later, where the vulnerability has been fixed.

The fix involves patches that add boundary checks in the `_parse_synced_lyrics` function and correct the `_find_string_end_pos` function to prevent infinite loops when parsing malformed SYLT frames.

If upgrading immediately is not possible, consider implementing input validation or filtering to block or quarantine MP3 files containing SYLT frames that lack proper string terminators before they are parsed by tinytag.

Additionally, monitor and limit resource usage of processes parsing MP3 files to prevent denial of service caused by infinite loops.


Ask Our AI Assistant
Need more information? Ask your question to get an AI reply (Powered by our expertise)
0/70
EPSS Chart