认识Glitch到攻击BootROM

简介: 认识Glitch到攻击BootROM

Perface

昨天的浅析安全启动(Secure Boot)看了吗?其中有个glitch 的概念很有意思,于是找资料简单学习一下glitch 。

文章的内容包含:

  • 数字电路中的串扰
  • glitch ~glitch ~glitch
  • Glitch对电路的安全性影响

对了!最近期待我出学习路线和荐书留言我都有看到,等我找个时间好好认真整理一下发出来与大家交流一下。

Have Nice Day!

数字电路中的串扰

撩一把SI. 数字电路中的串扰,是个庞大艰深的话题,Signal Integrity (SI) 分析是STA 中重要且复杂的部分。数字电路是01 的世界,用『攻受』来理解数字电路的串扰很合适。

在数字电路中,任何两条相邻的线之间都可能『私通』,私通的通道是『耦合电容』。如果用基佬世界的『攻受』来对应,那任何一条net 都是0.5 只要『时间窗口』对,都进可攻退可受,如东方不败一般,

通常,在STA 中将被分析的net 称为"victim" 此处对应为"受",把跟被分析net 私通的所有其他net 称为"Attacker/ Aggressor"此处对应为"攻"。

不是有了私通通道,攻就可以攻击到受,还需要看:

  • 攻的强弱:Strength of attacker.
  • 受的强弱:Strength of Victim.
  • 私通通道的多少: the amount of cross-coupled capacitance;
  • 时间窗口:relative time and the transition rate of the sinal transitions.
  • 翻转方向:the switching directions.
  • 攻的联合:the combination of effects from multiple attacker.

理想数字电路跟理想世界一样,只有纯粹的01 要消除一切0.5. 但串扰不同于基佬,基佬可以使世界变得更美好,串扰却总是具有破坏性。串扰的破坏性根据『受』所处的『动静』状态体现于两方面:

  • Delta delay.
  • Glitch.

Delta Delay

  • 体现『受』翻转时,『攻』对其进行的骚扰,
  • 『攻』与『受』同向翻转时,『攻』会加快『受』的翻转,使得『受』的延时变短。
  • 『攻』与『受』异向翻转时,『攻』会减缓『受』的翻转,使得『受』的延时变长。

攻受的翻转方向是随机的,在当前STA 分析中,保险起见,对于同一条net 如果是计算early delay 则认为攻受同向如果是计算late delay 则认为攻受异向。

Glitch

体现『受』静止时,『攻』对其进行的骚扰,这个骚扰**如果严重会引起逻辑功能失效。**根据『受』所处的电平不同,『攻』对其造成的影响可被分为如下四类:

  • VHO:『受』处于高电平,『攻』正向翻转;
  • VH: 『受』处于高电平,『攻』反向翻转;
  • VLU: 『受』处于低电平,『攻』反向翻转;
  • VL: 『受』处于低电平,『攻』正向翻转;

Delta Delay 跟Glitch 是对串扰的两种表征,都属于STA 范畴,分析时大部分计算过程一致,只是最后衡量的方式不同。

glitch ~glitch ~glitch

Glitch 在数字电路实现中,

  • 其一是指由于不同信号到达组合逻辑单元输入端的时间差引起的组合逻辑输出端的无效翻转;
  • 其二是指由于耦合电容导致的串扰引起的glitch, 关于这种glitch前面刚刚简单说了一下。

组合逻辑无效翻转Glitch

这种Glitch (下文称为逻辑glitch)是由于组合逻辑单元输入信号到达时间不同而产生的虚假翻转,这些翻转不是逻辑运算所需要的。

理想情况,在每个时钟周期内,组合逻辑的输出信号最多翻转一次,但实际中,组合逻辑的输出信号在每个时钟周期内都不止翻转一次,这些不必要的翻会导致额外的功耗,这类功耗就是所谓的『Glitch power』, 据统计在16nm 以下的工艺中,Glitch power 占总动态功耗的20%~30% 是非常可观的;

而且这些无效翻转,会导致意外峰值电流,这些峰值电流发生在很短的时间内会导致很大的IR-Drop, 从而影响电路的性能和可靠性。

