CVE-2025-55091CVE-2025-55091是Eclipse Foundation ThreadX项目中的网络支持模块NetX Duo在6.4.4版本之前存在的一个安全漏洞。该漏洞位于_nx_ip_packet_receive()函数中,当系统接收到一个以太网帧,其以太网类型字段被设置为IP类型,但该帧中实际上不包含有效的IP数据包数据时,会触发越界读取(Out-of-Bounds Read)操作。
NetX Duo是Eclipse ThreadX实时操作系统(RTOS)的网络协议栈实现,广泛应用于嵌入式系统和物联网(IoT)设备中。该漏洞由Eclipse基金会安全团队成员[email protected]发现并报告。
根据CVSS 3.1评分体系,该漏洞评分为6.5分,属于中危级别。攻击者可以通过网络远程利用此漏洞,无需任何认证和用户交互。漏洞的成功利用可能导致有限的机密性泄露和可用性影响,但不会影响数据完整性。
该漏洞的核心问题在于网络协议栈在解析以太网帧时,没有充分验证帧中是否实际包含完整的IP数据包内容。当接收到一个声明为IP类型但实际数据为空或不完整的以太网帧时,协议栈会尝试从缓冲区中读取超出实际数据范围的内容,从而导致越界读取。这种类型的漏洞可能被攻击者利用来泄露内存中的敏感信息,或在某些情况下导致系统崩溃(拒绝服务攻击)。
鉴于NetX Duo广泛应用于各类嵌入式设备和IoT产品中,此漏洞可能影响到大量使用ThreadX RTOS的设备,包括工业控制系统、智能家居设备、医疗设备等领域。
NetX Duo的_nx_ip_packet_receive()函数负责处理接收到的IP数据包。在正常的数据包处理流程中,该函数会解析以太网帧头,提取IP数据包,并根据IP头部信息进行进一步的处理。
漏洞的根本原因在于,当以太网帧的type字段被设置为IP类型(0x0800)时,_nx_ip_packet_receive()函数会假定帧中包含完整的IP数据包数据,并直接尝试解析IP头部。然而,攻击者可以精心构造一个恶意的以太网帧,该帧的type字段设置为IP类型,但帧的实际长度不足以包含完整的IP数据包,甚至完全为空。
在这种情况下,函数会尝试从一个不包含有效IP数据的缓冲区中读取数据。由于缓冲区可能位于已分配内存的边界之外,这种越界读取操作可能导致以下后果:
1. **信息泄露**:越界读取可能读取到相邻内存区域中的敏感数据,如加密密钥、用户凭据或其他机密信息。
2. **拒绝服务(DoS)**:越界读取可能导致系统检测到内存访问错误并触发异常处理,在某些情况下可能导致系统崩溃或重启。
3. **潜在的代码执行**:虽然此漏洞本身被评定为仅影响机密性和可用性,但在某些特定的环境配置下,越界读取可能为进一步利用提供线索。
攻击者利用此漏洞的方式相对简单:只需向目标设备发送一个特制的以太网帧即可。由于该漏洞可通过网络远程利用,且无需认证或用户交互,攻击者可以在目标设备所在的网络环境中轻松发起攻击。