《架构师》2018年2月
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

热点 | Hot

英特尔、谷歌和AWS回应CPU安全事件:AMD和ARM也有问题,影响巨大

作者 陈思

英特尔方面解释称,其已经向ARM、AMD以及其它多家操作系统供应商报告了此项漏洞。该方同时强调,该漏洞最初是由谷歌公司的Zero项目安全小组所发现,这一说法也得到了谷歌方面的证实。

英特尔公司指出,其将发布微代码更新以解决此项问题,而随时间推移这些修复补丁中的一部分亦将被引入硬件当中。

据英特尔所说,本来他们是计划下周当软件和固件都比较完善的时候向用户披露这个信息的,但是由于媒体的报道不准确,引起舆论哗然才让其不得不提前发布声明。在回应时,Intel表示,这些漏洞不存在被攻击、修改或删除数据的可能,还表示媒体报道此“漏洞”或“缺陷”是英特尔的产品独有的问题这一说法是不准确的。基于目前为止的分析,许多类型的计算设备(不同供应商的处理器和操作系统)也很容易受到这些攻击。

微软公司拒绝就此事发表评论,不过预计微软也将推出自己的对应补丁。此外,AWS、谷歌公司也发布了自己的报告(见下文)。

意味着什么:就目前来讲,我们可以看到各大主要芯片与操作系统供应商已经意识到问题的存在,并努力发布修复程序。第一款补丁很可能被纳入微软的新一轮补丁周二发布。目前还不清楚这批补丁会影响到多少不同类型的软件与CPU架构,也不明确具体将给PC性能造成怎样的影响。

但是,补丁带来的影响会不会比安全问题本身更令人难以接受?根据初步报道,取决于具体任务与处理器型号的不同,PC用户可能因此遭遇“5%到30%之间的性能衰减”。

英特尔方面似乎坚信普通用户不会受到任何负面影响。其在一份声明中指出:“与一部分报道相反,任何潜在的性能影响都将取决于实际工作负载。而对普通计算机用户而言,其不会产生任何显著的影响,且性能衰减将随时间推移而得到缓解。”

英特尔公司进一步作出解释,即“具体取决于实际工作负载”,但客户仍然无法借此对影响作出准确的判断。

高管们表示,英特尔公司在研究这项漏洞的影响时,并没有将客户PC与数据中心服务器区分开来。事实上,普通用户所使用的应用程序可能遭受0%到2%的性能影响,但调整依赖应用程序与操作系统间交互的综合性工作负载则可能遭遇最高30%的性能衰减。

我们可以做点什么?

英特尔公司给出的建议是补丁、补丁、还是补丁。相信大家已经对这样的陈词滥调非常熟悉:“请咨询您的操作系统供应商或系统制造商,并尽快应用所有可用更新。遵循良好的安全措施以防范恶意软件,这将有助于预防可能的恶意利用活动直到更新工作全面完成。”

机器学习会受到影响吗?

据部分专家分析,这取决于集成模型,对模型每个部分的调用都可能产生影响。此外,生成一个新程序将产生新的开销,内存释放/分配算法将更复杂,而CPU处理器将成为深度学习GPU图像加载的瓶颈。

谷歌回应:Chrome浏览器将受影响,请按操作更新

谷歌公司则报告称,其Chrome浏览器将受到影响,但用户可以采取两步走解决战略:首先,确保您的浏览器更新至版本63;其次,可以启用一项名为站点隔离的可选功能,从而将各站点隔离在独立的地址空间内。此可选项目可在chrome://flags/#enable-site-per-process当中开启。最后,计划于今年1月23日发布的Chrome 64将能够保护用户免受旁路攻击的侵扰。

受影响设备完整清单如下。

以下未明确列出的所有Google产品都不需要用户进行操作。

Android

· 最新安全更新的设备受到保护。此外,目前我们还未发现此漏洞成功再复制,即未经ARM Android设备的授权泄露信息。

· 最新安全更新的Nexus和Pixel设备受到保护。

Google Apps / G Suite(Gmail,日历,云端硬盘,网站等):

· 无需额外的用户或客户操作。

谷歌浏览器:

· 一些用户或客户需要采取措施。

Google Chrome操作系统(例如Chromebook):

· 需要一些额外的用户或客户操作。

· Google云端平台

· Google App引擎:无需额外操作。

· Google计算引擎:需要一些额外操作。

· Google Kubernetes引擎:需要一些额外操作。

· Google Cloud Dataflow:需要一些额外操作。

· Google Cloud Dataproc:需要一些额外操作。

· 所有其他Google云产品和服务:无需其他操作。

· Google主页/Chromecast:无需额外操作。

· Google Wifi / OnHub:无需额外的用户操作。

具体操作参考

亚马逊回应:此bug已存在20余年,发布新版Linux系统

