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

汽车安全 9个月前 admin
403 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权限


? 第一阶段分三步,第一步,板级分析找到flash读取车载信息娱乐系统的固件(此固件中包含内核、文件系统等等),patch后烧写回flash。第二步,分析安全启动流程。第三步,电压故障注入跳过安全启动的验证。


1.1 patch固件,添加ssh


从设备flash上将原始固件提取出来,patch后烧写回flash。由于安全启动的存在,更改后的恶意固件无法通过启动校验。因此还需要在启动过程进行patch和物理攻击等手段,跳过固件校验的代码逻辑,才能获得设备的root shell。


?️ 这之中有三个问题,一是patch哪些部分、如何patch,二是故障注入该打哪,三是AMD zen1的安全启动流程还是未知的。

patch的思路和打手机root的方法一样,就是在安全启动全过程逐级patch。
故障注入应该是要跳过启动最开始的阶段,也就是烧写在efuse中的根密钥去校验下一步的过程。
AMD zen1的安全启动可以去官网去找找,印象中UEFI级别的启动代码有可能是开源的。


1.2 AMD zen1的安全启动流程以及逐级patch思路


作者在ppt的第23页已经给出了安全启动的流程以及固件存储的位置,想要获得root权限,方法包括在启动时生成串行Shell、将SSH密钥添加到authorized_keys文件中以实现SSH访问、添加已知的SSH密码等。这些方法都需要对根文件系统进行更改,以便在启动时获得根Shell访问权限。


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


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


于是需要patch Linux Kernel固件。dm-verity之前在root安卓的资料中有见到过,在此系统的学习下。

攻击者可以通过查找并替换特定字符串来欺骗系统,例如将“restart_on”替换为“ignore”,以及将“%1$llinear %35s#%11$s%U %lu”替换为“%lu0 %lu verity %u%s”。通过改变这些参数,攻击者能够迫使系统执行非法或未经授权的操作。

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


于是此时状态是RootFS可以通过Linux Kernel 的校验。


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


Linux Kernel 被patch后,OS Loader的校验会失败,所以需要patch Tesla OS Loader的固件。

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


通过反编译软件,字符串搜索“verify image”字符串,定位到关键函数,然后用反编译软件更改跳转汇编指令,并跳过一些if分支。


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


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


于是此时状态Linux Kernel 通过了Tesla OS Loader的校验。但是coreboot对Tesla OS Loader校验会失败。


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


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


?️ 接下来更改coreboot固件 ,Coreboot如何验证Tesla OS Loader?

Coreboot是一种用于替换传统固件(如BIOS或UEFI)的开源项目。可以参照源码去逆向。

官方网站:https://www.coreboot.org 

Github源代码仓库:  https://github.com/coreboot/coreboot 

文档网站: https://doc.coreboot.org

它的目的是初始化硬件并加载一个有效的操作系统引导程序。下面是Coreboot如何验证操作系统引导加载程序(loader)的一般过程:

初始化硬件:Coreboot首先初始化处理器、内存、外设等硬件组件。

验证阶段:在引导过程的某个阶段,Coreboot可能会使用某种机制来验证要加载的操作系统引导程序的完整性和身份。这可能涉及以下几个步骤:

  • 使用公钥加密:Coreboot可能会存储或访问一个受信任的公钥,该公钥用于验证引导加载程序的签名。

  • 计算哈希:对引导加载程序文件计算哈希,并将结果与预先存储的已知良好哈希进行比较。

  • 使用受信任的计算平台(TPM):如果系统装有TPM芯片,Coreboot可以使用它来确保引导过程的完整性和可信度。


由于Coreboot是开源实现,它为arm zen1安全启动提供底层固件支持,但真正的安全验证由AMD Secure Processor完成。所以patch Coreboot的思路就是安全验证恒通过。(待后续研究)


1.3 AMD安全处理器(AMD Secure Processor)

AMD Secure Processor使用ARMv7微控制器架构,是一个高权限级别的安全微控制器,内置在AMD CPU芯片中,负责诸如硬件根信任建立、固件TPM(遵照TPM2.0规范),密钥管理等安全关键任务,是AMD平台安全功能的基石。在EPYC服务器产品上,还可以提供基于硬件的安全加密虚拟化。

它的启动流程如下:

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

图片来源:Implementing an emulator for AMD’s Platform Security Processor ,December 9, 2020


在2013年时,AMD发布的安全处理器叫做PSP,是基于arm TrustZone的架构。

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


图片来源:AMD Security and Server innovation,2013


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


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


作者在接下来的分享中,也介绍了ASP的启动包括片上的root key去验证片下的Boot Loader。


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


由于片上的root key无法获得,所以可以采用故障攻击的手段,使ARK hash比较的过程中出现判断错误,从而使得片下的Boot Loader验证通过。


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


总结整个启动流程:1、arm zen1芯片在安全启动过程中,先由硬件自身的可信代码进行初始化,建立硬件根信任Root Key。2、由Root Key校验片下Boot Loader。3、然后将控制权交给Coreboot开源固件。Coreboot完成后续系统初始化,并加载操作系统启动LOADER,OS loader的安全校验交给AMD平台安全处理器ASP。4、完成验证后,再将控制权交还给已验证的操作系统LOADER,进行后续内核和文件系统的启动和逐级校验。5、通过这种链式验证模式,实现从硬件根信任到操作系统的完整安全启动过程。


1.4 电压故障攻击


完整过程[参考]

https://github.com/PSPReverse/amd-sp-glitch/blob/main/attack-code/README.md


1.4.1 电压故障攻击的环境搭建


使用Teensy进行电压故障注入攻击的搭建方法:


1. Teensy通过SVI2接口向目标注入数据包读写VR寄存器,来调整电压。

2. Teensy通过ATX复位线重置目标设备。

3. Teensy监控SPI总线的片选flash信号,用作电压故障的触发。

4. 外部PC控制故障的参数。


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



1.4.2 故障参数的调整


  • 毛刺的深度:指在电压毛刺上升/下降期间出现的尖峰电压,一般来说,深度越大,毛刺电压对设备的影响就越大。

  • 毛刺的持续时间:指毛刺电压出现的持续时间,持续时间越长,毛刺电压对设备的影响就越大。

  • 攻击时刻:目标设备ARK校验的时间


1.4.3 利用侧信道协助确定故障时间窗口


示波器采集观察连接线上的信号,确定ARK校验的时间窗口。

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


侧信道分析(SCA)是一种通过分析硬件设备运行时的物理信息(例如,电源消耗、电磁辐射等)来获取系统内部结构或操作的方法。这种分析在汽车安全中尤为重要,特别是在确保通信线路的完整性和可靠性方面。


?️ 确定故障时间窗口是一项复杂的任务,涉及以下几个步骤:

1. 数据收集:利用示波器收集所需信号和相关信息。

2. 初步分析:观察和分析信号,找到可能的异常点。

3. 故障时间窗口定位:结合SPI CS信号和供电电源观察,精确确定故障发生的时间窗口。

4. 进一步诊断:通过深入分析故障时间窗口中的信号特征,识别潜在的问题和根本原因。


1.4.4 攻击验证脚本的编写


见《越狱特斯拉车载信息娱乐系统(下)》(肝不动了)

完整过程[参考]

https://github.com/PSPReverse/amd-sp-glitch/blob/main/attack-code/README.md


? 预告《越狱特斯拉车载信息娱乐系统(下)》,主要记录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 发表于 2023年8月12日 下午1:10。
转载请注明:汽车攻防|越狱特斯拉车载信息娱乐系统(上) | CTF导航

相关文章

暂无评论

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