Hacker News 中文摘要

RSS订阅

特斯拉壁挂式充电器引导程序绕过固件降级限制 -- Tesla Wall Connector bootloader bypasses the firmware downgrade ratchet

文章摘要

文章核心内容:研究人员分析了特斯拉壁挂充电器固件更新流程,发现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信息,优化了技术术语的中文表达)

评论总结

总结评论内容:

  1. 关于特斯拉壁挂充电器的必要性(评论5)
  • 质疑使用专用充电器的价值,认为普通插座+充电线即可
  • 关键引用:"Why use Tesla wall connector...overpaying for nothing"(为何要多花钱买专用充电器)
  1. 固件问题争议(评论2、3、4)
  • 抱怨Gen3充电器强制开启无法关闭的WiFi热点(评论2)
  • 反驳固件降级等于黑客行为的说法(评论3)
  • 提醒WiFi断连会导致充电计划紊乱(评论4)
  • 关键引用:"creates a wifi access point...cannot turn off"(无法关闭的WiFi热点)
  • 关键引用:"downgrading firmware...NOT A HACK"(固件降级≠黑客行为)
  1. 安全隐患担忧(评论6)
  • 担心用户/黑客修改充电软件导致电网过载
  • 举例说明大规模同时充电可能造成的电网压力
  • 关键引用:"10 million EVs...overwhelm the grid"(千万电动车会压垮电网)
  • 关键引用:"7GW draw...cause a problem"(7GW负荷足以造成问题)
  1. 其他观点(评论1)
  • 对破解充电器引导程序的动机表示困惑
  • 关键引用:"Why would I want to hack..."(为何要破解充电器)