CPU底层漏洞详解:Meltdown与Spectre

2018年1月4日,Jann Horn等安全研究者披露了”Meltdown”(CVE-2017-5754)和”Spectre”(CVE-2017-5753 & CVE-2017-5715)两组CPU特性漏洞。

据悉,漏洞会造成CPU运作机制上的信息泄露,低权级的攻击者可以通过漏洞来远程泄露(浏览器形式)用户信息或本地泄露更高权级的内存信息。1995年之后的每一个系统几乎都会受到漏洞的影响,包括计算机和手机。

实际攻击场景中,攻击者在一定条件下可以做到,

  • 泄露出本地操作系统底层运作信息,秘钥信息等;
  • 通过获取泄露的信息,可以绕过内核(Kernel), 虚拟机超级管理器(HyperVisor)的隔离防护;
  • 云服务中,可以泄露到其它租户隐私信息;
  • 通过浏览器泄露受害者的帐号,密码,内容,邮箱, cookie等用户隐私信息;

目前相关的平台,厂商,软件提供商都在积极应对该系列漏洞,部分厂商提供了解决方案。

经过360安全团队评估,”Meltdown”和”Spectre”漏洞影响严重,修复流程较复杂,建议相关企业/用户务必作好相关的修复评估工作。

影响面· 漏洞风险等级严重,影响广泛:

  • 近20年的Intel, AMD, Qualcomm厂家和其它ARM的处理器受到影响;
  • 因为此次CPU漏洞的特殊性,包括Linux, Windows, OSX等在内的操作系统平台参与了修复;
  • Firefox, Chrome, Edge等浏览器也发布了相关的安全公告和缓解方案;

漏洞信息:

现代处理器(CPU)的运作机制中存在两个用于加速执行的特性,推测执行(Speculative Execution)和间接分支预测(Indirect Branch Prediction)。

表面上看,处理器是依次顺序执行既定的处理器指令。但是,现代处理器为了更好利用处理器资源,已经开始启用并行执行,这个技术已经应用了20年左右(1995年开始)。假设,基于猜测或概率的角度,在当前的指令或分支还未执行完成前就开始执行可能会被执行的指令或分支,会发生什么?如果猜对了,直接使用,CPU执行加速了。如果猜测不正确,则取消操作并恢复到原来的现场(寄存器,内存等),结果会被忽略。整个过程过程并不会比没有猜测的时候慢,即CPU的推测执行(Speculative Execution)技术。

不幸的是,尽管架构状态被回滚了,仍然有些副作用,比如TLB或缓存状态并没有被回滚。这些副作用随后可以被黑客通过旁道攻击(Side Channel Attack)的方式获取到缓存的内容。如果攻击者能触发推测执行去访问指定的敏感数据区域的话,就可能可以读取到原本是其它用户或更高特权级的敏感数据。

此外,猜测过程是可以被“污染”的,攻击者可以构造出类似ROP攻击的逻辑去影响推测过程。根据作者提供的思路,主要有三种场景:

  1. “边界检查绕过”:通过污染分支预测,来绕过kernel或hypervisor的内存对象边界检测。比如,攻击者可以对高权级的代码段,或虚拟环境中hypercall,通过构造的恶意代码来触发有越界的数据下标,造成越界访问。
  2. “分支目标注入”: 污染分支预测。抽象模型比较好的代码往往带有间接函数指针调用的情况,CPU在处理时需要会进行必要的内存访问,这个过程有点慢,所以CPU会预测分支。攻击者可以通过类似的ROP的方式来进行信息泄露。
  3. “流氓数据加载”:部分CPU上,为了速度并不是每次都对指令作权限检查的,检查的条件存在一定的缺陷;

实际攻击场景中,攻击者在一定条件下可以做到,

  • 泄露出本地操作系统底层运作信息,秘钥信息等;
  • 通过获取泄露的信息,可以绕过内核(Kernel), 虚拟机超级管理器(HyperVisor)的隔离防护;
  • 云服务中,可以泄露到其它租户隐私信息;
  • 通过浏览器泄露受害者的帐号,密码,内容,邮箱, cookie等用户隐私信息;

目前几大系统厂商各自在操作系统内核中引入了KPTI的技术,旨在和用户态的页表隔离,这样一来就可以解决”Meltdown”和”Spectre”漏洞问题。但根据相关的外部信息,这样一来可能带来5%到30%性能上的损失。

发表评论

9 条评论

  1. 匿名 Windows 7 Chrome 64.0.3282.186 2018-02-23 19:49
    #9楼

    还好,看样子这个漏洞想利用还是比较麻烦的

    支持[0]反对[0]
  2. 匿名 GNU/Linux x64 Chrome 53.0.2785.146 2018-02-21 20:29
    #8楼

    meltdown 是摧毁隔离机制,然后绕过系统和用户的隔离; spectre 是伪装或者入侵另外的程序,比如说病毒木马原来的进程名字是 mothbox ,然后伪装成 QQ 聊天,或者入侵 QQ聊天 。 所以说两种漏洞的实现方式,还是有区别的

    支持[0]反对[0]
  3. 匿名 Windows 7 x64 Chrome 62.0.3202.94 2018-01-10 16:10
    #7楼

    还好的我电脑是95年之前的 :evil:

    支持[0]反对[0]
  4. 匿名 Windows 7 x64 Firefox 55.2.0 2018-01-06 12:21
    #6楼

    很好,大家又可以继续挤牙膏了。。。

    支持[1]反对[1]
  5. 匿名 Windows 10 x64 Chrome 62.0.3202.94 2018-01-05 20:36
    #5楼

    Meltdown的具体影响范围:

    Intel CPU用户:几乎所有(1995年之后的所有的CPU型号,除了2013年之前的Intel 安腾和Atom外)

    AMD CPU用户:根据AMD公司的声明,目前AMD CPU不受Meltdown漏洞影响

    ARM CPU用户:根据ARM公司的声明,包括Cortex-A75在内的少数ARM核心CPU受影响

    Spectre的具体影响范围:

    Intel CPU用户:几乎所有

    AMD CPU用户:几乎所有

    ARM CPU用户:根据ARM公司的声明,包括Cortex-A8, Cortex-A9等在内的约十种ARM核心CPU受影响,其他类型的ARM CPU不受影响

    支持[2]反对[0]
  6. 匿名 Windows 10 x64 Chrome 62.0.3202.94 2018-01-05 20:33
    #4楼

    AMD CPU路过,,,,

    支持[0]反对[0]
  7. 匿名 iPhone Safari 602.1 2018-01-05 18:51
    #地板

    :smile: 哈哈

    支持[0]反对[0]
  8. 匿名 Windows 10 x64 Chrome 55.0.2883.87 2018-01-05 17:36
    #板凳

    每个字我都认识,组合到一起我就不懂什么意思了 :idea:

    支持[8]反对[0]
    1. 匿名 Windows 7 Internet Explorer 8.0 2018-01-05 18:01

      没毛病老铁

      支持[0]反对[0]