第10代本田思域更新已用AOSP测试密钥签名
速览
本田第10代思域的最新软件更新已使用Android Open Source Project (AOSP) 的测试密钥进行签名。这一举动表明该车型的车载系统基于Android平台构建。使用测试密钥通常意味着软件尚处于测试阶段或存在特定的签名配置。
AI 深度解读
第十代本田思域车机更新机制漏洞:EvilValet 攻击与逆向工程进展
背景
三年前,安全研究人员 Eric McDonald 开始着手对其 2021 款本田思域(Honda Civic)的车载信息娱乐系统(Headunit)进行逆向工程研究,旨在理解其底层架构。该项目最初在 Hacker News 等技术社区引发了热烈反响。
随着研究的深入,McDonald 发现本田车机的系统更新机制存在严重的安全缺陷。通过深入分析 USB 更新流程,他不仅揭示了如何利用公开的 Android Open Source Project (AOSP) 测试密钥绕过签名验证,还开发了一系列工具来自动化解包、重建和修改车机固件。这项研究不仅揭示了汽车软件供应链中的安全隐患,也为社区提供了一套完整的逆向工程工具链。
核心内容
1. 更新机制与“EvilValet”攻击向量
本田支持通过 USB 驱动器更新车机系统。虽然本田实施了一系列特定的检查机制,但最终的更新文件本质上是一个经过签名的 AOSP 更新包,通过 Android Recovery 模式进行安装。
McDonald 发现了一个关键的安全疏忽:本田在车机系统的 res/keys 目录中保留了公开的 AOSP 测试密钥(AOSP test key)。尽管本田修改了 Recovery 的二进制文件,但其 verify_file 签名验证逻辑与标准的 AOSP 实现完全一致。
这意味着,攻击者只需:
- 正确格式化一个 USB 驱动器。
- 使用公开的 AOSP 测试密钥对自定义更新文件进行签名。
- 将文件放入 USB 驱动器。
即可在无需传统 Root 权限(即无需拥有 su 二进制文件及 setuid 权限)的情况下,向车机安装任意代码。只要车机有电且攻击者能接触到车辆前部的 USB 端口,就能通过更新路径实现任意代码执行(Arbitrary Code Execution)。
McDonald 将这种攻击命名为 “EvilValet”(邪恶代客泊车)。这是一种物理接触攻击,类似于“邪恶女仆”(Evil Maid)攻击,但场景从酒店房间转移到了汽车内部。想象一下,记者将车交给代客泊车服务,而代驾人员隶属于某个情报机构,通过 USB 植入恶意更新。当车辆归还时,记者毫不知情,但车机已被篡改。
2. 工具链开发:ota-builder 与 apk-rebuilder
为了降低研究门槛并促进社区协作,McDonald 发布了两个核心工具:
-
ota-builder:允许用户轻松准备被车机接受的更新文件。虽然处于早期阶段,但它已经能够构建包含
su二进制文件(已设置setuid)的更新包,从而实现对设备的 Root 访问。 -
apk-rebuilder:这是一个自动化逆向工程工具。它接收来自互联网的本田思域更新文件,并自动执行以下操作:
- 解析资源文件。
- 重建
.smali代码。 - 重新打包 APK 文件。
- 提取 ramdisk。
该工具解决了法律合规性问题:研究人员无法直接发布本田的源代码,但可以通过发布一个函数,将更新文件转换为清晰的目录结构输出(包括
.smali代码、图像资源等)。这样,文档可以引用这些输出结构,而无需上传敏感文件本身。
3. 待解决的工作与社区贡献呼吁
McDonald 列出了几个需要社区协助的领域:
- 已知版本映射:更新过程对版本号非常敏感。虽然可以通过“欺骗”版本号来运行未签名的代码,但构建更新文件前必须知道车机预期的版本。此外,任何与 McDonald 构建环境不符的软件更改都可能导致恢复循环或设备软砖(Softbrick)。他呼吁第十代本田思域车主贡献其车机的软件版本信息。
- 工具链(Toolchain):McDonald 本地拥有一个实验性的工具链,使用与原始供应商二进制文件相同的编译器版本和构建标志,将
.c代码编译为 ARMv7 架构。该工具重度依赖 Docker,目前较为杂乱,但他计划发布一个清理后的版本。 - 自定义主题(Custom Themes):由于车机应用经过混淆,期望硬编码的资源 ID,且自定义主题位于三菱(Mitsubishi)对 AOSP 框架的分支中,因此实现自定义主题非常困难。这需要外科手术式地编辑供应商框架,目前看来性价比不高,但仍欢迎贡献者。
- 改进 aidl-rebuilder:这是一个用于解析
.smali文件并映射所有 AIDL 接口的工具。目前尚未经过全面准确性审查,但为开发自定义应用(如虚拟速度表)打开了大门。
4. 文档策略与大语言模型(LLM)的应用
McDonald 在项目中减少了参考文档的比重,转而强调工具的重要性。他的理念是:如果提供了可靠、确定性的工具,将车机代码映射为更易消化的形式,用户就可以利用 LLM 查询这些中间表示形式来回答具体问题。
这种方法避免了维护可能偏离实际代码的参考文档的负担,因为车机代码本身才是“唯一真理来源”(Source of Truth)。例如,解释如何通过 ADB 连接车机的用户指南仍有价值,但解释特定 Java 代码逻辑的文档,既然代码本身可供 LLM 访问,则被视为维护负担。
关键要点
- 安全漏洞本质:本田第十代思域车机在 USB 更新过程中使用了公开的 AOSP 测试密钥进行签名,且 Recovery 的验证逻辑未做实质性修改,导致攻击者可绕过签名验证安装任意代码。
- 攻击场景:这是一种物理接触攻击(EvilValet),攻击者需接触车辆前部 USB 端口,无需传统 Root 权限即可获取车机的任意代码执行权。
- 工具赋能:发布的
ota-builder和apk-rebuilder工具自动化了固件提取、反编译和重新打包过程,极大降低了逆向工程门槛,同时通过输出结构化数据规避了直接分发专有代码的法律风险。 - 社区协作模式:项目采用“工具优先”策略,通过提供确定性工具链,利用 LLM 作为查询接口,解决了传统文档维护成本高且易过时的痛点。
- 潜在风险:虽然目前主要用于研究,但该漏洞允许恶意软件植入,可能影响车辆功能或隐私安全。
意义与影响
1. 汽车软件供应链安全的警示
这一发现再次凸显了汽车制造商在软件供应链安全方面的疏忽。尽管 AOSP 测试密钥在开发阶段用于快速迭代,但在量产固件中保留这些密钥且验证逻辑未加固,是严重的安全配置错误。这提醒其他汽车制造商,OTA 更新机制必须经过严格的安全审计,确保签名验证的独立性和密钥管理的严密性。
2. 逆向工程与白帽黑客的协作范式
McDonald 的工作展示了一种高效的开源协作模式。通过发布自动化工具而非直接分发专有代码,既尊重了知识产权,又促进了安全研究。这种模式使得非核心开发者也能参与到复杂的逆向工程任务中,加速了漏洞的发现和理解。
3. LLM 在安全研究中的应用新路径
该项目提出的“工具生成中间表示 + LLM 查询”的文档策略,为处理复杂、专有且频繁变化的代码库提供了新思路。它表明,在安全研究中,维护代码的“可查询性”比维护静态文档更具长期价值,尤其是在大语言模型能力日益增强的背景下。
4. 对车主与行业的实际影响
对于车主而言,这一漏洞意味着物理接触车辆 USB 端口的风险。虽然“EvilValet”攻击需要物理接触,但在停车场、洗车店或代客泊车场景下,这种风险并非遥不可及。行业可能需要重新评估车载 USB 端口的物理访问控制策略,或引入更严格的硬件级安全启动机制。
Eric McDonald 表示,尽管他计划转向其他项目,但该仓库并未被遗弃,欢迎社区继续贡献。这一项目不仅揭示了本田思域的具体漏洞,更为整个汽车信息安全领域提供了一个可复用的研究框架和工具集。