昨日,亚马逊也作出回应,称这个bug其实是Intel、AMD等现代处理器存在了20多年的问题,目前亚马逊MC2 fleet只有一小部分产品是可以抵御攻击的,在未来的几小时之内将会被修复。

Amazon Linux存储库中提供了更新的Amazon Linux内核。2018年1月3日下午10:45(GMT)之后使用默认的Amazon Linux配置启动将自动包含更新的软件包。Amazon Linux AMI用户可以运行以下命令,确保收到更新的软件包

旁路分析利用是什么?

根据英特尔方面的说法,攻击者可以通过观察高权限内存中的内容利用名为“推测性执行”的CPU技术规避必要的权限级别约束。如此一来,攻击者将能够访问其正常情况下无法访问的数据。不过英特尔公司表示其无法对数据内容进行删除或者修改。

事实上,英特尔与研究人员们发现了三种漏洞利用变种,分别为“边界检查旁路”、“分支目标注入”以及“流氓数据加载”,三者在具体攻击手段方面略有不同。但通过操作系统更新,三种问题都能够得到有效缓解。

英特尔公司工程技术负责人Steve Smith报告了这一重要发现,并补充称目前还没有观察到对该项漏洞的任何实际利用行为。他同时否认了此项漏洞属于缺陷的说法,亦不承认其出现是为了专门针对英特尔。在本次电话会议上,Smith向投资者们强调“处理器的运作方式仍然严格遵循我们的设计预期。”

Smith同时表示,这一发现敦促全球各硬件制造商以“负责任的方式”应对此项漏洞。

这是一个影响到全行业的问题

前文提到的各家企业已经计划在未来一周内陆续发布相关补丁。而英特尔方面则表示,其提前作出评论的原因在于“目前存在诸多不够准确的媒体报道”——但需要强调的是,芯片巨头的声明当中并没有对这些报道作出任何否定。英特尔只是首先向媒体发布了一份声明,而后即召开电话会议。

英特尔公司指出,“英特尔与其它技术企业已经意识到用于描述软件分析方法的新型安全研究成果一旦出于恶意目的而遭利用,可能导致从计算设备上收集敏感数据。”

英特尔公司认为,此项漏洞与其它类型架构同样存在密切关联——这里所指的肯定是AMD(尽管其否认自家芯片会因此受到影响)以及作为大多数智能手机核心的ARM。除此之外,另有几家厂商以及操作系统供应商的产品“易受影响”。

微软公司的一位发言人在接受邮件采访时解释称,“我们已经意识到这一影响整个行业的问题,并一直与芯片制造商开展密切合作,旨在开发并测试缓解措施以保护我们的客户。我们正在为云服务部署缓解措施,同时亦发布了对应安全更新,希望保护Windows客户免受英特尔、ARM以及AMD支持型硬件芯片内相关漏洞的影响。”

AMD方面否认其处理器产品受到影响,并在采访中强调称目前AMD处理器所面临的风险“几乎为零”。

英特尔则试图解释其为何没有主动站出来曝光问题——芯片巨头宣称,就在此次消息传出之时,其几乎已经完成了漏洞的内部解决。英特尔公司指出,“我们致力于通过负责任的方式披露安全问题,也正因为如此,英特尔与其它供应商才计划在下周公布相关软件与固件更新时正式披露这一问题。”

英特尔回应存疑,网友不买账

虽然官方做出了回应,但是网友们似乎并不买账,大多数网友对这一回应都持怀疑的态度,认为英特尔不够诚实,这样的做法是自欺欺人。知名社交网站Reddit上有关英特尔的讨论同样在如火如荼进行着,除了疯狂diss英特尔之外,也有网友给出了自己的分析。

我们摘录了部分网友的讨论内容

网友观点一:对于有独立数据中心的企业来说可能没太大影响,因为他们不会受到这个漏洞带来的安全问题影响,因此肯定会在没有内核补丁的情况下继续运行他们的数据中心。但对于学术研究人员来说,这可能(会?)确实是一个更大的问题,因为他们通常不管理自己的内核,而是云上运行计算任务。不过CPU一般很少成为性能瓶颈,现在大多数BLAS密集型计算是在GPU上完成的,数据集通常被完全加载到RAM中,而在现代库中不会经常产生新的线程。

网友观点二:这几乎肯定会导致产品召回,并最终从Linux内核中删除该内核补丁。

网友观点三:几乎所有在过去20年中生产的英特尔处理器都受到了影响,许多目前还有人在使用的处理器很可能早已停产,并且没办法快速生产出可以兼容的主板。英特尔可能会召回最近的一款处理器,但是全面召回受影响的处理器将需要数年时间,甚至可能导致公司破产。所以用户只能继续忍受这个内核补丁,直到购买一个新的处理器,由于这个问题补丁导致的性能下降,可能得比计划更早去购买新处理器。也许英特尔会给因为这个原因购买新芯片的客户适当的折扣,以恢复客户对他们的信任。