逻辑 Glitch 因为有百害而无一利,所以一直是研究热点,到目前为止C 家综合工具跟P&R 工具在读入activity 文件做Dynamic power 优化时都会尽量去优化Glitch power, 但到目前为止也没有什么办法完全消除Glitch power. 一些文献里提出了若干方法,有兴趣的可以自行查阅:

  • Delay balancing: In this method the inputs are made to arrive at the same time by inserting extra delay buffers on selected paths[2].
  • Hazard filtering: In this method the gate delay is made greater than the differential delay at the inputs of the gate to filter the glitch[3].
  • Gate sizing: In this method every gate is assumed to be an equivalent inverter[4].
  • Transistor sizing: This method treats every transistor’s size as a variable and tries to find glitch-free design[5].
  • Linear programming: In this method the gate delays are treated as variables and optimum delays are found by solving a linear program (LP)[6,7] which is implemented using AMPL programming method[8].
  • Variable input delay method: Raja in[1] proposed variable input delay method which involves insertion of “permanently on” series transistor at the input of logic gate for glitch free digital circuits.

解决峰值瞬态IR-Drop 最常用的方法是在芯片中撒入去耦电容 ( Decap cell ), 这些Decap 充当局部电荷储存器,从而减少峰值IR-Drop 对临近电路的影响。

然而,从90nm 开始,Decap cell 会造成显著的栅极隧穿漏电流,对于90nm 之后的工艺由于栅氧进一步变薄,Decap cell 造成的栅极隧穿漏电流会更大,至于Decap 对FinFet 工艺的作用与影响,待老驴研读后再搬来,

Glitch对电路的安全性影响?

黑客利用Glitch来触发特定的响应或攻击:

  • 干扰信号传递:黑客可以利用Glitch干扰信号的传递,使得信号在传输过程中出现错误或丢失,从而触发特定的响应或攻击。例如,在通信系统中,黑客可以通过引入Glitch干扰信号的传输,使得接收器无法正确解调信号,从而获取敏感信息。
  • 破坏电路元件:黑客可以利用Glitch破坏电路元件,使得电路无法正常工作或出现故障,从而触发特定的响应或攻击。例如,黑客可以通过引入Glitch烧毁电路中的某些元件,使得系统无法正常启动或运行,从而获取敏感信息。
  • 利用系统漏洞:黑客可以利用Glitch触发系统漏洞,从而获取敏感信息或进行攻击。例如,黑客可以通过引入Glitch绕过系统的安全检查或授权验证,从而获取未经授权的访问权限。
  • 操控硬件设备:黑客可以利用Glitch操控硬件设备,例如篡改设备的配置参数或控制设备的动作,从而进行攻击或破坏。例如,黑客可以通过引入Glitch篡改路由器的配置参数,使得受害者无法正常访问特定网站或资源。

Glitch的产生原因

  • 硬件故障:硬件设备中的电路或元件不良、电源供电不稳定、内存损坏、硬盘故障等问题都可能导致Glitch的产生。
  • 软件错误:软件中的编码错误、逻辑错误或算法错误可能导致Glitch的产生。例如,程序员在编写代码时可能会出现语法错误、边界条件错误或错误的数据处理,从而导致系统出现故障。
  • 数据传输错误:数据在传输过程中出现错误或丢失也可能导致Glitch的产生。例如,网络传输过程中数据包丢失、数据传输错误或输入错误的数据都可能导致系统故障。
  • 电磁干扰:电磁干扰(EMI)可能导致Glitch的产生。这种干扰可能来自周围的电子设备或其他电磁源,如雷电、高压电线等。
  • 电源干扰:电源干扰也可能导致Glitch的产生。这种干扰可能来自电源波动、电源开关的切换或其他电源相关的问题。
  • 编码错误:在信号处理过程中,如果编码出现错误或不良,也可能导致Glitch的产生。例如,音频或视频信号的编码错误可能导致音频或视频的质量下降或出现异常。

Glitch攻击bootROM

案例:Glitching the Switch

NVIDIA Tegra X1芯片的bootROM攻击是一个非常经典的Glitch攻击例子,它利用了bootROM作为整个信任链的根基,拥有最高的执行权限的特点。

在NVIDIA Tegra X1芯片中,bootROM是固化在芯片内部的,它是设备的第一个加载程序,负责启动和验证其他程序。由于bootROM的特殊地位,它拥有最高的执行权限,任何在它之后加载的程序都必须信任它。

Nintendo Switch 使用的是 NVIDIA 的 Tegra X1 芯片,这款芯片的 bootROM 是不可读的,原理是在 bootROM 即将跳转到 FSBL 的时候,会通过一个专门的寄存器,改变 bootROM 的可读区间,使得大部分的 bootROM 代码变得不可读。这个不论是开发设备还是消费产品都是如此。

所以他们攻击 bootROM 的第一步就是要 dump 出来 bootROM 的代码。他们用了一种 Glitching 的手段来做到这一步。

Glitching 的硬件原理在前面有详细介绍,简单来说就是通过在非常精确的时间点,执行微秒级的电压骤变使得 bootROM 在写那个可视性寄存器的时候出现错误,导致 bootROM 没有被不可视化进而他们可以在一块开发板上用自己写的 FSBL 读取 bootROM 代码。

