CVE-2026-22790EVerest是一款电动汽车充电软件堆栈。在2026.02.0版本之前,HomeplugMessage::setup_payload函数存在严重漏洞。该函数在Release构建中移除了assert检查,直接信任len参数。攻击者可利用此缺陷,通过网络发送过大的SLAC载荷,触发memcpy操作导致约1497字节的栈缓冲区溢出。这允许未经认证的攻击者在无需用户交互的情况下,从相邻网络执行任意代码,严重影响系统的机密性、完整性和可用性。
该漏洞的根本原因在于EVerest软件处理Homeplug消息时的逻辑错误。具体而言,`HomeplugMessage::setup_payload`方法中使用了一个`assert`语句来验证传入载荷长度(`len`)的有效性。然而,在C/C++的Release发布模式下,`assert`宏通常会被定义为空,相应的检查代码会被编译器完全优化移除。这导致在生产环境中,代码实际上没有对`len`进行任何边界检查。随后,代码直接调用`memcpy`函数,将网络数据包中的SLAC载荷数据复制到栈上分配的一个固定大小的缓冲区中(大小约为1497字节)。如果攻击者发送一个长度超过该缓冲区大小的恶意数据包,`memcpy`将会覆盖栈上的返回地址和其他关键数据,导致栈破坏。由于攻击向量为邻接网络(AV:A),且无需认证(PR:N)和用户交互(UI:N),攻击者可以通过物理邻近或同一局域网内发送特制数据包,利用此缓冲区溢出漏洞在目标设备上执行任意Shellcode或指令,从而获得系统的最高控制权限。