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