当前位置 : 英语|教育 → 文章正文

    最强meltdown论文中英文对照版(二

    来源:本站整理| 作者:佚名 | 时间:2018-02-16 11:56:35

      本文由郭健郭大侠翻译,将分为三次连载完成,这是第二部分。郭大侠是蜗窝科技()的创始人,慢下来,享受技术的健康,侠之大者,为国为民。

      在这一章我们将向您展示meltdown的威力:通过一个普通的用户程序读取系统中任意的物理内存。整个过程的框架图已经在第4章描述。首先,我们讨论设置,通过设置我们可以看出meltdown这种具有非常广泛的适用性。其次,我们对meltdown进行概述,并展示了它如何对安装Windows和Linux的个人计算机上以及云服务器展开。最后,我们讨论了一个具体的实现,该Meltdown的实现允许以503kB/s的速度dump内核空间的内存。

      我们考虑个人计算机和云服务器上的虚拟机两种应用场景。在过程中,者只使用未授权的代码来系统,也就是说者只能以一个普通用户的权限来运行代码。另外,者没有对机器进行物理访问。进一步,我们假设我们准备的系统是已经有了非常好的基于软件的防御措施,例如ASLR和KASLR,同时CPU也包含了像SMAP,SMEP,NX,和PXN的功能。最重要的是,我们假设被系统是一个完全无bug的操作系统,没有软件漏洞可以被利用来获得root权限或泄露信息。者的目标是用户的秘密数据,例如密码和私钥,或任何其他有价值的信息。

      Meltdown使用了第4章中讨论架构图。首先,者让CPU执行一个瞬态指令序列,该指令序列会操作保存在物理内存中不可访问的秘密数据(参见第4.1节)。瞬态指令序列充当隐蔽通道的发送端(参见第4.2节),最终将秘密数据泄漏给者。

      步骤1:者访问秘密数据所在的内存(该内存是者没有权限访问的),并加载到一个寄存器中。

      步骤3:者使用Flush+Reload来确定在步骤2中访问的cache line,从而恢复在步骤1中读取的秘密数据。

      在不同的内存地址上不断重复的步骤,者可以dump整个内核地址空间的数据,这也就包括了整个物理内存。

      的列表显示了瞬态指令序列和隐蔽通道发送部分的基本实现(使用x86汇编指令)。需要注意的是:这部分的代码也可以完全用C这样的高级语言来实现。在随后的文章中,我们会讨论列表中的每一行代码是如何完成meltdown的。

      读内存中的秘密数据。为了将数据从主存储器加载到寄存器中,我们使用虚拟地址来访问主存中的数据。在将虚拟地址转换为物理地址的同时,CPU还会检查虚拟地址的权限位:这个虚拟地址可否被用户态访问,还是只能在内核态中访问。正如在第2.2节中已经讨论过的那样,我们都认为这个基于硬件的地址空间隔离是安全的,并且硬件厂商也推荐使用这种隔离方法。因此,现代操作系统总是将整个内核地址空间映射到每个用户进程的虚拟地址空间。

    [1] [2] [3] [4] [5]  下一页


合作伙伴: 开心笑话
Copyright 2010-2012 大戏院论文网 All Rights Reserved. 如需合作请联系站长
技术支持:FXT