0 背景
2023年的blackhat会议如期而至,其中题目为《Jailbreaking an Electric Vehicle in 2023 or What It Means to Hotwire Tesla’s x86-Based Seat Heater》的汇报,作者讲解了AMD 安全处理器 (ASP)的安全启动过程,并采用电压故障注入的手段跳过了安全启动,获得了特斯拉车载信息娱乐系统的root权限,有了root权限后,作者进一步研究了TPM(Trusted Platform Module)对象密封和解封的过程,最终从NVMe 存储获得了私人用户数据。
🤔️ 整个过程分为两个阶段,第一阶段为电压故障注入破坏安全启动,获得root权限;第二阶段为破解TPM硬件安全组件信任链获得敏感数据。让我想起了之前学习过的blackhat2022的议题《Glitched on Earth by Humans: A Black-Box Security Evaluation of the SpaceX Starlink User Terminal (2022.08)》方法相同,不过该议题的目标是个ARM。正好借着今年的议题,学习下AMD的安全启动和跳过。笔者是一枚安全小白,以漏洞复现的角度整理了学习笔记,如有错误之处,欢迎业界大佬联系指正。 |
本文将继续介绍破解TPM硬件安全组件信任链获得敏感数据的具体方法,同时会将1.4节的内容移植到2.4节,在2.4节会描述攻击的完整过程。
2 获取敏感信息
2.1 敏感信息有什么
2.2 如何从Tesla汽车中提取敏感数据
-
先把flash读出来备份,用PSPTool解析,更改ARK,更改有效载荷,这个有效载荷是片外的boot loader。此外按照上篇文章的指导,去修改core boot、Tesla OS Loader、内核、根文件系统。 -
有效载荷的作用:AMD的fTPM的非易失性(NV)状态存储在BIOS闪存芯片上。相当于将SPI flash的内容加密了,非易失性状态存储被PSPTool解析标记为NV-data,修改DRIVER_ENTRIES 的应用程序,将加密操作的输入和输出记录到AMD-SP的SPI总线上。这个载荷实现了自动计算结果,并将结果写入SPI总线。并且利用逻辑分析仪从SPI总线上提取种子值。这个种子值就是每个CPU独有的128位的密钥,用来解密ftpm的内部状态。 -
连接故障注入的硬件,写更改有效载荷后的SPI FLASH,直到成功启动。 -
如何提取芯片唯一密钥(种子值),密钥在CCP的LSB中,故障注入成功后,得到唯一密钥值,是128位AES密钥,amd-nv-tool解析NV_DATA文件的未加密结构和元数据,派生存储和完整性密钥,并最终以JSON格式输出NV存储的内容。 -
amd_ftpm2_unseal工具实现了TPM对象解密。提取车辆证书能够访问Tesla为汽车准备的服务器接口,提取加密的用户分区磁盘加密密钥可以访问用户数据。
2.3 相关知识介绍
本节介绍一些基础知识,熟悉这些概念的童鞋可以跳过该节。
2.3.1 可信平台模块(TPM)
2.3.1.1 专用TPM (discrete TPM, dTPM)
2.3.1.2 固件TPM (firmware TPM, fTPM)
2.3.2 AMD安全处理器(AMD Secure Processor, AMD-SP)
加密协处理器 (CCP)。AMD-SP 有一个专用的硬件组件,即所谓的加密协处理器(CCP),可以卸载各种加密操作,AMD-SP 和X86 CPU 均可使用。虽然AMD 没有正式的文档记录,但 CCP Linux 驱动程序可以让人了解其功能。CCP 有一个本地内存空间,通常称为本地存储缓冲区 (LSB) ,可用于存储密钥或其他数据,以便进行加密操作。
2.3.3 破解fTPM的非易失性状态存储
fTPM的非易失状态数据可以在与BIOS闪存芯片上的AMD-SP固件一起存储的文件中找到。PSPTool将此文件标记为NV_DATA。
2.3.3.1 NV存储密钥推导
-
chip-unique-secret作为密钥,常量作为密文,使用AES128进行解密得到seed。 -
使用NIST指定的密钥派生函数(KDF)派生出两个256位的key,其中使用“用于包装数据的AES密钥”和“用于包装数据的HMAC密钥”作为标签输入。 -
接下来做HMAC-SHA256哈希计算,将fTPM应用程序的签名密钥混合到这些值中。 -
同样,将fTPM应用程序在SecureOS中运行的128位id用作消息,执行HMAC-SHA256计算。 -
最后,第一个值被截断为其前128位,并用作AES存储密钥,而第二个值的完整256位被用作HMAC完整性密钥。
2.3.4 构造有效载荷,提取chip-unique-secret
2.4 fTPM攻击
2.4.1 硬件准备
|
|
|
|
|
|
|
|
2.4.2 攻击
-
使用 SPI 闪存编程器备份 BIOS 闪存映像–> data/ideapad.rom -
连接故障注入硬件并确定攻击参数
-
编译并部署有效负载提取密钥派生秘密–> data/ideapad_payload.rom
make |
-
启动逻辑分析仪通过 SPI 捕获提取的密钥推导种子–> data/ideapad.cap -
在目标机器上启动故障攻击周期,直到有效负载成功执行
-
1. 使用 SPI 闪存编程器部署有效负载 ( data/ideapad_payload.rom ) -
2. 发起电压故障攻击,直到系统接受我们自定义的 AMD 公钥 -
3. 从 SPI 跟踪中提取解密种子 –> data/ideapad_seed.hex
-
使用 BIOS ROM 备份和 amd-nv-tool 的负载输出解析和解密 NVRAM –> data/ideapad.nvram
|
-
使用amd ftpm unseal提取和解密受此fTPM保护的TPM对象
本文作者
Krystal 木卫四工程师 车端安全工程师
具体细节,可咨询 [email protected]
参考资料:2023年BlackHat大会《Jailbreaking an Electric Vehicle in 2023 or What It Means to Hotwire Tesla’s x86-Based Seat Heater》
关于木卫四
木卫四由全球首批专注于汽车网络安全的技术专家创立,得益于多年的积累,我们可以从攻防相长的角度出发,融合先进的人工智能和知识图谱引擎,通过算法分析车联网海量的多源异构消息指令和API服务,抵御针对车企和供应链的新型车联网攻击,为智能网联汽车提供威胁感知和防御能力,保护汽车核心资产和智能服务的安全性。目前,木卫四正在为全球智能汽车领域、自动驾驶和高级驾驶辅助系统的领先公司提供网络安全支持。
原文始发于微信公众号(木卫四科技):汽车攻防|越狱特斯拉车载信息娱乐系统(下)