汽车攻防|越狱特斯拉车载信息娱乐系统(下)

汽车安全 10个月前 admin
131 0 0

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的安全启动和跳过。笔者是一枚安全小白,以漏洞复现的角度整理了学习笔记,如有错误之处,欢迎业界大佬联系指正。

1 电压故障注入破坏安全启动,获得root权限


[链接] 汽车攻防|越狱特斯拉车载信息娱乐系统(上)的1.1-1.3节主要分析了AMD安全处理器的安全启动链和固件patch的具体方法,1.4节简单介绍了电压故障攻击的部分内容。
本文将继续介绍破解TPM硬件安全组件信任链获得敏感数据的具体方法,同时会将1.4节的内容移植到2.4节,在2.4节会描述攻击的完整过程。

2 获取敏感信息

电压故障攻击无法持久控制汽车系统,但是在汽车重启前配置可保留。还有一个原因是座椅加热器配置不安全,在root权限下即可更改,但新版本中它需要签名验证了,所以需要安全研究人员进一步研究TPM(Trusted Platform Module)对象的解封。
汽车攻防|越狱特斯拉车载信息娱乐系统(下)

2.1 敏感信息有什么

Tesla的车辆证书用于汽车与Tesla服务器端之间的认证通信,用于固件升级、车辆配置、远程控制服务等。该证书与车辆VIN绑定,相当于该车与Tesla后台的唯一数字身份。需要它才能正常使用Tesla提供的在线服务。
Tesla汽车可以通过蓝牙等连接收集大量用户数据,包括手机联系人、日历、位置等个人信息,以及WiFi密码、邮件和音乐App的登录会话信息。这些数据如果被恶意利用,可能会造成用户隐私泄露。
Tesla以前车辆证书、用户数据存在SD卡和存储器的明文分区,现在引入了基于TPM的安全机制,车辆证书被TPM加密封存。用户数据分区被加密,密钥也被TPM封存。

2.2 如何从Tesla汽车中提取敏感数据

作者发表了一篇关于攻击AMD fTPM的论文(faulTPM:Exposing AMD fTPMs Deepest Secrets)完整介绍了敏感信息提取的过程。攻击目的是通过电压故障注入跳过ARK比较,从AMD的CPU(确切地说是CCP的本地存储缓冲区(LSB))中提取唯一根密钥。有了CPU中唯一根密钥后,就可以解密BIOS闪存中NV存储的内容,就可以破解TPM对象。
  • 先把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)

windows11已强制要求使用TPM2.0(ISO/IEC 11889)

2.3.1.1 专用TPM (discrete TPM, dTPM)

dTPM是一种专用的硬件TPM,通常用于商业笔记本电脑,具有防篡改能力。但是其与系统的通信通道(总线暴露在外)可通过物理攻击手段来攻击,从而绕过TPM安全机制。

2.3.1.2 固件TPM (firmware TPM, fTPM)

fTPM通过在可信执行环境中用软件实现,集成在CPU内,不需要外部总线,较难被物理探测攻击。但它依赖TEE的安全性,如果TEE被攻破,fTPM也将受到影响。

2.3.2 AMD安全处理器(AMD Secure Processor, AMD-SP)

以X86为例, AMD-SP 比AMD SOC 的内核更早启动。如下图所示,在 AMD-SP 上运行的第一个启动阶段是不可变的只读存储器 (ROM) 启动加载器。在完成最基本的系统初始化后,ROM 引导加载器从 BIOS 闪存芯片中加载 AMD 根密钥 (ARK)并通过将其 SHA256 摘要与 AMD-SP 不可变 ROM中的已知值进行比较来验证密钥。验证完成后AMD-SP 从 BIOS 闪存芯片加载下一个引导阶段,即所谓的片外引导加载器,并使用 ARK 对其进行验证最后,片外引导加载器会初始化 SoC 的各种组件并执行 DRAM 训练等其他系统初始化例程。
汽车攻防|越狱特斯拉车载信息娱乐系统(下)
系统初始化后,AMD-SP 将初始引导固件加载到 X86 内存中,并启动 X86 内核。一旦 X86 内核开始运行,片外引导加载器就会被微内核取代。除其他应用外,该微内核还充当 fTPM 实施的 TEE。
除了 ROM 启动加载器外,AMD-SP 上执行的所有固件都是从 BIOS 闪存中加载的。虽然一般格式由统一可扩展固件接口 (UEFI) 卷标准统一但 AMD-SP 的代码存储在一个专有文件系统中。开源工具 PSPTool解析和修改这些固件文件系统。
加密协处理器 (CCP)。AMD-SP 有一个专用的硬件组件,即所谓的加密协处理器(CCP),可以卸载各种加密操作,AMD-SP 和X86 CPU 均可使用。虽然AMD 没有正式的文档记录,但 CCP Linux 驱动程序可以让人了解其功能。CCP 有一个本地内存空间,通常称为本地存储缓冲区 (LSB) ,可用于存储密钥或其他数据,以便进行加密操作。

