推荐信息:
娱乐
频道
您的位置:首页 > 热点 > 正文

原来Intel CPU漏洞是它引起的!

2018/1/9 0:40:55 来源:爷爷的收音机 []

导读2017年6月1日,Google的安全团队向Intel、AMD、ARM报了一个硬件级的漏洞,造成的危害是内核数据泄露,修复该漏洞的代价是至少30%的性能损失。版权163nvren.com2017年末Linux内核社区推出了KPTI「Kernel Page Table Isolation」补丁,Linus Torvalds在内核邮件列表上毫不留情地抨击了Intel。

2017年6月1日,Google的安全团队向Intel、AMD、ARM报了一个硬件级的漏洞,造成的危害是内核数据泄露,修复该漏洞的代价是至少30%的性能损失。2017年末Linux内核社区推出了KPTI「Kernel Page Table Isolation」补丁,Linus Torvalds在内核邮件列表上毫不留情地抨击了Intel。

背景

安全人员将这两个漏洞命名为MeltdownSpectre;Meltdown目前只存在于Intel的处理器和部分ARM处理器,Spectre存在于一切有乱序执行的现代处理器架构里面,包括AMD。从原理上来说漏洞无法彻底修复。

本次的漏洞会对所有云厂商造成较大影响,已经有迹象表明有黑客在利用漏洞攻击云系统。Microsoft Azure中国区已发布公告称,将于北京时间2018 年 1 月 4 日上午 11:30 开始自动重启受影响的虚拟机,并全部关闭向部分客户开放的自助维护窗口;AWS也发送了通知邮件声称本周五将进行重大安全更新。163女人网

原因

一切还是要从CPU指令执行的框架——流水线说起。Intel当然不至于明知你要用一个用户态的进程读取Kernel内存还会给你许可。但现代CPU流水线的设计,尤其是和性能优化相关的流水线的特性,让这一切充满了变数。

给所有还没有看过云杉网络连载的系列文章《x86高性能编程笺注系列》的读者一点背景知识的介绍:

x86 CPU为了优化性能,在处理器架构方面做了很多努力。诸如“多级缓存”这一类的特性,是大家都比较熟悉的概念。还有一些特性,比如分支预测和乱序执行,也都是一些可以从并行性等方面有效提升程序性能的特性,并且它们也都是组成流水线的几个关键环节。即便你暂时还不能准确理解其含义,但望文生义,也能看出来这肯定是两个熵增的过程。原文163nvren.com熵增带来无序,无序就会带来更多漏洞。

缓存的困境

讲缓存,必然先挂一张memory hierarchy镇楼:

不过我要说的和这个没太大关系。现在需要考虑的是,如果能读取到内核地址的内容,那这部分内容最终肯定是跑到缓存中去了,因为真正直接和CPU核心交互的存储器,就是缓存。这对一级缓存(L1 Cache,业内也常用缩写L1$,取cash之音)提出的要求就是,必须要非常快,唯有如此才能跟上CPU处理核心的速度。

ide Notes: 为什么在不考虑成本的情况下缓存不是越大越好,也是因为当缓存规模越大,查找某一特定数据就会越慢。而缓存首先要满足的要求就是快,其他的都是次要的。

根据内核的基本知识我们知道,进程运行时都有一个虚拟地址「Virtual address」和其所对应的物理地址「physical address」。阅读http://www.163nvren.com/

从虚拟地址到物理地址的翻译转换也由CPU通过page table完成。Page table并不储存在CPU里,但近期查找到的Page table entry「PTE」都像数据一样,缓存在了CPU中的translation lookaside buffer「TLB」里。为了不再过多堆砌术语和名词,画张图说明一下:

当CPU根据程序要求需要读取某个地址上的数据时,首先会在L1 Cache中查找。为了适应CPU的速度,L1缓存实现为Virtually indexed physically tagged「VIPT」的形式,即用虚拟地址即可直接读取该虚拟地址对应的物理地址的内容,而不再需要多加一道转换的工序。

如果L1 Cache miss,则会在下级缓存中查找。但越过L1 Cache之后,对L2$和L3$的速度要求就不再这么严苛。此时CPU core给出的虚拟地址请求会先通过TLB转换为物理地址,再送入下级缓存中查找。网站http://www.163nvren.com/而检查进程有没有权限读取某一地址这一过程,仅在地址转换的时候发生,而这种转换和检查是需要时间的,所以有意地安排在了L1 Cache之后。

L1缓存这种必须求“快”的特性,成了整个事件的楔子。

分支预测

分支预测是一种提高流水线执行效率的手段。在遇到if..else..这种程序执行的分支时,可以通过以往的历史记录判断哪一分支是最可能被执行的分支,并在分支判断条件真正返回判断结果之前提前执行分支的代码。详情可以在上面提到的连载文章中阅读。

需要强调的是,提前执行的分支代码,即便事后证明不是正确的分支,其执行过程中所读取的数据也可以进入L1缓存。在Intel的官网文档《Intel® 64 and IA-32 Architectures Optimization Reference Manual》第2.3.5.2节中指:

