天极传媒:
天极网
比特网
IT专家网
52PK游戏网
极客修
全国分站

北京上海广州深港南京福建沈阳成都杭州西安长春重庆大庆合肥惠州青岛郑州泰州厦门淄博天津无锡哈尔滨

产品
  • 网页
  • 产品
  • 图片
  • 报价
  • 下载
全高清投影机 净化器 4K电视曲面电视小家电滚筒洗衣机
您现在的位置: 天极网 > 云计算>新闻>席卷全球的CPU内核漏洞是什么?华为云

席卷全球的CPU内核漏洞是什么?华为云给你科普

天极网云计算频道 2018-01-08 14:28 我要吐槽

  翻开最近的新闻,总少不了CPU内核高危漏洞的报道,其影响之大,修复之难,从电脑被发明以来还是首次。这个漏洞为什么这么厉害?

  一、漏洞有多可怕?

  近日,国外相关安全研究机构公布了CPU内核高危漏洞Meltdown(熔断)和Spectre(幽灵)。利用这两组漏洞,攻击者可绕过内存访问的安全隔离机制,获取操作系统其他程序保护的核心数据,造成敏感信息泄露

  这两组漏洞,相当于在一座大厦的地基上出现了严重的安全隐患,允许任何人随意进出大夏的每个房间、每个角落,而且还可以拿到房间里值钱的东西。要修复起来,不仅地基要重新设计,上面的每个楼层,都要加上防护措施。这座大厦有多大?大到包括全球几乎所有的手机、电脑甚至物联网设备。特别在云场景下,不同的用户可能共享同一个物理主机,云厂商对用户做了资源隔离,防止用户访问不属于自己的资源和信息,而这两组漏洞正好允许攻击者突破这种隔离。

  漏洞引起的危害如此严重,影响范围如此广大,一经公布,立即引起了全世界的瞩目,被媒体称为史上最大的安全漏洞。

  二、漏洞怎么产生的?

  这两组漏洞,都利用了CPU乱序执行和预测执行的机制。采用预测执行和乱序执行,目的是提升CPU的运算速度。而漏洞的产生则都拜预测执行所赐。

  乱序执行,顾名思义,就是指令的执行是没有顺序的。每条指令执行时间差异是很大的,就跟吃饭一样,有人5分钟搞定,有人1小时还没吃完。假设吃饭要按顺序来,那如果吃饭时间长的人一直没结束,后面的人就得饿着肚子等待。这显然不可能,所以CPU都采用乱序执行,就是大家自己找个位置,自己吃,互不干扰。

  预测执行,也如其名,就是根据你平常的操作,预测你后面要干什么,CPU就帮你干了。预测错了呢?正常的设想,肯定是指令取消掉就行。但问题就出在这里。错误指令虽然取消了,但会留下缓存。而缓存的最大特点,就是曾经存过什么数据,这些数据后续访问就会变快。利用这个特点,攻击者可以“骗”处理器把目标数据,比如账号密码读入缓存中,然后遍历一个外部数组,根据读取速度的快慢来推导出读入缓存的数据值。

  鉴于漏洞的技术分析需要计算机、代码等知识,比较复杂,感兴趣的同学可阅读文末的附录。

  三、华为云安全提供立体的防御手段

  该漏洞出现在电子世界的地基上,但地基的修复是很困难的,有待于CPU厂商的设计和更新。因此,目前主要的修复方案是修复地基上层的建筑,比如云平台操作系统、用户虚拟机操作系统。漏洞虽然产生了世界性的影响,但对用户来说,大可不必过于惶恐。

  首先,华为云安全一直在与CPU厂商们积极沟通合作,不断分析和尝试给出更好的底层修复方案,以期彻底解决该漏洞。

  其次,从云平台来说,包括华为云在内的各云厂商,都已启动了底层基础架构的修复更新。华为云安全已于1月4日发布公告,将于1月11日0时启动基础平台安全升级,方式为对用户无感知的热升级,正常情况下对用户业务无影响。

  再次,对用户而言,漏洞原理及利用代码虽已公开,但要在真实的云环境下利用起来,是非常复杂和困难的。而且华为云安全推出了漏洞消减服务,可帮助用户对漏洞可能造成的威胁进行检测及防御。

  最后,包括华为云在内的各大云厂商,日常最重要的工作之一,即是例行地检测和阻断各种针对云的攻击,保障云环境的安全稳定。华为云安全并配备了强大的专家团队,随时响应可能的安全事件。此次高危漏洞的爆发,华为云更加强了检测和防护力度,安全专家7*24小时轮班值守。截止目前,尚未发现可在真实环境下攻击成功,并造成明显损失的漏洞利用代码。

  四、华为云安全与用户同承担、共进退

  这两组漏洞,危害之大,修复之难,前所未有。可以预见,未来一段时间,仍将是业界关注的热点,但不管如何,华为云安全都坚定地站在用户身边,同承担、共进退,持续对漏洞进行跟踪、分析、研究,不断推出更好的防护方案和服务,帮助用户防护好业务数据。

  ***

  附录:漏洞技术分析

  1、Meltdown漏洞分析

  Meltdown对应漏洞库编号为:CVE-2017-5754。结合业界公开的漏洞利用代码,分析如下:

  1、此段代码运行在CPU用户态模式下(cpl=3),且ptr指向一个内核地址空间的地址。

  2、CPU在执行指令2时,会首先把数据读取到缓存中(这时还没有进行权限检查)。

  3、由于CPU的乱序执行特性,执行步骤2的同时,后面几条指令也被会执行,且指令3和指令5的计算操作是根据 指令2读取到的数据执行的。

  4、当CPU对指令2进行权限检查时会发生一个访问异常,之后执行的两条指令的操作状态会发生回滚,但Cache、TLB没有回滚,这样就绕过了CPU的权限检查机制。

  5、可以利用边信道攻击来探测哪些页面被访问过,结合特定的代码场景,就可以推测出内核地址空间中的内容了。

  2、Spectre漏洞分析

  Spectre,对应漏洞库编号:CVE-2017-5753/CVE-2017-5715。

  1、正常情况下,当offset 大于array1->length时,下面的代码永远不会执行。

  2、如果array1->length没有被缓存,由于CPU分支预测的特性,CPU当前指令流水线会等待缓存加载完成,同时在另外一条指令流水线上,下一条指令“value = array1->data[offset]”会被预测执行。

  3、一旦发现offset大于array1->length,预测执行的指令和结果将会被丢弃并加载正确的指令重新处理。

  4、当array1->length和array2->length没有被缓存时,exploit可以分别读取 array2->data 0x200和0x300偏移处的数据,通过比较两次访问的用时,就可推断执行的是哪条指令,从而推断出value的低位值,而这个value正是上面越界读取到的值,这样就可以泄露任意内核地址空间的一位,这当然就可以构造出能读取更多内存地址的exploit了。通常访问用时更短的,说明数据已经被加载到了缓存,这也意味着分支指令被预测执行到了。

请关注天极网天极新媒体 最酷科技资讯
扫码赢大奖
评论
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
办公软件IT新闻整机