拿到 bootROM 之后他们根据芯片的数据手册和自己的实验,分析出各种寄存器的用途,然后对 bootROM 的 USB 层进行逆向分析。最后他们发现了在一个叫做 RCM 的 USB 模式下,可以通过栈溢出拿到 bootROM 的执行权限。

拿到 bootROM 权限之后,他们就可以禁用掉 FSBL 的签名验证,相似的,Secure Boot 接下来的所有环节的签名验证都可以被禁用掉,那基本上就是想干什么都可以了。

一旦攻击者成功地获取了bootROM的代码或绕过了它的保护措施,他们就可以进一步攻击整个系统。通过获取敏感信息、控制设备或进行其他恶意操作,攻击者可以造成严重的安全威胁和损失。

参考文献

  • http://article.sapub.org/10.5923.s.msse.201302.04.html
  • 【1】T.Raja, V.D.Agarwal “Variable input delay CMOS logic for low power design”, IEEE Trans. Circuits syst.,vol.-17,no.10,October 2009.
  • 【2】K. Roy and S. C. Prasad, Low-Power CMOS VLSI Circuit Design. New York: Wiley, 2000.
  • 【3】V. D. Agrawal, “Low power design by hazard filtering,” in Proc. 10th Int. Conf. VLSI Des., Jan. 1997, pp. 193–197.
  • 【4】M. Berkelaar and E. T. A. F. Jacobs, “Gate sizing using a statistical delay model,” in Proc. Des. Autom. Test Eur. Conf., Paris, France, Mar. 2000, pp. 283–290.
  • 【5】V. Sundararajan, S. Sapatnekar, and K. Parhi, “Fast and exact transistor sizing based on iterative relaxation,” IEEE Trans. Comput.-Aided Des. Circuits Syst., vol. 21, no. 5, pp. 568–581, May 2002.
  • 【6】T. Raja, “A reduced constraint set linear program for low-power design of digital circuits,”M.S. thesis, Dept. ECE, Rutgers Univ., Piscataway, NJ, 2002.
  • 【7】T. Raja, V. D. Agrawal, and M. L. Bushnell, “Minimum dynamic power CMOS circuit design by a reduced constraint set linear program,” in Proc. 16th Int. Conf. VLSI Des., Jan. 2003, pp. 527–532.
  • 【8】R. Fourer, D. M. Gay, and B. M. Kernighan, AMPL:A Modeling Language for Mathematical Programming. South San Francisco, California: The Scientific Press, 1993.

参考资料

目录
相关文章
|
4天前
|
安全 测试技术 网络安全
缓冲区溢出攻击的防范措施有哪些?
【10月更文挑战第20天】缓冲区溢出攻击的防范需要从编程实践、系统配置、漏洞检测与防护以及安全意识教育等多个方面入手,采取综合的防范措施,才能有效地降低缓冲区溢出攻击的风险,保障计算机系统和网络的安全运行。
|
3月前
|
安全 网络安全 数据安全/隐私保护
钓鱼攻击 (Phishing)
【8月更文挑战第17天】
47 3
|
6月前
|
SQL 安全 API
|
存储 安全 JavaScript
XSS之攻击与防御
在不少人看来,XSS漏洞造成的危害程度并不大,或者说,一个XSS漏洞的可利用价值并不高。但很多时候看起来一个不起眼的.....
104 0
|
SQL 存储 前端开发
💣深入Web安全(攻击篇)
💣深入Web安全(攻击篇)
676 1
💣深入Web安全(攻击篇)
|
缓存 安全 网络协议
网络安全-SSRF漏洞原理、攻击与防御
网络安全-SSRF漏洞原理、攻击与防御
435 0
网络安全-SSRF漏洞原理、攻击与防御
|
算法 安全 大数据
女巫攻击及其防范
女巫攻击及其防范
|
安全 数据安全/隐私保护 网络架构
解密常见的社会工程学攻击
社会工程学的手段日渐成熟,其技术含量也越来越高。社会工程学在实施之前必须掌握「心理学」、「人际关系」、「行为学」等知识与技能,以便收集和掌握实施进攻行为所需的资料和信息。不了解社会工程学的小伙伴可以点击链接: 什么是社会工程学 。
354 0
如何防御SQL注入攻击
【51CTO.com快译】随着技术的进步,Web应用技术在得以快速发展的同时,其自身的漏洞和伴随的风险也在不断迭代与增加着。自2003年以来,SQL注入攻击已持续位列OWASP应用安全风险Top 10之中,并值得各类公司持续予以严防死守。
1088 0
|
SQL JavaScript 前端开发