修正这个芯片级的安全漏洞将会导致严重的性能惩罚,估计使用英特尔处理器的系统性能将会出现 5%- 30% 的下降。
该漏洞影响所有使用英特尔处理器的操作系统,包括 Linux、Windows 和 macOS,并且迫使 Linux 和 Windows 重新设计内核的虚拟内存系统,而微码更新无法解决该问题,过去十年的英特尔处理器被认为都存在该 bug。
Linux 的修复代码已经释出,被称为 Kernel Page Table Isolation(KPTI)的修正完全隔离了内核内存和用户进程,Phoronix 的初步测试证实性能出现了显著的下降,不过 Linux 下的游戏性能没有受到影响。
微软预计会在这个月的例行更新中释出它的补丁,beta 版本已经提供给测试者。 ( https://www.phoronix.com/scan.php?page=article&item=linux-415-x86pti&num=1 )
这一严重的硬件设计漏洞,迫使主要操作系统和云计算服务商都忙着打补丁。
因为漏洞信息没有解密,所以目前只能通过已发布的补丁反推这个漏洞。( http://pythonsweetness.tumblr.com/post/169166980422/the-mysterious-case-of-the-linux-page-table )
该漏洞是奥地利格拉茨技术大学(TU Graz)的一组研究人员发现的,他们在去年十月发布了最早的 KAISER 补丁集。( https://lwn.net/Articles/738975/ )
去年 12 月,在内核邮件列表上,应 Linus 等人的要求,KAISER 被改名( https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1553070.html ),内核开发者提出了一系列技术上正确的首字母缩写,包括 User Address Space Separation(uass)和 Forcefully Unmap Complete Kernel With Interrupt Trampolines(fuckwit),最后出于政治上正确的理由改名为 Kernel Page Table Isolation(KPTI)。
从表面上看,KPTI 补丁是为了确保 ASLR 仍然有效。
ASLR 是现代操作系统的一项安全功能,通过引入虚拟地址随机化阻止攻击者定位目标程序数据的位置。
而在去年底举行的 34C3 会议上,TU Graz 的研究人员描述了一种纯 Javascript 的 ASLR 攻击(YouTube https://www.youtube.com/watch?v=ewe3-mUku94 ),通过组合高精度测时和选择性驱逐 CPU 缓存行,一个运行在浏览器上的 Javascript 程序能还原一个 Javascript 对象的虚拟地址,然后再利用浏览器的内存管理 bug 进行攻击。
从表面上看,KAISER(KPTI)补丁的作者们演示了一种技术能暴露 ASLR 化的地址。问题看起来也和虚拟内存也有关。
每当一些机器代码尝试加载、储存或跳到一个内存地址,CPU 都必须首先通过其管理的页表将这个虚拟地址翻译到物理地址。虚拟内存可能是现代操作系统最重要的特性之一,它能防止一个死亡的进程崩溃操作系统,一个浏览器 bug 崩溃桌面环境,或者一个虚拟机能影响到同一主机上的其它虚拟机。
TU Graz 的研究人员此前曾在一篇论文里描述了一种新的 Rowhammer 提权攻击。 ( https://arxiv.org/abs/1710.00551 )
来源:solidot
事出不到一天,英特尔方面就给出了相关声明。原文如下:
英特尔和其他一些硬件厂商发现,某些新的软件分析方法可能被用于不正当目的:在用户正常使用期间非法收集计算机中的敏感信息。但我们相信这类安全漏洞并不会修改或删除用户数据,或导致数据系统崩溃。在这份声明中,英特尔没有公开设计缺陷,此外,英特尔明确表示这份声明是用来指责媒体不符合事实的报道。事实上,英特尔作为一个行业巨头,他们更应该发出一份关于漏洞和修复工作的声明,以刺激消费者恍惚的心情。
但最近关于只有英特尔的产品存在这类 bug 或缺陷的报道是不符合事实的。基于对数据的分析,很多类型的计算设备,包括其他品牌的处理器或操作系统,其实都存在这类安全漏洞。
英特尔非常重视自己的产品和用户安全问题,我们目前正在与其他厂商,包括 AMD、ARM,以及其他操作系统供应商全力合作,力图在全行业范围内推出应对方案。英特尔已经开始通过软件和固件升级的方式来封堵这类安全漏洞。目前的媒体报道有失偏颇,会对计算机性能造成影响的其实是计算负荷,而这对普通用户来说并不是什么大问题,同时我们也会很快进行修复。
一直以来,英特尔对潜在的产品安全问题都保持公开透明的态度,所以英特尔将与其他供应商一起公开目前遇到的问题,同时提供软件及固件升级。但英特尔在今天正式发布这份声明的目的是要纠正最近不符实的媒体报道。
英特尔再次敦促用户,请尽快与您的操作系统提供商或计算机设备供应商联系,以在他们推出解决方案后第一时间升级您的计算机。同时,在专用补丁推出前,对通用型杀毒软件进行升级也将对您的计算机有益无害。
当然,英特尔的老对头 AMD 肯定不会放过这次机会,虽然没有发声明,但是 AMD 官方指出他们安全研究团队已经发现了三个针对推测执行的变体。他们认为,AMD 的处理器并不会受其影响。由于 AMD 处理器的不同架构,这次的安全漏洞对他们的产品来说影响几乎为零。
无论英特尔,还是 AMD,还是 ARM,大家的处理器都有问题,一个都别想跑!
谷歌的 Project Zero 团队对 AMD 所指出的事情产生了质疑,该团队发现,CPU 数据高速缓存时间可能会被滥用,这无疑加速泄漏了错误推测的执行信息,将导致(最坏的情况下)在各种语境下任意虚拟内存跨本地安全边界的读取漏洞。就已知的情况来看,这个问题的变种已经影响到了包括英特尔、AMD 和 ARM 的某些处理器。
于是他们通过 Intel Haswell Xeon CPU、AMD FX CPU、AMD PRO CPU 和 ARM Cortex A57 这四款处理器来做了一个实验,用来检测出在同一个进程中错误推测执行的数据读取能力。
图丨实验逻辑图
经过变体 1 验证后,Project Zero 得出结论:在具有发行版标准配置的现代 Linux 内核下以普通用户权限运行时,可以在 Intel Haswell Xeon CPU 上的内核虚拟内存中的 4GiB 范围中执行任意读取。如果启用了内核的 BPF JIT(非默认配置),那么它也适用于 AMD PRO CPU。在 Intel Haswell Xeon CPU 上测试时,经过约 4 秒的启动时间后,内核虚拟内存可以以每秒 2000 字节的速度读取。
变体 2 的验证结论为:在使用 Intel Haswell Xeon CPU 上的虚拟机管理器创建的基于内核的虚拟机内以超级用户权限运行时,在主机上运行的特定(已过时)版本的 Debian 发行版内核条件下,可以以 1500 字节/秒的速度进行读取,并且可以进行空间优化。在执行攻击之前,对于具有 64GiB RAM 的机器,需要执行大约 10 到 30 分钟的初始化; 所需的时间应该与主机 RAM 的数量大致成线性关系。
变体 3 则为:当以正常的用户权限运行时,可以在某种先决条件下读取 Intel Haswell Xeon CPU 上的内核内存。Project Zero 团队相信这个先决条件是目标内核内存在 L1D 缓存中。
这说明了什么?无论英特尔,还是 AMD,还是 ARM,大家的处理器都有问题,一个都别想跑!
来源:DeepTech深科技