CVE-2026-23833ESPHome是一款用于通过家庭自动化系统远程控制微控制器的系统。在2025.9.0至2025.12.6版本中,其API组件的protobuf解码器存在整数溢出漏洞,攻击者可利用该漏洞发起拒绝服务攻击。当ESPHome未启用API加密时,攻击者可通过发送包含恶意构造的protobuf消息来触发漏洞。该漏洞位于components/api/proto.cpp中的边界检查代码,当field_length字段值过大时,ptr + field_length的加法运算可能发生整数溢出,导致边界检查失效。攻击成功后,设备会读取无效内存区域并发生崩溃。此漏洞影响所有使用ESPHome的设备平台,包括ESP32、ESP8266、RP2040和LibreTiny。由于无需认证即可利用,攻击门槛较低,建议用户尽快升级到修复版本。
该漏洞的根本原因在于ESPHome的protobuf解码器在处理变长字段长度时缺乏适当的整数溢出防护。在components/api/proto.cpp中,代码使用ptr + field_length > end来检查读取范围是否越界。当field_length为一个极大的无符号整数值时,ptr + field_length会发生整数溢出,结果可能小于ptr或end,从而绕过边界检查。具体来说,如果ptr指向某个内存地址,field_length为0xFFFFFFFF这样的极大值,加法结果会环绕回一个较小的地址值,导致检查失效。随后代码继续从这个伪造的地址读取数据,实际上是越界访问内存。在未启用加密的明文API模式下,攻击者可以直接发送恶意protobuf消息,无需任何认证信息即可触发漏洞。如果启用了Noise加密协议,则需要获取目标设备的加密密钥才能构造有效的攻击载荷。漏洞影响所有ESPHome设备平台,因为它们共享同一套API组件代码。