网友观点四:或许是时候该买点AMD的股票了。

网友观点五:或者卖掉Intel的股票。(英特尔的CEO在12月中下旬卖掉了大量英特尔的股票

网友观点六:他不仅卖掉了一堆股票,而且还卖掉了所有可以卖出的股票(附例说CEO必须拥有25万股股票——于是他把25万股以外的股票全卖掉了......)

网友观点七:这可能就是为什么微软发布了一个通知,说Azure中的一些虚拟机必须先重启,否则将会在1月10日自动重启。当然,这可能只是标准的维护,因为它不像他们发布大量的信息。补充:这下有趣了,微软刚刚发出了警告,强制要求所有还没重新部署的人立即重新部署。看来是因为Project Zero 刚刚发布的消息

网友观点八:我不是这方面的专家,但是这听起来像是跳过了数据结构的边界检查——检查肯定会花费更多时间和资源,如果你确信检查是不必要的,那么直接省略这个步骤可以节省时钟周期。

这听起来像是和推测执行有关。如果你正在推测性地执行一条指令,那么你最终可能会舍弃它的结果,所以执行这个指令花费的代价越少越好。也许英特尔认为他们可以在推测执行的时候跳过priv检查,如果最终发现确实需要这条指令,就在实际执行结果之前执行指令。然而,也许事实证明,这种推测性执行打开了一些通过后门获取数据的方法,比如通过缓存、定时等等,如果异常提前被发现,这个问题就不会暴露了。

网友观点九:这个修复补丁对于性能到底有多大影响会根据具体的计算任务而有所不同,但不可能全部是34%。这个补丁确实会损害内核的上下文切换性能。如果你的应用程序一直在做大量的系统调用,这对你的性能影响可能会非常大。然而,直到我们真的看到实际的案例,才能真正了解影响到底有多大。

网友观点十:这里有两篇文章,他们在集成并启用了该修复补丁的Windows 10 Insider上进行了测试,测试结果显示,普通用户其实无需担心。在合成、实际工作负载以及游戏中的CPU性能基本未受影响,基准测试中的差异都还在误差范围内。可能唯一有影响的是使用了NVMe驱动的用户,比如960 Pro这种速度非常快的驱动器,性能损失约5%,对大多数人来说可以忽略不计。而像基于NVME和SATA的SSD,性能损失几乎为0%,因为这些驱动器的速度没有快到会被影响到。

· 7700K + 1080 Ti:

· 3930K + 1080 Ti:

网友观点十一:欸等等,AMD也被报告“不安全”?哦,哦,哦,是修复补丁把AMD视为不安全,而不是AMD实际上不安全。补充:Bug不会影响AMD。但显然,他们正在向所有架构都推送补丁,而不只是英特尔,这又反过来影响了AMD的性能。也许在经过全面测试之后,AMD会回滚到打补丁之前的版本。补充吐槽:简直是天才,当你出了问题,就强制让别人也出问题。

网友观点十二:免责声明:我是一名英特尔的工程师,但是我的发言仅代表我个人意见,而且我没有直接参与这项调查。

我已经阅读了谷歌的Meltdown论文,可以分享一些想法。我也可以回答大家的问题,但显然我不会分享任何英特尔内部消息。

攻击主要利用了推测性执行(speculative execution),并依赖于缓存方攻击。其实并不是一个真正意义上的“bug”,因为推测性执行就是按照设计工作的,也就是说它不会影响寄存器或内存(除非已提交),但可能会影响缓存。因此,这种攻击会导致CPU首先进入某种故障或陷阱,然后按照程序的顺序执行一些访问特权内存的指令。这些指令永远不会退出,因为陷阱会导致他们中断,但可能会推测性地执行,这就可能影响缓存。然后这个攻击会使用一个旁道攻击(side channel attack)来获取缓存的内容,于是就可能在里面发现特权数据。

基本上任何支持推测性执行的硬件都可能被攻击。在操作系统层面可以解决大部分问题,当然从硬件层面上也有很多修复的方法。但是目前这个缺陷的严重程度,与乱序引擎的深度和其他结构的大小基本上是直接相关的。非常糟糕的是,这基本上意味着一个更快的内核就会更脆弱,更容易受到影响。谷歌的这篇文章称,他们发现所有的英特尔、AMD和ARM都存在问题,但他们无法对AMD或者ARM进行攻击,这可能是因为AMD和ARM没有那么复杂或者乱序引擎的深度更小(虽然这看起来似乎ARM存在另一个相关的问题)。所以英特尔暴露的问题最为严重,因为英特尔的乱序引擎有更高的性能。

Spectre攻击要少见得多,但对所有CPU供应商的影响是一样的。风险较小是因为攻击必须针对一个特定的过程,但是相应的修复起来也很困难。