通过反编译软件,字符串搜索“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 故障参数的调整
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