CVE-2026-32889
Infinite Loop Vulnerability in tinytag MP3 ID3v2 SYLT Parsing
Publication date: 2026-03-20
Last updated on: 2026-03-30
Assigner: GitHub, Inc.
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| tinytag_project | tinytag | 2.2.0 |
Helpful Resources
Exploitability
| 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.