L1 DCache Loads:– Be carried out speculatively, before preceding branches are resolved.– Take cache misses out of order and in an overlapped manner.

Show you the [伪] code:

if (likely(A < B)) { value = *(kernel_address_pointer);}

当分支判断条件A < B被预测为真时,CPU会去提前执行对内核地址的读取。推荐163nvren.com当实际条件为A > B时,虽然内核的值不会真正写入寄存器(没有retire),但会存入L1 Cache,再加之上一节介绍的,获取L1 Cache的值毋须地址转换,毋须权限检查,这就为内核信息的泄漏创造了可能。

从理论上来讲,如果可以控制程序的分支判断,并且可以获取L1缓存中的数据(这个没有直接方法,但可以通过其他间接手法)的话,就完全可以获取内核信息。而分支预测这种特性是不能随随便便就关闭的,这也就是这次问题会如此棘手的原因。

乱序执行

还有一个原因是乱序执行,但原理大致类似。乱序执行是Intel在1995年首次引入Pentium Pro处理器的机制。其过程首先是将我们在汇编代码中看到的指令“打散”,成为更细粒度的微指令「micro-operations」,更小的指令粒度将会带来更多的乱序排列的组合,CPU真正执行的是这些微指令。

没有数据依赖的微指令在有相应执行资源的情况下乱序并行执行,进而提升程序的并行程度,提高程序性能。但引入的问题是,读取内核数据的微指令可能会在流水线发出exception之前将内核数据写入L1 Cache。与分支选择一样,为通过用户态进程获取内核代码提供了可能。

限于篇幅,更详细的内容读者可以在国外安全团队发布的消息中获取。

后续

刚刚查阅之前连载中的一些细节的时候,看到在“流水线”那一章里写过这样一段话:

在面对问题的时候,人总是会倾向于引入一个更复杂的机制来解决问题,多级流水线就是一个例子。复杂可以反映出技术的改良,但“复杂”本身就是一个新的问题。这也许就是矛盾永远不会消失,技术也不会停止进步的原因。但“为学日益,为道日损”,愈发复杂的机制总会在某个时机之下发生大破大立,但可能现在时机还没有到来:D

很难讲现在是不是就是所谓的那个“时机”。虽然对整个行业都产生了负面影响,但我对此仍保持乐观。因为这就是事物自然发展的一个正常过程。性能损失并不是一件坏事,尤其是对牙膏厂的用户来说。

原文来自: http://www.linuxprobe.com/intelcpubug-cache.html

通过键盘前后键←→可实现翻页阅读

