研究人员用新的“SmashEx”CPU攻击技术破解英特尔SGX

一个新披露的影响英特尔处理器的漏洞可能被对手滥用,以获取存储在飞地内的敏感信息,甚至在易受攻击的系统上运行任意代码。
脆弱性(CVE-2021-0186,CVSS评分:8.2)是2021年5月初由苏黎世联邦理工大学、新加坡国立大学和中国国防科技大学的一组学者发现的。世卫组织利用它发起了一项名为“SmashEx”的机密数据泄露攻击,该攻击可以破坏飞地内的私人数据,并破坏其完整性。
随着英特尔Skylake处理器的推出,SGX(软件防护扩展的缩写)允许开发者在一个完全隔离的安全内存区(称为enclave或Trusted Execution Environment,TEE)中运行选定的应用程序模块,它的设计目的是防止进程以更高的权限级别运行,比如操作系统。SGX确保数据安全,即使计算机的操作系统被篡改或受到攻击。
“为了正常运行,SGX设计允许操作系统在任何时候通过可配置的硬件异常来中断enclave的执行,”研究人员概述道。“此功能使enclave运行时(例如Intel SGX SDK和Microsoft Open enclave)能够支持enclave内异常或信号处理,但它也会使enclave出现重入漏洞。SmashEx是一种攻击,它利用enclave SDK进行攻击,而这些SDK在其异常处理过程中不小心地处理重入漏洞。”


值得注意的是,enclave也可能有外部调用,即OCALL,它允许enclave函数调用不受信任的应用程序,然后返回enclave。但是,当enclave也在处理enclave内异常(例如计时器中断或零除法)时,该漏洞为本地攻击者提供了一个短暂的窗口,在进入enclave后立即注入异步异常,从而劫持执行控制流。
有了这种能力,对手就可以破坏飞地内存,泄漏敏感数据,如RSA私钥或执行恶意代码。
由于SmashEx影响支持enclave异常处理的运行时,研究人员指出,“编写这样的OCALL返回流和异常处理流时应该小心,以确保它们安全地交织,”并且“当OCALL返回流中断时,enclave应处于一致状态,以使异常处理流正确进行,当异常处理流完成时,enclave状态也应准备就绪,以便enclave恢复。”
此后,英特尔发布了软件更新,分别使用适用于Windows和Linux的SGX SDK版本2.13和2.14来缓解此漏洞。微软,其部分,解决了问题(CVE-2021-31767)在其2021年7月补丁星期二与开放飞地版本0.171的SDK更新。该研究小组的研究结果预计将于下月在ACM计算机和通信安全会议上公布。
“异步异常处理是当今现实世界应用程序的一种商品功能,它们越来越多地利用enclave,”研究人员说,并补充说,这项研究强调了“在OS enclave接口上为此类异常提供原子性保证的重要性。”