2.3.3 破解fTPM的非易失性状态存储

AMD的fTPM的非易失性(NV)状态存储在主板BIOS闪存芯片上。为了防止具有对BIOS闪存芯片的读取或写入能力的攻击者,NV状态的机密性和完整性是通过加密保护的。
fTPM的非易失状态数据可以在与BIOS闪存芯片上的AMD-SP固件一起存储的文件中找到。PSPTool将此文件标记为NV_DATA。

2.3.3.1 NV存储密钥推导

作者为了逆向密钥派生过程,利用了替换AMD-SP任意固件的能力。fTPM应用程序作为SecureOS微内核中的应用程序运行。PSP-Tool标记为DRIVER_ENTRIES的应用程序,实现了设备特定功能的驱动程序,如CCP或SPI总线。作者静态分析了DRIVER_ENTRIES二进制文件,并创建了一个修改版本,记录了每个加密操作及其输入和输出,并将其发送到AMD-SP的SPI总线。
  • 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

构造有效载荷,直接计算密钥派生过程的第(1)步的输出,并将结果写入SPI总线。然后,使用故障注入攻击,我们可以执行有效载荷来替换片外引导加载程序,并使用逻辑分析仪从SPI总线中提取种子值chip-unique-secret。
fTPM中用于密钥派生的芯片唯一密钥包含在CCP一个受读保护的区域中。这可能是为了防止从LSB中提取密钥而添加的一层保护。但是,由于CCP接口设计的疏忽,在Zen 1、Zen +和Zen 2 CPU上,我们能够提取LSB的全部内容,包括受读取保护的区域。
通常,LSB以16字节区域的倍数(所谓的“slots”)访问,chip-unique-secret的前15字节在未保护插槽slots,后一个字节在受保护的插槽,所以只需要暴力破解最后一个字节。可以给定固定的输入,能够通过将AES操作的输出与具有给定输入和可能密钥值的256个可能输出进行比较来暴力破解未知字节。

2.4 fTPM攻击

2.4.1 硬件准备

主要硬件   
功能
SPI FLASH编程器
读写闪存
Teensy 4.0开发板
产生故障注入    
逻辑分析仪/示波器
收集SPI总线的数据/帮助确认故障毛刺的时间窗口
| Teensy 4.0开发板固件参考(https://github.com/PSPReverse/amd-sp-glitch/tree/main/attack-code/teensy_firmware)

2.4.2 攻击

https://github.com/PSPReverse/ftpm_attack/tree/master书签:https://github.com/PSPReverse/ftpm_attack/tree/master
  • 使用 SPI 闪存编程器备份 BIOS 闪存映像–> data/ideapad.rom
  • 连接故障注入硬件并确定攻击参数
参考越狱特斯拉车载信息娱乐系统(上)1.4节,对于此攻击成功的判断依据是CPU启动带有payload的SPI FLASH镜像,不需要编写攻击验证脚本。
  • 编译并部署有效负载提取密钥派生秘密–> data/ideapad_payload.rom
cd extract_seed_payload
make
  • 启动逻辑分析仪通过 SPI 捕获提取的密钥推导种子–> data/ideapad.cap
  • 在目标机器上启动故障攻击周期,直到有效负载成功执行
  1. 1. 使用 SPI 闪存编程器部署有效负载 ( data/ideapad_payload.rom )
  2. 2. 发起电压故障攻击,直到系统接受我们自定义的 AMD 公钥
  3. 3. 从 SPI 跟踪中提取解密种子 –> data/ideapad_seed.hex
  • 使用 BIOS ROM 备份和 amd-nv-tool 的负载输出解析和解密 NVRAM –> data/ideapad.nvram
amd-nv-tool data/ideapad.rom -s $(cat data/ideapad_seed.hex)
  • 使用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服务,抵御针对车企和供应链的新型车联网攻击,为智能网联汽车提供威胁感知和防御能力,保护汽车核心资产和智能服务的安全性。目前,木卫四正在为全球智能汽车领域、自动驾驶和高级驾驶辅助系统的领先公司提供网络安全支持。

— END 


相关阅读

汽车攻防|越狱特斯拉车载信息娱乐系统(上)

原文始发于微信公众号(木卫四科技):汽车攻防|越狱特斯拉车载信息娱乐系统(下)

版权声明:admin 发表于 2024年1月9日 下午9:02。
转载请注明:汽车攻防|越狱特斯拉车载信息娱乐系统(下) | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...