CVE-2025-61043CVE-2025-61043是Monkey's Audio 11.31版本中的一个严重安全漏洞,属于越界读取(Out-of-Bounds Read)类型。该漏洞位于CAPTCharacterHelper::GetUTF16FromUTF8函数中,源于该函数在处理UTF-8字符串长度时存在缺陷。具体而言,当函数将UTF-8编码的字符串转换为UTF-16格式时,未能正确验证输入字符串的实际长度,导致在内存访问时超出预期边界进行读取。这种越界读取可能引发两种主要风险:一是导致应用程序崩溃,造成拒绝服务;二是可能暴露敏感内存数据,包括其他进程信息、系统内存布局等。攻击者可通过构造特制的音频文件(APE格式),在文件元数据中嵌入超长或格式异常的UTF-8字符串,诱使Monkey's Audio在解析文件时触发该漏洞。由于CVSS评分高达9.1,且攻击复杂度低,无需认证和用户交互即可利用,此漏洞对所有使用该软件的用户构成严重威胁。
该漏洞的技术根源在于CAPTCharacterHelper::GetUTF16FromUTF8函数的边界检查缺陷。在UTF-8到UTF-16的字符编码转换过程中,函数需要计算转换后所需的UTF-16缓冲区大小。漏洞产生的根本原因是函数在计算目标缓冲区大小时,未能正确处理输入UTF-8字符串的边界情况。当输入字符串包含非标准字符序列或长度字段与实际数据不符时,函数会计算出错误的缓冲区大小估计值,导致后续的内存读取操作超出合法范围。攻击者可通过精心构造的APE音频文件,在文件的文本信息标签(如艺术家、专辑、标题等字段)中嵌入恶意UTF-8字符串。当Monkey's Audio打开此类文件时,解析器会调用GetUTF16FromUTF8函数进行处理,从而触发越界读取。该漏洞可能被利用来读取堆内存中的其他数据,甚至在某些条件下可能实现代码执行或信息泄露。修复该漏洞需要在字符转换前增加严格的边界验证,确保输入字符串长度与实际数据一致。