黑帽联盟

 找回密码
 会员注册
查看: 1996|回复: 0
打印 上一主题 下一主题

[国外新闻] 研究人员打造可攻陷英特尔SGX硬件安全保护的恶意软件

[复制链接]

3

主题

0

听众

5

积分

黑帽菜鸟

Rank: 1

  • TA的每日心情

    2018-8-11 14:31
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    2015年,英特尔在发表Skylake处理器平台时推出了SGX,但是相信现在仍然有一些人对SGX的概念有些困惑。那么我们就先对SGX的概念进行简单介绍:

    什么是SGX?  

    SGX全称Intel SoftwareGuard Extensions,顾名思义,它是对英特尔体系(IA)的一个扩展,用来增强软件的安全性。这种方式并不是识别和隔离平台上的所有恶意软件,而是将合法软件的安全操作封装在一个enclave中,保护其不受恶意软件的攻击,特权或者非特权的软件都无法访问enclave。也就是说,一旦软件和数据位于enclave中,即便操作系统或VMM也无法影响enclave里面的代码和数据。

    但是SGX真的如它所说的这么安全吗?

    今年1月,安全研究人员Samuel Weiser曾发现英特尔软件保护扩展(SGX)输入—输出保护中可能存在的漏洞。而2月底,他又和奥地利格拉茨技术大学其他4位研究人员证实,恶意软件不仅可以在受保护的SGX enclave里运行,还能够攻击主机并用于提取RSA私钥。

    攻击目标为Intel SGX enclaves

    据悉,SGX是英特尔在其微处理器中引入的一个隔离机制,用来保护代码和数据免遭修改或泄漏。其建立的特殊隔离区域称为“飞地(enclaves)”,可以用于常规计算机和云服务器来储存与隔离每个程序的机密信息,如加密密钥或密码等。

    在常规计算机上,enclaves存储每个进程的敏感信息,并将这些数据从操作系统所及范围中隔离开来;在云服务器中,多个客户可以共享一台机器,enclaves是系统管理程序用到的关键因素,它可以为每个客户创建和运行不同的虚拟机。

    因为这种内存隔离以及将数据存储在enclaves中的特性,可以很大程度保障用户安全。所以英特尔在推出SGX enclaves后就建议软件开发上将加密密钥存储其中,因为没有更安全的地方存储这些信息。

    但是不幸的是,在今年2月底的一篇最新出版的论文中,奥地利格拉茨技术大学的5名安全研究人员宣称,其打造的enclave恶意软件能够攻陷英特尔的安全技术SGX,并从受到SGX保护的飞地(enclave)中窃取机密信息。

    研究人员创建enclaves恶意软件,可以通过enclaves隐藏自己

    论文写道,

    “我们建立了一个基于SGX的enclave,但其中包含的是恶意软件,该enclave与其他enclave并存,再利用旁路攻击(side-channel)取得储存于其他飞地的机密信息。操作系统完全察觉不到亦无法分析该恶意软件,因为它藏匿在受到SGX保护的独立区域内。”

    这是第一种运行在真实的SGX硬件中又运用SGX的保护特性来隐藏自己的恶意软件。研究人员通过在共存的SGX enclave中进行了一种叫做“Prime+Probe(质数+探查)”的侧信道攻击证实,这种攻击不仅在英特尔本地环境中有效,在Docker容器上也同样有效。

    正如论文所说:

    “我们开发出了目前已知对英特尔CPU而言最准确的时间测量技术,完全为硬件定制。我们将DRAM和缓存侧信道相结合构建了一种新颖的方法,在没有假设页面大小的情况下恢复物理地址位(physical address bits)。尽管使用常数时间乘法基元(constant-time multiplication primitive)防护侧信道攻击,攻击还是成功了。我们从单单一个Prime+Probe痕迹中提取了4096位RSA私钥中96%的内容,并且在5分钟内,从仅仅11个痕迹中提取了完整的密钥。”

    这种攻击甚至能够跨不同的Docker容器运行,因为Docker引擎会为两个容器调用同样的SGX驱动。

    定时(Timing):加密侧信道攻击需要有一个高分辨率的计时器,而这也是SGX所禁止的。Weiser及其合作者梳理了英特尔的参数,最后选定了inc和add指令,因为这些指令“用寄存器来执行时,具有1个周期的延迟和每个指令0.25个周期的吞吐量。”

    为了仿效被禁的计时器,研究人员使用了以下×86指令:

    “驱逐集”生成(“Evictionset”generation):这个步骤旨在发现“映射到相同缓存集的”虚拟地址:我们可以按顺序扫描内存,查找引发行冲突的物理接近的一个地址内存。因为SGX enclave内存以连续方式进行分配,所以我们可以在虚拟地址中执行这种扫描。

    完成两个步骤后,Wiser和其他成员理清了如何监控易受攻击的缓存集,寻找RSA密钥计算的特征签名。

    这部分攻击必须发生在离线状态,也就是说要与收集数据的缓存监控分开来进行,因为最后你得到的数据中会有很多干扰数据(来自计时错误、上下文切换、受害者enclave里的非RSA密钥活动,以及因电源管理引起的CPU计时变化等等)。

    密钥恢复分为三步:第一步,预先处理追踪;第二步,从每次追踪中提取部分密钥;第三部,合并部分密钥来恢复私钥。

    他们在一个具备SGX功能且运行Ubuntu 16.10的联想ThinkPad T460s上发现如下结果:

    经过340次尝试,恶意软件就能够从2048个可用的缓存集中找到一个易受攻击的缓存集;
    从易受攻击的缓存集中获取一次追踪平均只需要72秒;
    单个缓存追踪可访问4096位RSA密钥中96%的内容,而在11次追踪中就可获取全部的RSA密钥。

    研究人员表示,他们的攻击是可被拦截的,但是修复方案还得由英特尔提供,因为修改操作系统可能会弱化SGX模型的安全性。


    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部