CVE-2025-9558CVE-2025-9558是Zephyr RTOS中的一个高危安全漏洞,CVSS评分达到7.6分。该漏洞存在于pb_adv.c文件的gen_prov_start函数中,由于对接收到的数据长度缺乏有效验证,导致潜在的越界写入(Out-of-Bounds Write)问题。攻击者可以通过发送超出预期的数据,利用蓝牙低功耗(BLE)配网过程中的这一缺陷,将恶意数据完整地写入到link.rx.buf接收缓冲区中,而该缓冲区的大小可能无法容纳攻击者发送的完整数据。Zephyr Project是一个开源的实时操作系统,广泛应用于物联网设备、嵌入式系统等场景,因此该漏洞可能影响大量依赖Zephyr RTOS的设备。由于漏洞无需认证即可利用(PR:N),且攻击向量为邻接网络(AV:A),攻击者需要在BLE信号覆盖范围内发起攻击。
该漏洞的核心问题在于pb_adv.c文件中的gen_prov_start函数缺乏边界检查。在BLE配网(provisioning)过程中,该函数接收来自客户端的数据并将其复制到link.rx.buf缓冲区。问题在于代码直接使用接收数据的完整长度进行内存复制操作(memcpy或类似函数),而没有先验证数据大小是否超过缓冲区的实际容量。这导致如果攻击者发送的数据长度大于link.rx.buf缓冲区大小时,会发生越界写入,可能覆盖相邻的内存区域。越界写入可以导致多种后果:1)破坏关键数据结构,可能导致系统崩溃(拒绝服务);2)覆盖函数指针或返回地址,可能实现代码执行;3)破坏堆或栈结构,造成未定义行为。攻击者需要在BLE信号范围内发送特制的配网数据包,触发gen_prov_start函数的越界写入路径。