安全研究员发现本田思域车机更新使用公开AOSP测试密钥签名,攻击者通过USB即可安装任意软件。

安全研究员Eric McDonald在对他2021款本田思域的车载信息娱乐系统进行了三年断断续续的逆向工程之后,发布了一个重量级更新。他在研究车机系统的固件更新流程时,发现了一个堪称教科书级别的供应链安全漏洞。

故事的起点极富戏剧性。本田的IVI(车载信息娱乐)系统更新以数字签名的AOSP(Android开源项目)更新包形式通过USB接口传入,经Android恢复模式刷入系统。按照设计,只有经过本田数字签名的更新包才能被车机接受。然而McDonald在逆向分析更新二进制文件时发现,本田在固件的res/keys目录中保留了"公开已知的AOSP测试密钥",而且验证签名的逻辑与原生AOSP完全一致,尽管恢复模式的二进制文件本身已经经过了本田的修改。

这句话意味着什么?意味着任何有能力正确格式化USB驱动器、并使用AOSP公开测试密钥对更新包进行签名的人,都可以向本田思域的车机安装任意软件,完全不需要传统意义上的root权限或其他提权操作。攻击场景只需要一个条件:攻击者能够物理接触到车辆前端的USB接口,且车机处于通电状态。这就是McDonald将漏洞命名为"EvilValet"的原因。它是信息安全领域经典"邪恶女佣攻击"的变体,只不过攻击场景从酒店房间换成了停车场。他设想了一个画面:一名为情报机构工作的代客泊车员,将一个被篡改的更新文件悄悄安装到调查记者的车上。

McDonald就此成果开源了ota-builder工具,专门用于制作能被本田思域车机接受并执行的更新文件。其中一个内置功能是打包一个已setuid为root的su二进制文件,以获取完整的系统root权限。他还找到了强有力的旁证:从公开汽车论坛获取的一份未修改的欧盟版软件更新文件(MRC_EU_SW_v12_4.zip),经验证确实使用了AOSP测试密钥签名,强烈提示所有地区所有版本都共享同一个密钥。

更重要的工具是apk-rebuilder,它能将本田思域的更新文件拆解为一棵干净的输出目录树,自动化完成逆向工作中的大量重复任务:解析资源文件、重建.smali代码、重新打包APK以及提取ramdisk。由于不能直接发布本田的源代码,这个工具生成的输出遵循固定结构,方便在文档中引用而无需托管敏感文件。McDonald表示已完成大部分既定调查计划,将逐步转向其他项目,但代码库仍在维护,欢迎贡献者提交PR。值得注意的是,他刻意选择不编写详尽的参考文档,而是将精力投入开发确定性工具来结构化呈现代码,让其他人能用LLM去查询特定问题,他认为这才是这个时代的正确做法。

原文:https://juniperspring.org/posts/honda-evil-valet/