2018年1月,计算机安全研究人员披露了两个重大的处理器安全漏洞——熔断(Meltdown)和幽灵(Spectre),恶意软件可以利用这些漏洞窃取安全数据。
工程界和普通民众早已习惯了为修补软件漏洞而频繁更新App或安装操作系统补丁。而这里所说的不同,罪魁祸首是硬件,而硬件更新可不便宜。修补硬件漏洞唯一可行的方法是发布新的软件,以降低系统速度与能效为代价,遮蔽易受攻击的硬件功能或避免使用它们,Meltdown和Spectre的发现引发了一系列针对硬件安全的调查。
截至目前,安全研究人员已经公布了更多的硬件漏洞,包括Foreshadow、ZombieLoad、RIDL和Fallout。这些硬件缺陷危及个人计算机、智能型手机甚至云端的安全性。
图1 攻击者进程通过基于行填充缓冲区(LFB)的微架构旁路从受害者进程中窃取机密资料。受害者和攻击者进程处于不同的安全局中。(数据源:S. van Schaik等人,RIDL:Rogue In-Flight Data Load)
围绕着处理器的安全漏洞有一个共同主题是它们都针对具有先进性能优化的现代高阶实现功能,事实证明,这些先进功能可能被恶意目的利用。
而嵌入式系统通常采用相对简单的处理器实现。它是一个封闭的环境,供货商应该可以更严格地控制它。实际上,在DVCon US 2019会议上,在开放式指令集架构(ISA)的验证和合规性讨论时这个问题已经被提出来。开放式ISA,特别是RISC-V,以及MIPS等,提供优于专有架构的优势,越来越受到半导体产业和嵌入式设备小区的关注。
嵌入式处理器被应用于许多连网系统,例如工厂、智能家居、物联网(IoT)设备、医疗设备和消费电子产品,以及自动驾驶、飞机和其他生命安全攸关关键应用。
不同于普遍的看法,嵌入式平台上执行的软件来自多个通常不可信的来源,例如那些允许用户执行第三方应用程序或运作来自多个供货商和开放原始码库的大型软件堆栈平台。为了最大化硬件利用率并降低成本,关键和非关键应用程序在同一物理处理器上运作。例如,汽车电子控制单元(ECU)可以在同一处理器核心上执行信息娱乐程序代码,以及安全相关功能。
直到最近,安全防护还主要集中在软件堆栈上,其硬件提供诸如信任根的底层防护功能。 RISC-V基金会将精力主要放在安全平台和机制的实现上,以防止不受信任的程序代码影响关键系统功能的完整性。这些安全功能对于验证软件更新至关重要,从理论上讲,这些方法没有问题,不受信任的软件只能在定义好的保护壳内运作,无法突破或窃取安全区域的敏感信息。
不幸的是,还有一个复杂的问题。
最近,计算机科学家公布了一种新型攻击,称为Orc攻击,它威胁到嵌入式应用中常用的简单处理器。最重要的是,该篇报告作者已经证明,很小的实施决策可能会产生或者防止严重的硬件漏洞。“这里的关键点在于,即使是简单的设计步骤,例如添加或删除缓冲区,不经意间也可能在任何处理器中引入隐蔽通道漏洞。”发现Orc攻击的Kaiserslautern-Stanford团队成员Mo Fadiheh说。
最终的结果是,Orc和旁路攻击打破了特权级和用户级域之间的隔离。加密和安全验证可以被绕开,恶意代理程序可以推断出秘密数据,包括密码、社会安全号码和医疗记录;暴露用于验证韧体更新的密钥可能允许攻击者加载自己的程序代码并以更高的权限执行它或替换操作系统中的某些功能;用于DoS攻击的后门或终止开关可能被添加;还有无数的可能性。「从理论上讲,黑客可以使用Orc漏洞来控制自动驾驶车或者征用物联网上连网的计算机,」史丹佛大学(Stanford University)电子工程和计算机科学教授、Kaiserslautern-Stanford团队成员Subhasish Mitra说。
业界已经意识到了这些风险,并正在积极寻求解决方案。例如,英飞凌(Infineon)就参与了发现Orc漏洞的研究工作。
证明微架构旁路不存在很复杂。硬件安全验证不仅仅是确保正确实施ISA安全功能,开发和分析威胁模型也是不够的,因为攻击场景需要被提前辨识。
发现Orc漏洞的同一个团队发明了一种强大的方法可以在大规模生产和部署IC之前检测设计过程中的硬件漏洞,这就是唯一程序执行检查(UPEC),它可以系统地检测来自处理器微架构和较小实施决策中的漏洞。
“Orc漏洞的出现反映出,芯片设计师每天都会做出的看似无害的设计决策,但可能会导致严重的缺陷。”威斯康辛大学麦迪逊分校(University of Wisconsin-Madison)教授、计算机架构专家Mark D. Hill指出,“通过UPEC,设计人员可以更加自信地发现并消除设计中所有潜在的隐蔽通道缺陷。”
在嵌入式系统中,不太可能完全信任和控制软件堆栈的所有层。因此,即使使用简单的处理器核心,利用硬件实现中漏洞实施的微架构旁路攻击也会对安全造成真正的威胁。
基于RISC-V ISA的开放原始码硬件为更高级别的安全审查提供了机会。但同时,恶意代理软件也可以对设计执行详细分析并发现低级漏洞。
图2 除一些受保护的秘密数据外,UPEC创建包含相同数据的同一运算系统的两个实例。基于形式验证的分析揭示了是否有可能构建程序在未被授权访问秘密数据的情况下在两个系统中以不同的方式执行。(数据源:M. R. Fadiheh等人,Processor Hardware Security Vulnerabilities and their Detection by Unique Program Execution Checking。)
而且嵌入式设备一旦部署,更换处理器就很困难且成本高昂。所以,替代方案就是在部署之前即辨识硬件漏洞来防止旁路攻击。UPEC是一种强大的硬件安全验证技术,其基于形式验证的属性检查,可以系统地辨识硬件寄存器传输层(RTL)设计模型中的漏洞,而不用依靠专业知识来猜测可能存在的问题。
当前UPEC的实施是利用OneSpin Solutions提供的IC完整性来保证产品构建。数据安全性(Security)是IC完整性的基石,当然还有信任、功能正确性和生命安全性(Safety)。各种因素相辅相成,例如安全漏洞或硬件木马可能会危及自动驾驶车的安全性。可见,IC完整性对如今的数字世界至关重要。
(原文发表于ASPENCORE旗下EDN姐妹媒体EETimes,参考链接:Side-Channel Attacks on Embedded Processors,by Raik Brinkmann;本文同步刊登于EE Times Taiwan 8月刊杂志)