专栏首页黑白安全研究人员攻破 AMD 的虚拟机加密防线 !

研究人员攻破 AMD 的虚拟机加密防线 !

研究报告称,中招的虚拟机管理程序会从加密的内存中获取明文信息。

德国研究人员认为,他们已设计出一种方法,可攻破AMD的Epyc服务器芯片用来自动加密内存中虚拟机的安全机制。

他们表示,甚至可以通过被劫持的虚拟机管理程序和简单的HTTP请求,就能从加密的访客系统(guest)获取明文数据,这些HTTP请求发往在同一台机器上的第二个访客系统中运行的Web服务器。

AMD的Epyc数据中心处理器以及RyzenPro系列支持所谓的安全加密虚拟化(SEV)。该技术在数据存储于内存中时可实时解密和加密虚拟机,那样主机操作系统、虚拟机管理程序和主机上的任何恶意软件都无法窥视受保护的虚拟机。每个虚拟机都分配有一个地址空间ID,该ID与加密密钥关联起来,那样数据在内存和CPU核心之间传送时,加密密钥可以加密和解密数据。密钥永远不离开片上系统,每个虚拟机都有自己的密钥。

这意味着,从理论上来说,连恶意或被劫持的虚拟机管理程序、内核、驱动程序或其他特权代码都无法查看受保护虚拟机里面的内容,这对于多租户模式的云平台来说是一项很好的安全功能。现在你可以确信该死的操作人员(BOFH)没在窥视你的访客实例。

然而据称,为非作歹的主机级管理员、虚拟机管理程序里面的恶意软件或类似的威胁分子可以使用一种名为SEVered的技术,绕过SEV保护机制,将信息从客户或用户的虚拟机中拷贝出来。

弗劳恩霍夫应用集成信息安全研究所(Fraunhofer AISEC)的几位研究人员马修斯•莫比策(MathiasMorbitzer)、曼纽尔•休伯(Manuel Huber)、朱利安•霍施(JulianHorsch)和萨莎•韦塞尔(Sascha Wessel)表示,问题在于,进入主机层面的不法分子可以使用标准页表来篡改访客系统的物理内存映射,那样SEV机制就无法正确地隔离和加密内存中虚拟机的部分内容。下面是该研究团队概述攻击的内容:

借助SEVered,我们演示了恶意的HV[虚拟机管理程序]仍然可以从SEV加密的VM[虚拟机]获取明文格式的所有内存数据。我们从SEV得出了结论,主内存的页加密缺乏完整性保护。

虽然虚拟机的访客虚拟地址(GVA)到访客物理地址(GPA)的转换由虚拟机本身来控制,并对HV来说不透明,但HV仍然负责第二级地址转换(SLAT),这意味着它维护主内存中虚拟机的GPA到主机物理地址(HPA)映射。这使我们能够改变HV中虚拟机的内存布局。我们使用这种功能来诱骗虚拟机中的服务,比如Web服务器,那样一旦外部发出资源请求,该服务就会以明文格式返回虚拟机的任意页。

这不是研究人员头一回发现SEV严加保护虚拟机的功能存在缺陷了:以前的研究已经分析了黑客如何可以钻内存管理系统的空子,窥视加密的访客系统。弗劳恩霍夫应用集成信息安全研究所在本周四发表的研究报告在此基础上更进了一步,它表明:的确,就算SEV处于启用状态,虚拟机的全部内存内容也可能被虚拟机管理程序获取。

为了表明这个,研究人员搭建了一个测试系统,该系统搭载启用SEV的AMDEpyc 7251处理器,并安装了Debian GNU/ Linux,在单独的虚拟机中运行两项服务:Apache Web服务器和OpenSSH。然后,他们修改了系统的KVM虚拟机管理程序,观察访客中的软件何时访问物理内存。

通过向其中一项服务发出大量请求,比如从Apache获取HTML网页,虚拟机管理程序就能看到物理内存的哪些页用于保存该文件。然后它切换页面映射,以便Apache使用另一个虚拟机中的加密页来发送请求的网页,因而改而发送另一个虚拟机的自动解密的内存页。

这意味着Apache泄漏了来自另一个访客的数据。随着时间的推移,该团队能够从一个受攻击的虚拟机获取整整2GB内存的数据。

研究人员写道:“我们的评估显示,SEVered实际上切实可行,它可以用来在合理的时间内从SEV保护的虚拟机获取整个内存数据。结果明确表明,SEVered妥善处理好了关键方面,比如识别过程中的噪音和资源粘性(resource stickiness)。”

无法联系上AMD的发言人请其发表评论。研究团队特别指出,不过这家芯片制造商可采取几个措施,隔离主机和访客物理地址过程之间的转换,从而应对研究中描述的攻击。

他们解释道:“最好的解决办法似乎是除了加密外,另外针对访客内存页提供功能完备的完整性和新鲜度保护,英特尔SGX就是这么做的。然而,相比SGXenclave,保护整个虚拟机可能面临高昂的硅片成本。”

“一种低成本且高效的解决办法也许是将内存页内容的哈希与分配给访客的GPA安全地结合起来。”

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Kali Linux安装到U盘

    虽然使用其他工具也能将Kali Linux安装到U盘,但是经测试,成功率很低。而且一般是刻录后还需要其他操作以避免刻录为Kali Linux安装盘。借助虚拟机将...

    C4rpeDime
  • sql注入基本简单绕过方法大全

      http://www.*.com/index.php?page_id=-15 /*!UNION*/ /*!SELECT*/ 1,2,3,4….

    C4rpeDime
  • VirtualBox 搭建渗透测试环境

    搭建一个虚拟渗透测试环境,一个虚拟机作为攻击机,另一个虚拟机作为被攻击机(即靶机)

    C4rpeDime
  • 搭建hadoop集群虚拟机试验环境

    虚拟机点击启动之后,虚拟机默认是先启动虚拟光驱,刚刚已经添加了安装盘! 安装英文环境,时间选上海,设置root密码,一路next。没啥好说 安装模式选“ba...

    字母哥博客
  • 详解Linux安装教程

    VMware是虚拟机普遍使用的的一款软件,该软件方便实用,但想必有很多新接触的新手还是很陌生的,小编在这里就简要的来介绍一下安装过程以及遇到的问题,下面我们一起...

    砸漏
  • 虚拟机软件ORACLE VM VIRTUALBOX的安装并安装WINDOWS 7 文字版

    mwangblog
  • 虚拟机软件ORACLE VM VIRTUALBOX的安装并安装WINDOWS 7 图文版

    mwangblog
  • 虚拟机安装Linux+克隆虚拟机

    完整克隆是和原始虚拟机完全独立的一个拷贝,它不和原始虚拟机共享任何资源。可以脱离原始虚拟机独立使用。

    硅谷子
  • 驱动为通过EV签名需要通过verifier验证?

    windbg连虚拟机即可看到警告,可以输入b,断下来,然后就看到问题所在的源码了。

    战神伽罗
  • Centos 虚拟机安装

    VirtualBox是一个开源项目。 下载地址:https://www.virtualbox.org/wiki/Downloads

    Centy Zhao

扫码关注云+社区

领取腾讯云代金券