文章摘要
文章核心内容:研究人员分析了特斯拉壁挂充电器固件更新流程,发现24.44.3版本在切换固件时新增了验证条件,需检查"settableviauds"标志位是否为14且存在被动固件,否则更新失败。这揭示了特斯拉通过增加验证来加强固件更新的安全性。
文章总结
特斯拉壁挂充电器固件降级漏洞分析
固件更新流程回顾
在首篇文章中,我们通过单线CAN总线描述了完整更新流程: 1. 开启UDS会话(类型2) 2. 安全认证(级别5,XOR-0x35算法) 3. 运行例程0xFF00准备被动槽 4. 向标识符0x102写入0x0E标记槽位 5. 通过UDS传输固件 6. 运行例程0x201验证新固件并切换槽位 7. 运行例程0x202重启
AW-CU300采用双固件槽设计:活动槽(当前运行)和被动槽(更新目标)。成功更新后槽位会翻转。
24.44.3版本的变更
新版本新增了check_image_and_antidowngrade()函数,用于:
- 解析固件段的"VRSN"版本号和"VRS2"安全棘轮值
- 与PSM(持久存储管理器)中的当前棘轮值比较
- 阻止固件降级(当新固件棘轮值低于当前值时)
引导加载程序的缺陷
boot2引导程序仅验证:
- 魔数头(SBFH)
- 段CRC32校验
- RSA签名
但完全缺失安全棘轮检查机制,导致任何有效签名的固件都能运行。
漏洞利用原理
通过以下步骤绕过防护: 1. 推送合法新固件并通过例程0x201更新分区表 2. 再次调用例程0xFF00擦除同一物理槽位(分区表保持不变) 3. 注入旧版漏洞固件 4. 直接重启使引导程序加载旧固件
技术细节
g_boot_flags在启动时确定后不再更新- 分区表通过
gen_level世代计数器决定启动槽位 - 例程0x201的防降级检查成为唯一防护点
修复建议
- 在引导程序中实施棘轮检查
- 例程0xFF00擦除时同步失效分区表条目
- 更新成功后强制重启
影响与现状
该漏洞已报告特斯拉并获修复。由于充电器通常接入家庭/企业网络,此漏洞可能成为内网渗透跳板。得益于特斯拉OTA自动推送机制,修复补丁能快速覆盖多数设备。
(注:原文中技术细节保留完整,删减了部分重复性描述和URL信息,优化了技术术语的中文表达)
评论总结
总结评论内容:
- 关于特斯拉壁挂充电器的必要性(评论5)
- 质疑使用专用充电器的价值,认为普通插座+充电线即可
- 关键引用:"Why use Tesla wall connector...overpaying for nothing"(为何要多花钱买专用充电器)
- 固件问题争议(评论2、3、4)
- 抱怨Gen3充电器强制开启无法关闭的WiFi热点(评论2)
- 反驳固件降级等于黑客行为的说法(评论3)
- 提醒WiFi断连会导致充电计划紊乱(评论4)
- 关键引用:"creates a wifi access point...cannot turn off"(无法关闭的WiFi热点)
- 关键引用:"downgrading firmware...NOT A HACK"(固件降级≠黑客行为)
- 安全隐患担忧(评论6)
- 担心用户/黑客修改充电软件导致电网过载
- 举例说明大规模同时充电可能造成的电网压力
- 关键引用:"10 million EVs...overwhelm the grid"(千万电动车会压垮电网)
- 关键引用:"7GW draw...cause a problem"(7GW负荷足以造成问题)
- 其他观点(评论1)
- 对破解充电器引导程序的动机表示困惑
- 关键引用:"Why would I want to hack..."(为何要破解充电器)