IPBUF安全漏洞报告
English
CVE-2026-26070 CVSS 4.6 中危

CVE-2026-26070 EVerest数据竞争导致拒绝服务漏洞

披露日期: 2026-03-26

漏洞信息

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

相关标签

竞态条件数据竞争拒绝服务EVerest充电桩

漏洞概述

EVerest电动汽车充电软件堆栈在2026.02.0版本之前存在数据竞争漏洞。由于并发访问`std::map<std::optional>`,可能导致容器损坏或可选值损坏。该漏洞由EV SoC更新、功率计周期性更新与拔出/会话结束状态同时触发,影响系统稳定性。

技术细节

该漏洞的核心在于EVerest软件栈中对于共享资源`std::map<std::optional>`的访问缺乏适当的线程同步机制。在C++标准库中,STL容器并非线程安全的。当系统处于正常运行状态时,EV的SoC(荷电状态)更新任务与功率计的周期性数据采集任务分别在不同的线程中运行,两者都可能对同一个map容器进行读写操作。漏洞触发的高危场景发生在充电即将结束或中断时,即拔出充电枪或SessionFinished事件触发。此时,如果恰好与SoC更新或功率计更新发生重叠,就会形成典型的“竞态条件”。一个线程正在迭代或修改map结构,而另一个线程同时进行访问,导致内部指针失效或内存结构破坏。这不仅会导致进程崩溃(DoS),在特定情况下还可能引发逻辑错误,导致充电数据丢失或计费异常,严重影响了充电基础设施的可用性和可靠性。

攻击链分析

STEP 1
物理接入
攻击者或用户将电动汽车接入安装了受影响EVerest版本的充电桩。
STEP 2
状态触发
系统正常运行,触发EV SoC更新和功率计周期性数据更新,此时两个线程开始并发访问共享内存。
STEP 3
制造竞争
在数据更新过程中,物理拔出充电枪或系统触发SessionFinished状态,导致第三个线程介入修改或清理共享数据。
STEP 4
系统崩溃
多线程对`std::map`的非同步并发访问导致数据结构损坏,引发程序异常崩溃或拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#include <thread> #include <map> #include <optional> #include <iostream> // Simulating the vulnerable structure in EVerest std::map<int, std::optional<double>> shared_power_data; bool system_running = true; // Simulate EV SoC update thread void ev_soc_update() { while (system_running) { // Thread 1: Writing to shared map shared_power_data[1] = 85.5; std::this_thread::sleep_for(std::chrono::milliseconds(10)); } } // Simulate Powermeter periodic update thread void powermeter_update() { while (system_running) { // Thread 2: Reading/Writing to shared map if (shared_power_data.find(1) != shared_power_data.end()) { auto val = shared_power_data[1]; // Potential race condition during copy or access if (val.has_value()) { shared_power_data[2] = val.value(); } } std::this_thread::sleep_for(std::chrono::milliseconds(15)); } } // Simulate Unplugging/SessionFinished event void trigger_session_finished() { // Wait for a specific time to overlap with other updates std::this_thread::sleep_for(std::chrono::milliseconds(50)); // Thread 3: Modifying/Clearing map while others are active // This operation conflicts with concurrent access in Thread 1 & 2 shared_power_data.clear(); system_running = false; } int main() { std::thread t1(ev_soc_update); std::thread t2(powermeter_update); std::thread t3(trigger_session_finished); t1.join(); t2.join(); t3.join(); std::cout << "PoC executed. Check for crashes or undefined behavior." << std::endl; return 0; }

影响范围

EVerest < 2026.02.0

防御指南

临时缓解措施
建议在升级前,通过监控工具检测进程异常,并在崩溃后配置自动重启机制以维持基本服务。同时,尽量避免在高负载充电操作时进行物理断开操作。

参考链接

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