CVE-2025-68137CVE-2025-68137是EVerest EV充电软件栈中的一个高危安全漏洞,CVSS评分8.3。该漏洞存在于SdpPacket::parse_header()函数中,由于整数溢出错误,攻击者可以通过构造恶意的SDP数据包头来触发此漏洞。在解析8字节的完整头部后,缓冲区长度被错误地设置为7,导致剩余读取长度计算结果为负数。由于目标参数类型为size_t(无符号类型),负数被解释为SIZE_MAX或接近该值的无符号大整数。根据服务器配置(明文TCP或TLS),这将导致两种不同的后果:对于明文TCP服务器,会进入无限循环;对于TLS服务器,则可能触发栈缓冲区溢出。攻击者可通过邻接网络,无需认证和用户交互即可利用此漏洞,最终实现高机密性影响、高完整性影响和高可用性影响。
该漏洞的根本原因是SdpPacket::parse_header()函数中的整数下溢。在处理SDP协议数据包时,函数首先读取8字节的头部信息,随后计算剩余待读取数据的长度。计算公式为:remaining_length = current_length - header_length。然而,当current_length恰好等于header_length时,计算结果为0,但代码逻辑错误地将缓冲区长度设置为7(而非正确的0)。这导致remaining_length被计算为7-8=-1。由于函数参数的类型声明为size_t(无符号类型),负数-1被隐式转换为SIZE_MAX(64位系统上为0xFFFFFFFFFFFFFFFF)。随后,代码使用此超大值作为读取长度参数,导致两种攻击场景:1) TLS模式下,尝试读取SIZE_MAX字节数据到栈缓冲区,造成严重栈溢出;2) TCP模式下,持续尝试读取数据直到超时,形成拒绝服务条件。攻击者只需向目标EVerest服务发送精心构造的SDP数据包即可触发此漏洞。