CVE-2026-32889tinytag是一个用于读取音频文件元数据的Python库。在2.2.0版本中存在安全漏洞,攻击者可利用特制的MP3文件触发拒绝服务攻击。具体而言,当库解析ID3v2 SYLT(同步歌词)帧时,若帧内容中缺少字符串终止符,会导致程序进入非终止循环。在服务器端自动解析攻击者提供文件的场景下,仅需一个498字节的MP3即可使Worker进程挂起,严重影响服务可用性。
该漏洞源于`tinytag`库在处理MP3文件的ID3v2 SYLT(同步歌词)帧时的逻辑缺陷。具体漏洞位于`_parse_synced_lyrics`函数中,该函数在解析过程中依赖`_find_string_end_pos`来确定字符串的结束位置。代码存在错误的假设,即认为`_find_string_end_pos`总是返回一个大于当前偏移量的位置。然而,当攻击者构造的MP3文件中的SYLT帧数据缺少标准的字符串终止符时,该假设失效。这将导致解析指针无法向前移动,程序陷入死循环。在服务器端应用(如自动解析上传音频文件的服务)中,攻击者利用此漏洞仅需上传一个498字节的恶意文件,即可导致解析线程或进程长期卡死,消耗CPU资源,造成拒绝服务,严重影响系统可用性。