IT娱乐动漫星座时尚教育宠物推荐

  • 任天堂推出Switch游戏机新玩法,股价大涨3%

    1月18日早晨,日本游戏公司任天堂发布了Switch游戏机的新玩法,引来游戏圈一番“轰动”。任天堂此次发布的游戏外设名为NintendoLabo,玩家可以将自己的Switch设备插到一个个形状各异、组装简单的瓦楞纸盒中,Switch将“变身”为钢琴、钓竿、赛车、机器人……这让一台设备带来了不同的体验。任天堂官方宣布将推出两款游戏外设,在今年4月20日发售,一种是包含钓鱼、弹琴等五个游戏的VarietyKit,售价为69.99美元;另一种是可以模仿机器人的RobotKit,售价79.99美元,这两

  • 敏捷实践02:如何创建产品路线图?

    笔者根据自身学习和实践经历对Scrum框架的流程做了总结,共有7篇,本文是Scrum框架的第2篇:建立产品路线图。笔者根据自身学习和实践经历对Scrum框架的流程做了总结,共有7篇。做这个总结的原因,一来是想梳理出一个可以帮助新人将Scrum落地执行的实践手册,二来是想通过分享自己的经验引发大家的思考并指正笔者的不足。本文是Scrum框架的第二篇:建立产品路线图。产品路线图简介产品路线图是产品需求在时间轴上的总体视图,它是产品需求与其完成时间的概览,可以使用产品路线图来对需求进行分类、排定优先级

  • 定位品质生活,联合知名设计师,哲品想改变中国产品山寨的刻板印象

    文李颐晖,如有更多地产爆料或寻求报道,欢迎添加作者个人微信lyhui1011,请务必注明公司、职位、事由。在马上要开幕的巴黎时尚家居设计展Maison&ObjetParis展上,哲品联合了日本设计鬼才佐藤大,设计了名为“妙物村庄”的主题展位,并同时推出了由佐藤大设计,包含以卵石对杯为代表的【卵石系列】的5大系列展品。不是哲品第一次跟设计大师合作,成立7年来,黑川雅之、卢切斯·佛朗切斯科、MichaelYoung、琚宾、连志明&王珂夫妇都成出现在它的合作系列名单之中。对此,哲品创始人兼CEO张卫平

  • 苹果开通微信公众号 可直接买iPhone X

    创业家讯1月18日消息,苹果今日正式开通官方微信公众号,该公众号可提供跟苹果AppleStoreAPP类似的全部产品以及Applecare等服务的在线下单购买,零售店、产品保修信息等查询服务以及苹果相关产品新闻、使用教程等新闻资讯服务,甚至是直接预约产品维修等服务。由于目前苹果官方公众号只是处于上线初期,相关体验和功能还有待完善,后续还将提供更多个性化的服务,让用户可以更便捷地购买使用苹果产品以及了解最新教程等相关资讯服务。苹果的这个举动,寓意着其愈发重视国内市场用户的需求,进一步加速其本土化的

  • 想要在飞机上愉快玩手机?或许这些你得先清楚

    “飞机马上要起飞了,请关闭所有随身携带的电子设备”,可能这句经典的话,以后将很少能听得到,甚至再也听不到了。众所周知,一直以来国内航班都有明文规定不准在飞行过程中使用相关的电子设备,其中就包含了几乎不离身的手机。其实,在去年的下半年,民航局就曾透漏“我国将放宽飞机上使用手机的规定”。2018年1月16日,中国民航局正式发布了《机上便携式电子设备(PED)使用评估指南》。对航空公司如何验证和评估飞机上便携式电子设备(PED)的使用提出了具体的要求和指导,这意味着飞机上使用手机已成为可能,不过目前来

  • 让 Windows 开始菜单中的 Chrome 应用图标正确显示 | 一日一技

    当我们在Windows中使用一些网页版应用时,我们可以通过Chrome浏览器的「添加到桌面」功能生成一些网页应用。只要勾选「在窗口中打开」,就可以像使用本地应用一样使用网页应用。这些网页应用在文件夹中可以正常显示,但一旦将它们固定到开始界面上,就会变成Chrome的图标,无法正常显示网页logo。出现这个问题的原因,是因为Chrome在.xml文件中定义了一个样式,Windows的开始界面会优先读取这个样式,导致所有的网页应用图标无法在开始菜单中正常显示。其实这个问题很好解决,只需做几步简单的操

  • 他用动漫IP打造奇幻都市剧 首部作品7月开拍 已获投200万

    漫悦影业创始人玄浩辰文铅笔道记者杨博宇注:玄浩辰承诺文中数据无误,为其真实性负责。铅笔道作客观真实记录,已备份速记录音。国家新闻出版广电总局监管中心日前发布的《2017网络原创节目发展分析报告》指出,2017年我国新上线网络剧206部,上线数量较2016年同比增长46%。同时,在这206部作品中,有66%的付费剧,可见付费剧现已成为行业主流。除了数量的增长,剧作质量也进步显著,出现了《白夜追凶》、《河神》、《无罪之证》等一批优质网络剧。之前一直在韩国从事漫画版权运营的玄浩辰,便从中嗅到商机。他认

  • 原生安卓8.0VS华为EMUI8.0,孰强孰弱一战便知

    安卓8.0发布有一段时间了,国内这些系统虽然很多都已经开始了内测,但依旧迟迟没让广大用户吃上奥利奥,相比之下华为伴随MATE10推出的EMUI8.0就属于国内早一批尝鲜安卓8.0的系统了。那么EMUI8.0与原生安卓8.0.的差异都表现在哪里呢,今天我们就来探讨一下这个话题。先看对比主界面,不论是EMUI还是MIUI、Flyme,主界面基本上是一个套路的,去除应用的二级菜单,直接将APP放在主页栏目。而原生的安卓8.0依旧保留了应用的二级菜单,需要点击才能进入完整的应用界面。可以看出原生安卓8.

  • 还在羡慕赌王儿子?戴上这款手环你也可以成为男神!

    最近,有一个这样的男神突然火了起来,年仅22岁的麻省理工硕士,获得过多个世界性数学大奖的数学天才,因为参加了《最强大脑》节目,并拿到惊人成绩,从此这位“澳门赌王”的儿子何猷君开始踏进人们的视线,并刷爆了微博热搜。这位被称为是新一代的男神,不仅是由于是富二代的原因,还因为“高智商”、“高颜值”、“超级学霸”这些标签俘获了无数少女的心,突然觉得这样的男神也实在太可怕了......有钱、有颜值,还要比你聪明、努力,羡慕已经没用,再不奋发图强我等屌丝就真的混不下去了,或许我们不能改写出生的命运,但未来依

  • 27张图告诉你高铁将带动哪些城市崛起,有你家乡吗?

    在中国中车、中国通号、中国中铁、中国铁建、中国交建等众多中央企业的不断努力下,“中国高铁”已经成为响当当的国家名片,不仅技术世界领先,更是实现了完全自主知识产权。经过十年的快速发展,高铁已成为人们日常出行的重要交通工具,“千里江陵一日还”早已变成现实,高铁改变的不仅是不断刷新的“中国速度”,更为区域与城市发展带来新的模式与机遇。高铁以高速、大容量、集约型、通勤化的特征,在中等距离的出行上具备极强的竞争力。高铁从无到有的十年也是中国城镇化快速发展的十年,无数大中小城市因高铁而串联,人、钱、物在城市