CVE-2025-55099CVE-2025-55099是Eclipse基金会ThreadX USBX USB主机栈中的一个越界读取漏洞。该漏洞存在于USBX 6.4.3之前的版本中,具体位于_ux_host_class_audio_alternate_setting_locate()函数中。当USBX解析USB音频类描述符(USB Audio Class Descriptor)时,如果攻击者精心构造包含恶意频率字段的描述符数据,可能导致函数在处理这些字段时发生越界读取操作。
USBX是Eclipse ThreadX实时操作系统(RTOS)的USB主机和设备支持模块,广泛应用于嵌入式系统、物联网设备和各种需要USB通信功能的嵌入式产品中。该漏洞的CVSS评分为6.1,属于中等严重等级。攻击向量为物理访问(AV:P),这意味着攻击者需要物理接触目标设备才能实施攻击。
该漏洞的影响范围包括高机密性影响和高可用性影响,但不影响完整性。攻击者可以利用此漏洞读取目标设备内存中的敏感信息,可能包括加密密钥、用户凭证或其他机密数据。同时,越界读取也可能导致系统崩溃或不可用状态,从而影响设备的可用性。由于需要物理访问才能利用此漏洞,其威胁程度相对较低,但仍对嵌入式设备的安全性构成潜在威胁,特别是在设备可能被未授权人员接触的场景中。
该漏洞的根本原因在于_ux_host_class_audio_alternate_setting_locate()函数在解析USB音频类描述符时,未能对频率字段进行充分的边界检查。当USB设备插入时,USBX主机栈会枚举设备并解析其描述符。音频类描述符中包含采样频率(sampling frequency)相关的字段,攻击者可以通过构造恶意的USB音频设备来控制这些字段的值。
具体而言,在_ux_host_class_audio_alternate_setting_locate()函数处理音频接口的alternate setting时,函数会根据描述符中的频率字段进行索引或计算操作。如果攻击者提供的频率值超出了预定义数组或缓冲区的边界,函数将读取超出分配内存范围的数据,导致越界读取漏洞。
利用方式方面,攻击者需要制作一个恶意的USB音频设备(如伪装成U盘的BadUSB设备),当该设备连接到目标嵌入式系统时,恶意描述符会被发送给USBX主机栈进行解析。系统会调用_ux_host_class_audio_alternate_setting_locate()函数处理这些恶意数据,触发越界读取。攻击者可以通过精心设计描述符内容来控制读取的内存区域,从而泄露敏感信息或导致系统崩溃。
值得注意的是,该漏洞需要物理访问才能触发,攻击者必须能够将恶意USB设备插入目标系统的USB端口。这限制了其远程利用的可能性,但在物理安全无法保证的环境中仍构成显著威胁。