SmashEx,对英特尔 SGX 的攻击以提取数据或执行代码

研究人员 来自中国人民解放军国防科技大学、新加坡国立大学和苏黎世瑞士高等技术学校 开发了一种新方法来攻击孤立的 Intel SGX enclave (软件保护扩展)。

这次攻击被称为 SmashEx 它是由英特尔 SGX 的运行时组件工作期间处理异常时的重入问题引起的。 建议的攻击方法 允许(如果对操作系统有控制权)确定机密数据 位于飞地, 或者在 enclave 的内存中组织代码副本及其执行。

让我们记住这项技术 SGX 出现在第六代英特尔酷睿处理器上 (SKYLAKE微架构) 并提供一系列说明 允许 用户级应用程序被分配专用内存区域, enclaves,即使内核和在 ring0、SMM 和 VMM 模式下执行的代码也无法读取或更改其内容。

不可能使用函数将控制转移到飞地中的代码 使用寄存器和堆栈进行传统的转换和操作; 新的专门创建的 EENTER、EEXIT 和 ERESUME 语句用于将控制转移到执行授权检查的 enclave。 同时, 放置在飞地中的代码可以使用调用方法 在飞地内调用函数的经典之作 以及调用外部函数的特殊指令。 Enclave 内存加密用于防止硬件攻击,例如连接到 DRAM 模块。

问题与SGX技术允许操作系统中断执行有关 通过抛出硬件异常来处理飞地,并且在飞地中没有正确实现此类异常的原子处理原语。 与操作系统内核和常规应用程序不同, 飞地内的代码无法访问原语 在异步异常处理期间组织原子操作。 如果没有指定的原子原语,飞地可以随时中断并重新运行,即使在飞地中运行临界区并且它处于不安全状态时(例如,当 CPU 寄存器未被保存/恢复时)。

对于正常操作,该技术 SGX 允许您使用硬件异常中断飞地的执行 可配置。 此功能 允许 enclave 运行时实现异常处理 或飞地内的信号处理,但它也可能导致重入错误。 由于异常处理程序重复调用的情况没有得到妥善处理,SmashEx 攻击依赖于利用 SDK 中的缺陷。 重要的是,要利用该漏洞,攻击者必须能够中断飞地的执行,即他必须控制系统环境的工作。

抛出异常后,攻击者会收到一小段时间窗口 在此期间可以通过操纵输入参数来拦截执行流程。 特别是,如果你可以访问系统(飞地之外的环境),你可以在执行进入飞地(EENTER)的语句后立即创建一个新的异常,这将导致在该处将控制权返回给系统。在 enclave 的堆栈配置尚未完成的阶段,保存 CPU 寄存器的状态。

然后系统可以将控制权返回给飞地, 但是由于 enclave 堆栈在中断时未配置,因此 enclave 将与驻留在系统内存中的堆栈一起运行,这可用于应用面向返回编程 (ROP) 的利用技术。 面向编程)。

使用 ROP 技术时,攻击者不会尝试将其代码放入内存中,而是对已加载库中已经可用的机器指令部分进行操作,并以控制返回指令结束(通常,这些是函数库的结尾)。 漏洞利用的工作减少到构建对类似块(“小工具”)的调用链以获得所需的功能。

利用原型准备 基于运行时的飞地 英特尔 SGX SDK (CVE-2021-0186) 和 微软开放飞地 (CVE-2021-3376)。

在第一种情况下,展示了提取用于 HTTPS 的 Web 服务器中使用的 RSA 密钥的能力,在第二种情况下,可以确定在 enclave 内运行的 cURL 实用程序接收到的内容。

该漏洞已经被修补 在英特尔 SGX SDK 2.13 和 Open Enclave 0.17.1 版本上的软件中。

数据来源: https://jasonyu1996.github.io


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。