英伟达GPU也爆“幽灵”漏洞, 芯片行业怎么了?
安全研究人员上周发现了两个芯片组漏洞,分别为“熔断”(Meltdown)和“幽灵”(Spectre),允许黑客在计算机、手机和云服务器等多种设备上盗取密码或密钥。
英特尔已经表示,其处理器产品同时受“熔断”和“幽灵”两个漏洞的影响,而AMD、ARM和英伟达的产品仅受“幽灵”漏洞的影响。
英伟达今日称,其GeForce、Tesla、Grid、NVS和Quadro系列产品受“幽灵”漏洞的影响。
本周一,苹果公司已经针对“幽灵”漏洞发布了多个补丁包,分别囊括了iOS、macOS操作系统,以及Safari网络浏览器。苹果还表示,到目前为止其用户尚未受到这两个漏洞的影响,尚未有黑客利用漏洞发起攻击。
周二,微软也发布了相应的补丁程序。微软同时指出,补丁程序能降低部分PC和服务器的运行速度,配备英特尔旧款芯片的系统性能会有明显下降。
而英特尔表示,已为过去5年制造的绝大多数处理器发布了补丁,且更多的更新将会陆续发布。英特尔还强调,尚未发现有黑客利用这些漏洞获取用户数据。
被英特尔漏洞吓怕 云服务提供商考虑选择可替代芯片
据外媒报道,在英特尔芯片安全漏洞被曝光后,英特尔数据中心的一些客户正考虑使用该芯片公司竞争对手的芯片来打造新的云服务基础架构。
芯片部门是英特尔发展速度最快的部门之一。此次安全漏洞将会让该部门遭受重创。英特尔的客户可能会流失,它也可能被迫给客户提供折扣。据市场研究公司IDC称,英特尔芯片支持着98%的数据中心运行。
上周,安全研究人员披露了英特尔芯片的漏洞Meltdown和Spectre。这些漏洞可能会让黑客窃取大多数电脑、手机或云端服务器的密码或密钥。
微软周二称,针对这些安全漏洞的补丁程序可能会对服务器的性能产生很大影响。
英特尔周二在一项声明中称,它将帮助客户在安全、性能和兼容方面找到最佳的契合点。“对于很多客户来说,性能是最重要的。我们专注于我们擅长的东西,努力确保达到客户的期望。”
英特尔芯片的可替代者包括AMD的芯片和ARM的芯片(图形处理器)。这种图形处理器用于处理与英特尔和AMD的CPU不同的任务。
对于加州圣马特奥的在线存储公司Backblaze来说,换用ARM芯片并不难。
“如果ARM公司以低于x86的成本或能耗提供足够的计算能力,它将能够吸引我们换用它的芯片。”Backblaze公司的格雷布-布德曼(Gleb Budman)说,“如果x86芯片的安全补丁程序导致性能大大降低,那么这也可能迫使我们换用ARM芯片。”
洛杉矶云计算供应商Infinitely Virtual的首席执行官亚当-斯特恩(Adam Stern)在一项声明中称,该公司希望英特尔帮助更换设备或退还部分货款来弥补其损失。
“如果英特尔不采取适当的措施来弥补我们的损失,我们将不再购买它的产品。”斯特恩说。他的公司现在只使用了英特尔的芯片。
一些云服务提供商表示,将以前安装的英特尔芯片换成竞争对手的芯片可能很麻烦,但是从长远来说,他们可以用可替代的芯片来拓展其网络。从英特尔芯片换到AMD芯片最简单,因为这两家公司的芯片具有相同的核心技术,即x86架构。
ARM芯片在执行搜索等任务的时候,其速度可能赶不上英特尔x86芯片。而且,它的软件不得不重新编写。
英伟达的图片处理器GPU并不能直接替换英特尔的CPU,但是这种芯片的功能超过了CPU的功能,可以处理一些新的任务,例如图像识别和语音识别。
在英特尔芯片的安全漏洞被曝光前,一些大型科技公司一直在尝试使用英特尔竞争对手的芯片。
去年3月,微软开始在其Azure云服务中使用ARM芯片。在去年12月,微软Azure云服务又在其数据中心部署了AMD芯片。
在2016年,谷歌称,它准备设计一款利用IBM的Power9芯片的服务器。亚马逊的AWS云服务则选择了AMD公司的图形处理器来支持其图形设计服务。
高通和Cavium公司则在设计针对数据中心的ARM芯片。Cavium公司称,它的目标是打造与英特尔芯片匹敌的芯片,并将其应用到数据库和内容提供网站中,从而帮助提高速度,例如在线视频加载速度。
Cavium公司数据中心芯片部门副总裁戈帕尔-黑哥德(Gopal Hegde)称,该公司还准备与微软和“其他几家云服务商”合作。Cavium公司和高通合作减少了ARM芯片需要重新编写的软件数量。
旧金山云网络公司Cloudflare一直在考察ARM芯片。该公司的首席技术官约翰-格拉厄姆-库明(John Graham Cumming)称,新的安全补丁并没有使该公司的云服务速度变慢,但是它将会利用这个机会来重新评估是否继续使用英特尔芯片。
附:“幽灵”与“熔毁”漏洞映射出了科技行业的现状
上周,科技行业因为现代处理器中的两个漏洞被披露而震惊了:熔毁(Meltdown)和幽灵(Spectre)。由于人们对这个漏洞性质的普遍猜测(可能是由Linux内核的更新引起的),以及熔毁和幽灵在某些方面是相似的,但在其他方面却有所不同。所以披露日期提前了一个星期。
从相似点开始:两个漏洞的结果都是一样的——非特权用户可以访问他们不应该访问的计算机上的信息,比如密钥、密码或其他用户拥有的任何其他类型的数据。对于AWS这样的云服务来说,这是一个特别大的问题。在AWS上,多个“租户”使用的是相同的物理硬件:
这种多租户架构是通过使用虚拟机实现的:在一台物理计算机上运行的专用软件,可以让每一个用户都像拥有自己的计算机一样操作,而实际上它们是共享的。这是一种双赢的做法:在绝大多数情况下,单个用户的计算机都处于闲置状态(它们很快就会变得愚蠢),如果多个用户使用一台计算机,那么硬件的使用效率将会大大提高。而且,在云服务领域,同样的概念可以扩展到数百万台物理计算机,共享更多的基础设施,比如冷却、网络、管理等。
不过,整个体系的建立基于一个基本假设:一台虚拟机的用户不能访问另一台虚拟机的数据。这一假设的扩展依赖于对虚拟机软件的完整性的信任,这种信任依赖于对底层操作系统完整性的信任,最终依赖于对服务器核心处理器的信任。来自熔毁的白皮书(强调是作者加的):
为了将数据从主存储器加载到寄存器中,主存储器中的数据就要通过虚拟地址来引用。在将虚拟地址转换为物理地址的同时,CPU还会检查虚拟地址的权限位,也就是说,这个虚拟地址用户是否能够访问,或者只能由内核访问。正如在第2.2节中已经讨论过的,这种通过权限位的基于硬件的隔离被认为是安全的,并且是由硬件供应商推荐的。因此,现代操作系统总是将整个内核映射到每个用户进程的虚拟地址空间。因此,所有内核地址在翻译它们时都会产生一个有效的物理地址,并且CPU可以访问这些地址的内容。访问用户空间地址的唯一不同之处在于,CPU会引发异常,因为当前权限级别不允许访问这样的地址。因此,用户空间不能简单地读取这样一个地址的内容。
内核是操作系统的核心部分,正常用户应该无法访问,它有自己的内存,不仅存储核心系统数据,还存储来自所有用户的数据(例如,必须将其写入或从永久存储中读取)。不过,即使在这里,系统也依赖于虚拟化——内存是用户在应用程序中使用的物理内存,这取决于CPU,以便跟踪内存的哪些部分属于谁,而这正是漏洞所在之处。
SPECULATIVE_EXECUTION
我刚刚只是提到了电脑的三个关键部分:处理器、内存和永久存储。事实上,存储数据的架构比这更复杂:
寄存器是最快的内存形式,每个时钟周期都可以访问(也就是说,2.0 GHz的处理器每秒可以访问寄存器20亿次)。它们也是最小的,通常只包含当前计算的输入和输出。
然后有各种各样的缓存(L1、L2等),它们的速度越来越慢,而且在另一方面,越来越大,也越来越便宜。这种缓存位于一个层次结构中:例如,立即需要的数据将会从寄存器移到L1缓存;稍微不那么必要的数据将位于L2,然后是L3等等。
内存层次结构的下一个主要部分是主存,即系统RAM。虽然缓存的数量取决于处理器模型,但内存的总量取决于整个系统生成器。这种内存比高速缓存慢得多,但它也比缓存大得多,而且便宜得多。
内存层次结构的最后一部分,至少在一台计算机上是永久存储——硬盘驱动器。固态硬盘(SSD硬盘)在这里的速度有很大的不同,但即便如此,永久存储的速度也比主内存慢得多,但也存在同样的问题:你可以以更低的价格获得更多的存储空间。
虽然不属于传统的内存层次结构的一部分,但云应用程序通常在同一网络上的独立物理服务器上拥有永久的内存,通常的折衷方案是——非常缓慢的访问以换取其他好处,在这种情况下,将数据与应用程序分开。
可以肯定的是,“非常慢”是相对的——我们在这里讨论的是纳秒。
杰夫·阿特伍德(Jeff Atwood)的这篇文章用人类的语言来描述就是:
在我们人类的感觉中,无限空间是计算机花费所有时间的地方。这是一个完全不同的时间跨度。系统性能:企业和云计算有一个很好的表格,说明了这些时间差异有多么巨大。只要把计算机时间转换成任意的秒钟即可:
已故的吉姆·格雷(Jim Gray)也有一种有趣的解释方式。如果CPU寄存器是你从你的大脑获取数据需要的时间,那么进入磁盘就相当于从冥王星获取数据。
格雷在微软的演讲中展示了这张幻灯片,给出了“华盛顿,奥林匹亚”的背景信息。让我把他的类比扩展一下:
假设你是一名大学生,在微软实习,当时你在奥林匹亚的家里收拾衣服。现在,西雅图的夏天可能非常挑剔——可能是狂风大作、下雨的天气,或者是炎热和阳光的天气。要想知道明天早上的天气会是什么样子,通常是很难的。为了实现这一目标,谨慎的做法不是只打包一套衣服,而是为了两种可能而打包衣服。毕竟,每次天气变化,从行李箱里换衣服要比开车回家要快得多。
这就是这个类比开始瓦解的地方:现代处理器为了减少获取数据所需要的时间,不仅获取了超出需要的数据,而且还会提前对这些数据进行计算。这就是所谓的Speculative_execution,也是这些漏洞的核心所在。用算法的形式来类比:
检查天气(执行多个触发传感器、中继数据等的多个子进程)。
如果天气晴朗,穿短袖和T恤
其他的天气,穿牛仔裤和运动衫
记住,电脑是愚蠢的,但速度很快:执行“穿短袖和T恤”或“穿牛仔和运动衫”需要纳秒——需要时间就是等待天气观察的结果。所以为了节省时间,处理器会在它了解天气之前帮你穿衣,这通常是基于历史的——过去几天的天气是怎样的?这意味着你可以在等待天气观察结果的同时,决定鞋子、配饰等。这是处理器的另一个特点:它们可以同时做很多事情。为了实现这一目标,最快的完成任务的方法就是猜测最终的结果是什么,如果有必要,还会进行回溯。
熔毁
现在,想象一下这个算法被修改成以下的内容:
检查经理的日程表,看看他们是否在办公室
如果他们在办公室,穿宽松的裤子和衬衫
如果他们不在办公室,穿短裤和T恤
只有一个问题:你不应该接触到你经理的日程表。请记住,计算机是愚蠢的:处理器不知道这一点,它必须检查你是否有访问权限。所以在实践中,这个算法更像这样:
检查经理的日程表,看看他们是否在办公室
检查一下这个实习生是否能访问他们经理的日程表
如果实习生有权限,可以访问日程表
如果经理在办公室,穿宽松的裤子和衬衫
如果他们不在办公室,穿短裤和T恤
如果实习生没有权限,就不要穿衣服了
不过请记住,计算机虽然很擅长同时处理大量的事情以及在查询数据上并不是很擅长,在这种情况下,处理器会在特定条件下查看经理的日程表,并在它知道对方是否有权限查看日程表之前,决定应该穿什么。如果它后来意识到对方不应该有访问日程表的权限,它会毁掉一切,但是衣服可能会被弄得有点凌乱,这意味着你可以得到你不应该知道的答案。
我已经说过,这个类比已经瓦解了,它现在已经彻底崩溃了。但这在广义的描述中:处理器会在它知道它是否有权限的情况下,投机性地获取和执行特权数据,这个过程在缓存中留下了痕迹,那些痕迹可以被非特权用户捕捉到。
解释幽灵
幽灵更加狡猾,但更难实现:记住,很多用户都在使用相同的处理器——他们都是你的“室友”,如果你愿意的话。假设我像你一样打包行李箱,然后我“训练”处理器,让它一直期待晴天(也许我可以运行一个模拟程序,让每一天都充满阳光)。处理器将会提前选择短裤和T恤。然后,当你醒来的时候,处理器已经选择了短裤和T恤,如果真的是雨天,它会把短裤和T恤放回去,但会显得有点凌乱。
这个类比在这里真的行不通。你的数据并不是简单地从主存储器中提取出来的,它会暂时保存在缓存中,而处理器会在错误的分支上运行,一旦处理器修复了错误,它就会被迅速删除,但我仍然能弄清楚数据是什么——这意味着我现在已经窃取了你的数据。
熔毁更容易解释——英特尔的声明恰恰与之相反(熔毁也会影响苹果的处理器)——这是由于设计缺陷造成的。处理器负责检查是否可以被访问数据,并且检查速度过慢,这样数据就会被窃取,这是一个错误。这也解释了为什么熔毁可以在软件中运行(基本上,在使用数据之前会有一个额外的步骤检查权限,这就是为什么补丁会导致性能下降)。
幽灵完全是另外一回事:这是处理器的设计。计算机的基本运算速度快得令人难以理解,但是需要花费很长时间才能得到这些数据来进行这些计算:因此,在不等待瓶颈的情况下进行计算,基于最佳猜测,是利用这种基本不平衡的最佳方式。大多数情况下,你会更快地得到结果,如果你猜错了,你的速度也不会比你按顺序完成所有事情的情况慢。
这也解释了为什么幽灵会影响所有的处理器:利用现代处理器的并行度和执行速度带来的快速增长是如此巨大,以至于Speculative_execution是一个显而易见的选择。分支预测器可能会被另一个用户训练,这样缓存变化就可以被跟踪,直到去年才被我们知道。
此外,幽灵党不能通过软件来修复:具体的实现可以被阻止,但漏洞是内置的,想要彻底解决,需要重新设计新的处理器,但这对已经在使用的数十亿处理器不会有任何作用。我们将不得不勉强度日。
幽灵与科技现状
面对一个根本性的不平衡(相对于执行数据来说,数据获取非常缓慢),处理器工程师设计了一个专门针对性能进行优化的系统,但由于未能预见到不良行为者滥用系统的可能性,所以,每个人都变得脆弱不堪。
有个类比是显而易见的:面对一个根本性的不平衡(相对于快速迭代与优化程序来说,获取和保留用户的难度非常大),互联网公司设计出了加强用户留存的巧妙系统,但未能预见到坏人滥用系统的可能性,每个人都很容易受到攻击。
不过,幽灵有助于解释这些问题为何如此令人烦恼:
我不相信有人会故意制造这种漏洞
这个漏洞可能是值得的——更快的处理器会带来更大的好处
无论如何,过去的决定都是过去的:我们能做的最好的事情就是得过且过
因此,对Facebook、谷歌/Youtube等网站,以及互联网带来的广泛负面影响的处理也会如此。权力来自于给予人们他们想要的东西——这个动机并不是坏的!而它带来的好处,可能超过了其负面影响。无论如何,我们唯一的选择就是继续往前走。
- 半导体行业观察
- 摩尔芯闻
最新新闻
热门文章 本日 七天 本月
- 1 复杂SoC芯片设计中有哪些挑战?
- 2 进迭时空完成A+轮数亿元融资 加速RISC-V AI CPU产品迭代
- 3 探索智慧实践,洞见AI未来!星宸科技2024开发者大会暨产品发布会成功举办
- 4 重磅发布:日观芯设IC设计全流程管理软件RigorFlow 2.0