为了满足电动汽车 (EV,Electric Vehicle) 日益增长的需求,电动汽车充电基础设施一直在迅速扩张。基础设施扩张导致出现了大量不安全的电动汽车充电站 (EVCS,EV Charging Stations) ,这些充电站容易受到网络攻击。本文研究了电动汽车充电站的云管理系统 (CMS,Cloud Management System) 。具体来说,重点关注开放充电点协议 (OCPP,Open Charge Point Protocol) 中后端与 EVCS 通信的安全性。本研究在 16 个流行电动汽车充电管理系统中发现了 6 个零日漏洞,证明了此类安全漏洞的普遍性。
0x01 简介
近年来全球电动汽车市场经历了显着增长,预计 2023 年电动汽车销量将增加 1400 万辆。电动汽车数量的增加推动了对可靠且可访问的充电基础设施的需求,导致大量电动汽车充电站的快速部署。
尽管迫切需要迅速部署电动汽车充电站,但人们越来越担心此类联网设备在网络攻击方面的不安全性。电动汽车充电生态系统由多个网络和物理组件组成,已发现的安全漏洞和攻击极大地影响了整个电动汽车充电生态系统,包括电动汽车充电系统的运行、电动汽车消费者和互联关键基础设施(即电网)。受此类攻击的启发,在本文中评估了已部署的 OCPP 后端的安全性,这些后端是远程访问和管理电动汽车充电系统运行的网关。这些后端托管在云端,作为电动汽车充电云管理系统CMS的一部分。
通过的真实测试平台,本研究提供了一种系统的方法来分析和发现 OCPP 后端的漏洞,并在 16 个真实的 OCPP 后端部署中验证了发现的漏洞,这些后端由各种供应商/运营商使用。
0x02 背景
电动汽车充电生态系统由几个相互连接的组件组成,它们协同工作,为用户(个人和企业)提供充电服务。如下图所示,EVCS 是充电生态系统的核心。它需要各种网络层和物理层组件协同交互,以提供灵活的基础设施利用率。电动汽车充电可分为三个不同的级别:
i)一级电动汽车充电系统,代表慢速交流充电器,由于充电速度极慢,正在逐步淘汰;
ii)二级充电可以是交流或直流,是公共充电基础设施最常用的电动汽车充电系统;
iii)三级或直流快速充电器,支持 40kW 至 360kW 的高充电速率。
这些电动汽车充电系统提供电动汽车与电网之间的连接,并由公用事业公司管理。另一方面,网络层组件代表用于远程控制和管理充电基础设施以及用户与生态系统交互的实体集合。如上图所示,网络层包括以下主要组件:
移动应用程序:电动汽车车主使用移动应用程序来控制其车辆的充电。移动应用程序由运营商设计,为用户提供对充电基础设施的可见性和有限的控制。访问者可以查看描绘电动汽车充电桩分布的地图以及有关其可用性、类型、充电费用等信息。这些移动应用程序还包括调度、管理和远程电动汽车充电桩控制。
充电管理系统:移动应用程序通过超文本传输协议 (HTTP)使用安全套接字层 (SSL)/传输层安全 (TLS) 协议与 CMS 交互。CMS 是生态系统中计算能力最强大的组件。它能够监控、检测和管理每个运营商的整个公共电动汽车充电桩网络。此外,CMS 还拥有一个 OCPP 后端端点,负责与电动汽车充电桩进行通信和控制。
OCPP 后端:OCPP 是电动汽车充电生态系统标准中事实上的协议,用于管理托管在 CMS 上的 OCPP 后端(OCPP 服务器)与部署在电动汽车充电桩上的 OCPP 客户端之间的通信。OCPP 后端通过 WebSocket 通道实现两个组件之间的持续通信。因此,它为 CMS 提供了对 EVCS 操作的远程控制功能,包括远程启动/停止充电会话。此外,它还允许运营商推送 EVCS 固件的更新,并为 CMS 提供对 EVCS 的监控功能。请注意,EVCS 还可能与其制造商保持通信渠道,以进行远程控制、诊断和更新。
其他通信标准:EVCS 到 EV 的通信通过多种标准实现,例如 SAE J-1772 和 IEC 61851等等。这些标准通过 2 个专用引脚定义了充电电缆束上的通信。此类通信包括传输 EV ID、MAC 地址和 EV 支持的最大充电速率。
0x03 攻击模型分析
A. 威胁模型
攻击者可以利用逆向工程方法和渗透测试技术以及 EVCS 运营商提供的灵活性来研究合法 EVCS 与充电管理系统上的 OCPP 后端之间的通信。攻击者的目标有两个:
i)监视和收集 OCPP 后端与 EVCS 之间通信的消息,以获取敏感信息,例如设备身份信息和 OCPP 后端链接;
ii)使用获取的工件实现伪造 EVCS 和伪造 CMS 来替代合法 EVCS 和 CMS,同时劫持生态系统内 CMS 与实际 EVCS 之间的通信。
通过这样做,攻击者可以伪造/操纵交换的消息,以阻碍 CMS 对其基础设施的可见性。攻击者还可以劫持和替代合法 EVCS 来监视正在进行的通信。这些功能还可用于造成影响 EVCS 和 CMS 网络的 DoS。生态系统的不同组件被认为是值得信赖的,并且是非恶意的,因此攻击者不需要渗透其他组件。相反,攻击者只专注于干扰与 OCPP 后端的通信过程。攻击者的主要目标是利用 OCPP 后端的安全漏洞,用伪造 EVCS 替换合法 EVCS,同时劫持 CMS 和生态系统内实际 EVCS 之间的通信。
1)侦察和可行性
攻击者需要收集所需信息以准备进行预期攻击。这些信息包括 EVCS ID 和 OCPP 后端链接,众多 EVCS 使用该链接与 CMS 进行远程通信。此类信息可以从各种在线资源中获取。例如,攻击者可以利用运营商提供的众多在线电动汽车充电地图之一来获取已部署 EVCS 的 ID。此外,攻击者可以购买私人 EVCS 并将其链接到支持在其网络内部署私人充电站的运营商。请注意,这些运营商通常允许私人 EVCS 连接到其后端,以成为运营商公共充电网络的一部分。为了启用此功能,运营商将向私人电动汽车车主提供 OCPP 后端链接并为他们的 EVCS 分配一个 ID。EVCS ID 可以由运营商分配/生成(例如,随机生成的 ID),也可以从设备本身获取(例如,序列号)。此外,攻击者还可以利用在线设备搜索引擎和/或一系列渗透测试技术来收集此类信息,这些技术在之前的工作中已被证实是可行的:
• 使用在线设备搜索引擎(例如 Zoomeye、Shodan和Censys)发现 OCPP 后端。如上图所示,攻击者可以使用与 EVCS 相关的关键字(例如“OCPP backend”)对这些存储库进行简单查找,以获取有关已部署 CMS 及其 OCPP 后端的信息。
• 利用在线设备发现技术以及安全分析方法来识别严重漏洞(例如 XSS、SQL 注入和 CSRF),这些漏洞可导致黑客入侵已部署的 EVCS 及其管理系统。一旦 EVCS 被攻破,攻击者将能够提取 EVCS ID 和 OCPP 后端链接。
• 使用设备搜索引擎发现可通过互联网配置的 EVCS(例如,无需身份验证或使用弱/默认凭据)。攻击者可以在野外发现 EVCS,然后利用默认凭据来配置 EVCS。登录后,攻击者可以了解 ID 和 OCPP 后端链接(下图)。
值得注意的是,EVCS ID 可以有不同的类型/形式。例如,其中一些 ID 代表 EVCS 的序列号、MAC 地址或运营商分配给部署设备的随机生成的数字。因此,其中一些 ID 是可以猜测的,并且可以通过暴力破解获得。因此,利用上述任何一种方法,攻击者都可以访问 OCPP 后端链接并获取给定运营商的 EVCS ID。在上图中展示了一个使用在线设备搜索引擎(Zoomeye)可发现的 EVCS 的示例。检查发现的主机后可以获得其所有信息,包括其 EVCS ID,因为运营商有意在 EVCS 的 Web 界面上提供了此信息。
2)EVCS 调试细分
为了发现 OCPP 后端漏洞,本文使用测试平台来识别漏洞能力并创建PoC,这些PoC随后在 16 个实时系统上使用,以证明相同漏洞的存在。为了实现切合实际的实施,测试平台在 OCPP 客户端和服务器实现方面进行了验证,并使用生产级 EVCS 和 CMS 后端。测试平台实现是生产系统的复制品,实现模仿了全球 16 个实时运营商的部署,并考虑了 TLS 和身份验证机制。此外,利用实施的测试平台来分析在向运营商的 OCPP 后端添加新设备时的 EVCS 调试和注册过程。通过研究 EVCS 的调试过程,可以了解后端系统实施的身份验证机制和工作流程。如下图所示,任何 EVCS 的调试过程都包含以下主要步骤:
i)每当新的 EVCS 连接到网络时,负责调试 EVCS 的人员(例如技术人员)将使用分配的 EVCS ID 在运营商的 CMS 上注册设备并建立 OCPP 后端链接。
ii)运营商将建立 OCPP 后端链接,这是一个独立的 WebSocket 端点,始终监听来自所连接 EVCS 的连接。在 WebSockets 中,客户端通过发送 HTTP 请求来启动通信,该请求将升级为 WebSocket 通信。