IPBUF安全漏洞报告
English
CVE-2026-26072 CVSS 4.2 中危

CVE-2026-26072 EVerest数据竞争漏洞

披露日期: 2026-03-26

漏洞信息

漏洞编号
CVE-2026-26072
漏洞类型
竞争条件
CVSS评分
4.2 中危
攻击向量
物理 (AV:P)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
EVerest

相关标签

竞争条件EVerest数据竞争DoSCVE-2026-26072

漏洞概述

EVerest是一个开源的电动汽车(EV)充电软件堆栈。在2026.02.0版本之前,该软件存在一个数据竞争漏洞,源于对`std::map<std::optional>`容器的并发访问缺乏同步保护。该漏洞可能导致容器或可选对象的内存损坏。触发该漏洞的特定条件包括:电动汽车SoC(荷电状态)更新与电表周期性更新同时发生,或者在拔插充电枪及会话结束(SessionFinished)状态变更期间。成功利用此漏洞可能导致应用程序崩溃或服务不可用。

技术细节

该漏洞核心在于EVerest代码中存在线程安全问题。具体表现为多个并发线程或异步任务在没有适当锁机制保护的情况下,同时对`std::map<std::optional>`数据结构进行读写操作。攻击向量(AV:P)表明利用该漏洞通常需要物理层面的交互,例如操作充电枪。攻击链的触发点在于时序的重叠:当系统正在处理EV SoC的更新请求,同时电表模块正在进行周期性的数据同步,此时若用户拔掉充电枪或系统触发SessionFinished事件,将导致资源竞争。这种竞争条件破坏了C++ STL容器的内部状态,导致未定义行为,主要表现为拒绝服务(Availability Impact High),即充电服务进程崩溃。

攻击链分析

STEP 1
物理接触
攻击者或用户物理接触EVerest充电设备。
STEP 2
触发并发状态
启动充电会话,使系统处于SoC更新和电表周期性更新的活跃状态。
STEP 3
中断会话
在上述更新进行时,执行拔掉充电枪操作,触发SessionFinished状态。
STEP 4
触发竞争条件
SessionFinished处理逻辑与周期性更新逻辑同时访问`std::map`,导致数据竞争。
STEP 5
系统崩溃
内存损坏导致应用程序崩溃,造成拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Conceptual PoC demonstrating the Data Race // This is a C++ simulation of the std::map concurrent access issue. #include <iostream> #include <map> #include <thread> #include <optional> #include <chrono> std::map<int, std::optional<double>> powermeter_data; bool running = true; // Simulates EV SoC Update / Powermeter Periodic Update void periodic_updater() { while (running) { // Unsafe write access powermeter_data[1] = 50.5; std::this_thread::sleep_for(std::chrono::milliseconds(10)); } } // Simulates Unplugging / SessionFinished event handler void session_finish_handler() { // Unsafe read/erase access auto it = powermeter_data.find(1); if (it != powermeter_data.end()) { // Potential data race here if concurrent write happens double val = it->second.value_or(0.0); std::cout << "Value: " << val << std::endl; powermeter_data.erase(it); } } int main() { std::thread t1(periodic_updater); // Simulate the trigger event std::this_thread::sleep_for(std::chrono::milliseconds(50)); session_finish_handler(); running = false; t1.join(); return 0; }

影响范围

EVerest < 2026.02.0

防御指南

临时缓解措施
在未升级补丁前,建议严格限制对充电桩的物理访问,避免在充电高峰期进行非正常的拔插操作。管理员应监控充电服务的日志,一旦发现异常重启或崩溃,应排查是否存在此类并发操作。最根本的缓解措施是应用官方发布的修复补丁。

参考链接

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