处理器(CPU)芯片曝重大缺陷
2018-01-05 14:43:01 阿炯

AMD证实了BSD开发者发现的CPU Bug

DragonFly BSD的芯片专家Matt Dillon在邮件列表上宣布,AMD已经证实了他发现的CPU Bug,不过具体CPU型号并没有指明。AMD称特定版本的fill_sons_in_loop代码,通过特定序列连续退栈随后又执行(近)返回指令的情况下,处理器会使栈指针指向错误值。Bug在DragonFly BSD中的具体表现是系统在大负载情况下会随机出现段错误。

英特尔 Skylake/Kaby Lake 处理器发现超线程 bug

Debian 开发者在2017年7月下旬的邮件列表上向用户发出警告,英特尔第六代和第七代 Core 处理器(桌面、移动和服务器版的 Skylake/Kaby Lake 和部分奔腾处理器)在启用超线程时发现存在一个处理器/微码缺陷。缺陷会导致无法预料的操作系统行为。应对该缺陷的权宜之计是关闭超线程,或更新处理器微码。该缺陷不只是影响 Debian 操作系统,可能会影响所有使用上述处理器的操作系统。

2018年01月04日,据 TheRegister报道, Intel 处理器芯片近日披露的一项设计 BUG,已经迫使 Linux 和 Windows 内核紧急重新设计,以解决芯片级的安全漏洞。此外苹果的 64 位 macOS 等类似的系统也需要进行更新。该问题存在于 Intel 的 x86 硬件之中,且似乎无法通过微码升级来解决,必须要在系统层面通过软件来解决,或者购买没有设计缺陷的新处理器。

有安全人员强调,这是一个 Intel x86-64 处理器的设计缺陷,已经存在了逾十年。问题被曝出后,Linux 社区的开发者们都在加紧检修 Linux 的虚拟内存系统,并释出 Kernel Page Table Isolation 修复代码。与此同时,微软预计在下个补丁日发布对 Windows 系统的必要调整,其 beta 版本已经提供给测试者。苹果也会在即将发布的 10.13.3 更新中修复更多的内容。

此外,由于漏洞是硬件设计导致的,无法使用微码修复,只能进行 OS 级的修复,而 OS 级的修复会导致严重的性能问题,可能会有 5%-30% 的性能下降。有网站对此事进行了初步测试,证实一些 CPU 执行 IO 密集型任务的速度下降了 18%。Intel 就此事做出了回应,不过内容主要针对的不是事件本身,而是认为媒体的报道不准确。Intel 表示媒体报道称漏洞仅限于 Intel 是不准确的,AMD 和 ARM 处理器也已经受到影响,他们正在与 AMD、ARM Holdings 和多个操作系统供应商在内的许多其他技术公司密切合作,开发全行业解决方案来解决这个问题。


美国网络应急中心建议将问题 CPU 全换掉

这两天,包括 Intel、AMD、ARM 等主要 CPU 大厂相继曝出重大处理器漏洞,且可能会造成敏感数据外泄,而引发轩然大波。除了各家 CPU 厂商发文公关,各家系统供应商和云服务厂商加紧修复外,美国计算机网络应急中心 CERT 也罕见大动作发出漏洞通告,并提出警告,认为此漏洞将可能导致旁路攻击(side channel attackse)带来重大安全风险,建议用户除了及时更新系统外,最好能全部换掉受影响的 CPU ,改用其他没有安全风险的 CPU 。

美国 CERT 中心表示,这次出现的 CPU 漏洞,主要是由于 CPU 架构设计缺陷所造成的,可能导致出现 Meltdown 和 Spectre 两个漏洞的旁路攻击。别有用心的攻击者能够以用户权限执行代码,从而造成各种影响,例如读取受保护的内核内存和绕过 KASLR 。

CERT 还列出目前经已证实受影响的 CPU 厂牌和主要 OS 厂商:


目前被点名的 Intel、AMD 和 ARM 厂商中,ARM 在官网上列出了受漏洞影响的处理器产品,包括 Cortex R7、R8、A8、A9、A15、A17、A57、A72、A73、A75 。这些处理器通常被用在智能手机、平板电脑和其它手持设备上。

Intel 发文澄清,此次漏洞并没有媒体报导的那么严重,虽然可能会导致敏感资料外泄,但用户保存的数据,并不会因此遭到恶意破坏、修改或删除。在最新的公告中,Intel 称目前已经发布了过去五年内推出的大多数处理器产品的更新,到下周末预计将完成过去五年内推出的处理器产品中 90% 的产品更新发布。Intel 坚持认为,这些更新对性能的影响很大程度上取决于工作负载,对于一般计算机用户来说影响不大。

AMD 则坚持自家采用的是和其他家不同的架构设计,预设就不允许记忆体参照,可防止较低权限模式存取较高权限的资料,因此能免于这波处理器漏洞的攻击。在特定条件下,自家 CPU 遭到漏洞攻击的风险为零。

Linux Kernels 五版齐发,修复 Meltdown 重要漏洞

Linux Kernels 4.14.11,4.9.74,4.4.109,3.16.52 和 3.2.97 现已发布。

修复漏洞:修复了一个名为 Meltdown 的重大漏洞。Meltdown 和 Spectre 是近 25 年来影响几乎所有设备的 CPU 两个漏洞,几乎影响所有的手机和个人电脑。非特权攻击者可以利用这两个漏洞获取存储在内核内存中的信息,而 Spectre 漏洞还正在修复中。

继2017年底爆出管理引擎存在安全漏洞后,2018新年伊始,英特尔的CPU芯片又爆出大漏洞,在底层硬件设计上存在严重缺陷,将直接影响到Windows、Linux、MacOS等操作系统。安全研究人员近日发现,英特尔处理器底层设计上存在重大漏洞,能让普通的用户程序识别受保护区域的内核布局及其中的内容。

所有能访问虚拟内存的CPU,都可能被人通过这项漏洞进行访问,这意味着受保护的密码、应用程序密匙等重要信息都可能被黑客攻破。不仅如此,修复这个问题也要付出惨痛的代价——由于是硬件上的缺陷,相关操作系统需要在内核层面上做出修改,而Linux和Windows系统修复这个漏洞后,根据处理任务类型和处理器模式的不同,最高将导致系统处理性能降低30%,还有资料表明会更多。

目前受影响最大的,应该是亚马逊(E2)、微软(Azure)和谷歌(Compute Engine)这三大云计算厂商。这三大厂商都在其数据中心大量使用英特尔CPU,以及Linux系统。通过这个漏洞,攻击者可以通过一个虚拟用户,攻击在同一物理空间的其他虚拟用户,而这几大云服务大厂的服务器排列紧密,只要遭到攻击,理论上所有的数据都将不安全。

Intel总裁套现2400万美元或涉内幕交易

芯片生产商Intel(英特尔)行政总裁克尔扎尼奇(Brian Krzanich)2017年11月29日套现价值2,400万美元的股份,持股量减至约25万股,仅仅符合Intel要求他的最低持股数量。但时间亦十分巧合,在他出售股份之后的1个月左右,公司产品却被发现存在严重漏洞。

1月2日,英国媒体揭发Intel处理器有重大设计漏洞,或可能引发私隐外泄。《Business Insider》报道,Google已在去年6月通知Intel有关缺陷,意味着克尔扎尼奇在出售公司股份之前,早已得悉上述问题,或违反《证券交易法》的内幕交易条例。

据悉,Intel处理器芯片存有一个根本性设计缺陷,迫使Windows、Linux内核需要进行大规模重新设计,以解决芯片级安全漏洞。该漏洞能够让黑客窃取存储在PC等个人设备存储芯片,以及数据中心服务器上的数据。此外它还能让黑客窃取存储在芯片内存中的信息,如密码和缓存文件等。并且,该漏洞还能让黑客弱化其他的安全功能。英特尔的这个漏洞获得了一个“保护期”,即漏洞信息尚未在网络上被公开,英特尔、微软、苹果等公司正在研究解决办法。

截至目前,美国证券交易委员会(SEC)对是否将调查克尔扎尼奇套现涉及内幕交易一事未予置评。

不过,Intel代表发声明,指克尔扎尼奇出售股份与产品设计漏洞无关,纯属个人资产转换。英特尔发言人对此表示,克尔扎尼奇的套现属于常规股票交易计划的一部分,与近期爆发的芯片漏洞事件无任何关联。该发言人在声明中表示:“克尔扎尼奇抛售持股与芯片漏洞没有关系。他继续按照公司准则的要求持有股票。”

为避免被指控存有内幕交易行为,企业高管通常会依据RULE 10B5-1出售计划,提前制定持股抛售计划,并按照预先确定的时间表,自动抛售所持的部分公司股票或执行部分股票期权。根据英特尔提交给美国证券交易委员会的报告显示,克尔扎尼奇去年11月抛售的245,743股公司股票,以及执行644,135股股票期权,正是通过类似的抛售计划完成。

CPU 漏洞熔断与幽灵深度解读

1月4日,国外安全研究机构公布了两组CPU漏洞:

Meltdown(熔断),对应漏洞CVE-2017-5754

Spectre(幽灵),对应漏洞CVE-2017-5753/CVE-2017-5715

由于漏洞严重而且影响范围广泛,引起了全球的关注。利用Meltdown漏洞,低权限用户可以访问内核的内容,获取本地操作系统底层的信息;当用户通过浏览器访问了包含Spectre恶意利用程序的网站时,用户的如帐号,密码,邮箱等个人隐私信息可能会被泄漏;在云服务场景中,利用Spectre可以突破用户间的隔离,窃取其他用户的数据。Meltdown漏洞影响几乎所有的Intel CPU和部分ARM CPU,而Spectre则影响所有的Intel CPU和AMD CPU,以及主流的ARM CPU。从个人电脑、服务器、云计算机服务器到移动端的智能手机,都受到这两组硬件漏洞的影响。

这两组漏洞来源于芯片厂商为了提高CPU性能而引入的新特性。现代CPU为了提高处理性能,会采用乱序执行(Out-of-Order Execution)和预测执行(SpeculativePrediction)。乱序执行是指CPU并不是严格按照指令的顺序串行执行,而是根据相关性对指令进行分组并行执行,最后汇总处理各组指令执行的结果。预测执行是CPU根据当前掌握的信息预测某个条件判断的结果,然后选择对应的分支提前执行。乱序执行和预测执行在遇到异常或发现分支预测错误时,CPU会丢弃之前执行的结果,将CPU的状态恢复到乱序执行或预测执行前的正确状态,然后选择对应正确的指令继续执行。这种异常处理机制保证了程序能够正确的执行,但是问题在于,CPU恢复状态时并不会恢复CPU缓存的内容,而这两组漏洞正是利用了这一设计上的缺陷进行测信道攻击。


2017年1月4日,国外安全研究机构公布了两组CPU漏洞:
Meltdown(熔断),对应漏洞CVE-2017-5754
Spectre(幽灵),对应漏洞CVE-2017-5753/CVE-2017-5715

由于漏洞严重而且影响范围广泛,引起了全球的关注。利用Meltdown漏洞,低权限用户可以访问内核的内容,获取本地操作系统底层的信息;当用户通过浏览器访问了包含Spectre恶意利用程序的网站时,用户的如帐号,密码,邮箱等个人隐私信息可能会被泄漏;在云服务场景中,利用Spectre可以突破用户间的隔离,窃取其他用户的数据。Meltdown漏洞影响几乎所有的Intel CPU和部分ARM CPU,而Spectre则影响所有的Intel CPU和AMD CPU,以及主流的ARM CPU。从个人电脑、服务器、云计算机服务器到移动端的智能手机,都受到这两组硬件漏洞的影响。

这两组漏洞来源于芯片厂商为了提高CPU性能而引入的新特性。现代CPU为了提高处理性能,会采用乱序执行(Out-of-Order Execution)和预测执行(SpeculativePrediction)。乱序执行是指CPU并不是严格按照指令的顺序串行执行,而是根据相关性对指令进行分组并行执行,最后汇总处理各组指令执行的结果。预测执行是CPU根据当前掌握的信息预测某个条件判断的结果,然后选择对应的分支提前执行。乱序执行和预测执行在遇到异常或发现分支预测错误时,CPU会丢弃之前执行的结果,将CPU的状态恢复到乱序执行或预测执行前的正确状态,然后选择对应正确的指令继续执行。这种异常处理机制保证了程序能够正确的执行,但是问题在于,CPU恢复状态时并不会恢复CPU缓存的内容,而这两组漏洞正是利用了这一设计上的缺陷进行测信道攻击。

1、Meltdown漏洞原理

乱序执行可以简单的分为三个阶段,如下图所示:

每个阶段执行的操作如下:

1)获取指令,解码后存放到执行缓冲区Reservations Stations

2)乱序执行指令,结果保存在一个结果序列中

3)退休期Retired Circle,重新排列结果序列及安全检查(如地址访问的权限检查),提交结果到寄存器

结合Meltdown利用的代码片段来看:
; rcx = kernel address
; rbx = probe array
mov al, byte [rcx]
shl rax, 0xc
mov rbx, qword [rbx + rax]

Meltdown漏洞的利用过程有4个步骤:

1)指令获取解码

2)乱序执行3条指令,指令2和指令3要等指令1中的读取内存地址的内容完成后才开始执行,指令3会将要访问的rbx数组元素所在的页加载到CPU Cache中。

3)对2)的结果进行重新排列,对1-3条指令进行安全检测,发现访问违例,会丢弃当前执行的所有结果,恢复CPU状态到乱序执行之前的状态,但是并不会恢复CPU Cache的状态

4)通过缓存测信道攻击,可以知道哪一个数组元素被访问过,也即对应的内存页存放在CPU Cache中,从而推测出内核地址的内容

2、Spectre漏洞原理

与Meltdown类似,Spectre的原理是,当CPU发现分支预测错误时会丢弃分支执行的结果,恢复CPU的状态,但是不会恢复CPU Cache的状态,利用这一点可以突破进程间的访问限制(如浏览器沙箱)获取其他进程的数据。

Spectre的利用代码片段:
if (x < array1_size) {
y = array2[array1[x] * 256];
// do something using Y that is
// observable when speculatively executed
}

具体攻击过程可以分为三个阶段:

1)训练CPU的分支预测单元使其在运行利用代码时会进行特定的预测执行

2)预测执行使得CPU将要访问的地址的内容读取到CPU Cache中

3)通过缓存测信道攻击,可以知道哪一个数组元素被访问过,也即对应的内存页存放在CPU Cache中,从而推测出地址的内容。

Linus Torvalds 批英特尔避重就轻,没承认问题

研究人员接触那些漏洞已经有一年多的时间。2016年8月,在拉斯维加斯的 Black Hat 网络安全大会上,两位研究者安德斯·福格(Anders Fogh)和丹尼尔·格拉斯(Daniel Gruss)演示了漏洞的早期迹象。福格在去年7月还就此发表博文,鼓励其他的研究者去展开调查。

与此同时,谷歌内部的安全研究团队 Project Zero 的雅恩·霍恩(Jann Horn)早已揭开该问题,并通知了英特尔。最终,来自全球各地的三个其它的研究团队就同样的问题联系英特尔,英特尔接着与他们一道交流和撰写论文。其中一位研究者丹尼尔·格恩金(Daniel Genkin)指出,他们发现芯片的漏洞可追溯到2010年,并认为那些问题甚至可追溯到更久以前。“带来这种漏洞的通用架构原则有几十年历史了,”他说,“我没有去启动一台来自1995年的电脑探个究竟,但那些原则那时候就存在。”

福格说道,研究人员之所以同时发现同样的长期漏洞,是因为此前的研究打下了基础,其中包括他在2016年的演示。那为什么英特尔没有更早发现漏洞呢?“好问题,我还真回答不了。”他说。

英特尔数据中心工程副总裁史蒂芬·史密斯(Stephen Smith)指出,公司一直以来都在设法提升它的产品安全性。监管文件显示,在英特尔与合作伙伴们一起努力解决问题期间,英特尔 CEO 布莱恩·科兹安尼克(Brian Krzanich)在去年11月出售他的公司股票和期权套现 2400 万美元,保留了 25 万股股票,从该公司最近的代理委托书来看,那是公司对他的最低持股量要求。

英特尔发言人表示,那次售股与此次安全问题无关,是依照预先安排的、带有自动出售时间表的计划。英特尔和由科技公司和研究者组成的大联盟计划在1月9日对外披露漏洞问题。但本周,科技新闻网站 The Register 在跟踪研究该漏洞的补丁的程序员的在线讨论后率先进行了曝光。英特尔、AMD 和 ARM 事先通知了部分大客户,但 The Register 的报道让小公司措手不及。云计算提供商 DigitalOcean 的首席安全官约什·芬布鲁姆(Josh Feinblum)上周末从同行那里获悉漏洞问题。他说,他一直在尽可能快速地修复他的系统,对于目前的成果感到满意。

“Linux之父”林纳斯·托瓦兹(Linus Torvalds)批评英特尔没有承认问题,最初说芯片按照预想运行。“我认为,英特尔内部的某个人需要认真审视他们的 CPU 问题,承认它们存在问题,而不是撰写公关文章大肆宣称一切都如计划发展。”他在周三致参与 Linux 内核开发的程序员的电子邮件中写道。怀特表示,虽然英特尔在事件的披露方面做得乱七八糟,但考虑到事情的性质和影响范围,该公司“或许还算处理得不错。”他说道,研究人员称部分补丁的开发“涉及一些新的计算机科学领域。”“该项工作非常复杂,复杂到令人惊异。”

该事件让人们担心,基于那些新发现的漏洞展开的攻击,可能已经发生了好几年,却未被发现。部分技术人员认为,这种情况可能性不大,因为那需要有复杂的黑客技术。例如,谷歌方面称它没能找到办法去利用 Android 手机中的漏洞,但考虑到有人或许能够利用的风险,它还是为那些设备提供安全补丁。其他人表示,如果白帽黑客——发现及修补安全漏洞的合法黑客——能够发现漏洞,那么为非作歹的黑帽黑客也能够发现。怀特指出,随着漏洞问题如今被曝光,用户也要保护好自己。“这些是非常复杂的攻击,需要各种背景知识和理解。”他说,“但它一旦出现,就会转变成代码攻击。”


以往只要有重大安全漏洞爆出,受影响的用户都会第一时间去更新,去修复漏洞,以避免自家的应用服务安全受影响,但是这次的 CPU 重大漏洞“熔断”和“幽灵”却不同,虽然受波及的 CPU、云、操作系统厂商同样第一时间更新并修复了漏洞,但更多人会担心,万一更新后,大幅影响 CPU 的性能,对于执行应用任务带来的冲击,不是更新就能解决的问题,而且根据数据库 PostgreSQL 网站的测试显示,最极端的情况性能已下降超过 20%。

对此,记者向英特尔求证,对方回复依目前测出的数据显示,针对笔记本电脑用的处理器更新后,造成的性能下降最多有到 4%,而在服务器方面也有 2% 的性能下降。英特尔等 CPU 大厂被爆出处理器出现重大漏洞后,不少硬件厂商、操作系统,云服务提供商都在第一时间释出更新以修复漏洞,不过因为目前大多数采用的补救方式,就是在操作系统层级修复这项错误,完全隔开内核与使用者程序的内存位置,虽然这可以缓解漏洞的影响,但却容易造成性能的下降,数据库 PostgreSQL 更是在官网公开了测试结果,显示当使用修补过后的 Linux 内核,性能下降高达 17% 到 23%。

英特尔在网站公开的 Q&A 问答中也证实,修补后多少会影响到 CPU 的工作性能,但对于性能的影响程度并无太多说明,记者写信向英特尔美国总部咨询,不久后对方也给出正式回应,并提供目前内部针对笔记本电脑与服务器处理器性能测试的数据,以用作对照。根据英特尔的测试数据显示,以最新一款笔记本电脑专用的 Kaby Lake Refresh 处理器为例,搭配 Windows 操作系统,在硬件测试基准工具 Sysmark 2014 上测得的结果,相比未更新修复前的整体分数,降幅约在 3% 以内,相同条件下,另一个 CPU 基准测试工具 SPECfp 的测试结果也没有太大差异,大约是在 4% 以内。对于另外一台 Skylake 服务器,搭配 Linux 操作系统,在 TPC-C 基准测试中,对 CPU 性能的整体影响约在 2% 以内。另外在 SPECint,SPECfp,LINPACK,Stream OMP 以及 MLC 的基准测试中,都只受 nominal impacts 的影响。

英特尔解释道,使用更新进行修复后,对 CPU 性能的影响程度,视采用的处理器和相关软硬件平台配置而有所不同。英特尔另外补充,利用 DPDK(Data Plane Development Kit)工具增加缓存加速网路上对封包的处理速度,也会影响测试的结果,并且在相同 CPU 平台配置环境下,采用不同的 I/O 接口基准进行测试,也同样会影响测试的结果,可能有等于或超过 20% 的实质回归(substantive regression)的结果差异。

根据 PCWorld 的引述,英特尔在最近一次电话会议上对于性能影响有更多的补充说明。英特尔高层表示,这次漏洞的更新修复,对于用户运用于一般应用任务的处理影响较轻微,性能降低约为 0 或到 2% 不等,但是对于极度依赖应用程序与操作系统之间的大量互动的复合式工作负载(synthetic workloads),修复漏洞造成的性能冲击就会很大,下降可能达 30% 之多。

Intel 处理器再曝漏洞 TLBleed:超线程技术惹祸

此前,英特尔处理器曾被曝出“幽灵”(Spectre)和“熔断”(Meltdown)两大漏洞,并且受影响的用户非常广泛。随后,Intel 又公布了一个新的漏洞,它影响了大部分酷睿处理器,使其成为类似于 Spectre 和 Meltdown 的旁路攻击的目标。该漏洞被称为 Lazy FP 状态还原(CVE-2018-3665),这一漏洞使得恶意程序能够读取其他进程正在使用的数据,允许进程推断出属于其他进程的 FPU/MMX/SSE/AVX 寄存器的内容。

发现此漏洞的安全研究人员 Colin Percival 说,与之相关的主要风险在于 AES 加密密钥通常存储在 FPU 的 流式 SIMD 扩展(SSE)寄存器中。尽管 Percival 只花了五个小时来编写漏洞利用代码,他表示,远程利用漏洞要比 Meltdown 困难得多:
你需要能够在与目标进程相同的 CPU 上执行代码,以此方式窃取加密密钥。 你还需要在 CPU 管道完成之前按一定的顺序执行特定操作,因此执行的窗口很窄。

漏洞曝出后,英特尔表示“未来几周”提供更新,英特尔或者其他硬件厂商都相继为产品推送了修复补丁,但也带来了或多或少的性能下降的问题。然而让人意外的是,在英特尔承诺的“未来几周”的更新周期里,处理器又被曝出了新的漏洞,这个漏洞被称作 TLBleed,因为它利用了处理器的转换索引缓冲区(TLB)。阿姆斯特丹自由大学系统和网络安全部门研究人员称,这是一个危急安全漏洞,不像 Specter 和 Meltdown,它不依赖投机执行,而是利用公司的超线程技术。但是,英特尔不会发布任何补丁。

TLBleed 漏洞利用英特尔超线程技术,启用此技术后,每个内核可以同时执行多个线程(通常是两个线程)。这些线程共享内核中的资源,包括内存缓存和 TLB。当两个程序在同一个内核中运行时,其中一个线程可以通过检查其访问 CPU 专用资源的方式来监视另一个线程,因此,根据这些观察,可以获取另一个线程上的加密内容。

上周,开源操作系统 OpenBSD 的开发人员禁用了英特尔处理器上的超线程技术,以防止此漏洞。项目负责人 Theo de Raadt 将于今年八月在黑帽大会上发表一篇研究论文,这将揭示为什么他们会做出改变。英特尔似乎对 TLBleed 带来的任何潜在威胁漠不关心。它没有为这个漏洞请求一个 CVE 编号,甚至拒绝向研究人员(通过 HackerOne)颁发发现 bug 奖金。甚至有人感叹:《超线程已经玩完?》。

禁用超线程才能完全缓解 ZombieLoad,但性能下降高达 40%


2019年5月Intel 曝出影响 2011 年以来几乎所有芯片的漏洞 ZombieLoad,利用该漏洞,攻击者可以对芯片发起边信道攻击,在同一 CPU 上执行恶意进程,进而获取 CPU 的微架构缓冲器中的存储器内容。攻击者可以访问存储缓冲区,加载端口并填充缓冲区的陈旧内容,这些缓冲区可能包含属于另一个进程的数据或源自不同安全上下文的数据。因此,在用户空间进程之间、内核与用户空间之间、虚拟机之间或虚拟机与主机环境之间可能都会发生意外的内存泄露。

ZombieLoad 与其它推测性执行边信道攻击不同,因为攻击者无法定位特定数据。攻击者可以定期对缓冲区中的内容进行采样,但是在采集样本时无法控制缓冲区中存在的数据。因此,需要额外的工作来将数据收集并重建为有意义的数据集。这也是 ZombieLoad 比较复杂的地方。

虽然 ZombieLoad 得到有价值数据的成本比较高,但是各大公司都十分重视这个漏洞,毕竟它影响了 2011 年以来几乎所有芯片,打击范围十分广泛。

Intel 自己已经发布了微代码,从架构上缓解该问题,其它科技公司如苹果、微软与谷歌也都相继发布了补丁。但同时也有一些公司认为光有补丁并没有什么作用,比如 Red Hat 认为在云场景上 ZombieLoad 危险很大,因为你完全无法控制相邻虚拟机中的用户正在运行的内容,云安全公司 Twistlock 的首席技术官 John Morello 也指出:“这个漏洞可能对密集型的、多租户的公有云提供商产生最大的影响。”

另一边,Ubuntu 目前也已经给出了补丁,但是其在安全公告中表示,如果用户系统中有不受信任或潜在的恶意代码,则建议其禁用超线程功能

如果您的处理器不支持超线程(也称为对称多线程(SMT)),则内核和相应的 Intel 微代码软件包更新将完全解决 MDS(ZombieLoad)漏洞。如果您的处理器支持超线程并且启用了超线程,则 MDS 不会完全缓解。

所以,如果想要完全缓解漏洞,你需要暂时放弃 CPU 的超线程能力。事实上,苹果和谷歌都已经警告 macOS 和 Chrome OS 用户禁用超线程可获得全面保护,并且谷歌现在默认从 Chrome OS 74 开始禁用超线程。但是禁用超线程的性能代价实在有点高,结合对比一下 ZombieLoad 微代码与补丁对系统性能影响的数据:

Intel 发言人表示,大部分打过补丁的设备在最坏的情况下可能会受到 3% 的性能影响,而在数据中心环境中可能会是 9%。另一边,PostgreSQL 基准测试发现,禁用超线程后,性能下降了近 40%;Ngnix 基准测试的性能下降了约 34%;ZombieLoad 的研究人员表示禁用超线程会使某些工作负载的性能下降 30% 至 40%。

安全还是性能,如何选择呢?

Linus 再次怒喷 Intel

2020年7月15日消息,自上个月严辞拒绝 Intel 安全漏洞相关补丁之后,Linus Torvalds 再次对 Intel 开喷,直言 “我希望 AVX-512 赶紧‘去死’ ”,脾气一如既往的暴躁。

近日,Linux 内核维护者 Linus Torvalds 对 Intel 的 Advanced Vector Extensions 512(AVX-512)指令集提出了一些激进的看法,称其为“功率病毒”,其创建目的单纯只是为了使 Intel 公司的 CPU 硬件在基准测试中跑分更高。此外,Linus 还坦承了自己“脾气暴躁”,并且对 Intel 确实“有偏见”。

AVX-512 是 Intel 公司在 2013 年发布的一套扩展指令集,其指令宽度扩展为 512 bit,每个时钟周期内可执行 32 次双精度或 64 次单精度浮点(FP)运算,专门针对图像/音视频处理、数据分析、科学计算、数据加密和压缩和深度学习等大规模运算需求的应用场景。

事情的经过是 Intel 近日曝出了关于下一代 CPU 将采用大小核芯片设计的细节,搭载这项技术的 Alder Lake 系列处理器将于明年正式推出。知名 Linux 技术网站 Phoronix 跟进了这则消息,并透露 Alder Lake 将限制 AVX-512 等大型扩展指令集,仅完全支持 AVX-2 和其他轻量级的扩展指令集。如此一来,芯片大核的数据吞吐量和时钟频率更高,同时小核的能效更加显著。也就是说,Intel 限制了某些指令集(比如 AVX-512/TSX/FP16)只能在大核上运行。

Linus 本人看到了这篇文章,并在该文章的讨论中发表了自己的观点:

我希望 AVX-512 赶紧“去死”(dies a painful death),这样 Intel 就可以开始解决实际的问题,而不是去尝试创造这些花里胡哨的指令集,然后围绕它们做一些自欺欺人的基准测试。 我希望 Intel 能够返璞归真:让他们的进程再次正常运行,更多地专注于提升用户基本体验的常规代码,而不是纠结于所谓的高性能运算或一些毫无意义的特殊情况下才会出现的问题。 我之前已经说过这一点,我会再说一遍:在 x86 的鼎盛时期,当 Intel 一直向银行大笑并杀死所有竞争对手时,在 FP 负载方面,其他厂商绝对都比 Intel 做得更好。Intel 的 FP 性能(相对而言)总是略逊一筹,但大家似乎都忽视了这一点。

因为所有人都只在乎所谓的基准测试跑分结果。 不论是现在还是将来,AVX-512 的情况是不会改变的,是的,你们可以在 AVX-512 上找到需要的东西,但那些东西并不会带来你们预期的收获。AVX-512 具有很明显的缺点,我宁愿看到这些 CPU 芯片的性能用于其他更相关的事情。即使仍然要做 FP 运算(我宁可它们发生在 GPU 中,而不是在 AVX-512中),或者像 AMD 那样给我更多的内核(具有良好的单线程性能,但没有像 AVX-512 这样的垃圾)。

我希望使用常规的整数代码来达到功率的极限,而不是使用某些像 AVX-512 这样的“功率病毒”来达到最高频率(因为人们最终还是要用它来跑 memcpy 的!),但这占据了大量的内核资源(因为那些无用的垃圾单元占用了空间)。 是的,是的,我承认我有偏见。我非常讨厌 FP 基准测试,尽管我意识到其他人会深切关注这玩意儿。我只是认为 AVX-512 的存在完全是个错误,是我绝对不能忍受的事情。这是 Intel 犯下的一个错误的案例,这将导致市场碎片化加剧。停止使用这种只适用于特殊情况的垃圾,让所有人都在乎的系统核心尽其所能地运行好其基本的性能。然后做一个专为这些特殊情况准备的 “FPU”,这样所有人都会很高兴的。AVX-2 真的已经绰绰有余了。

是的,我的脾气就是这么暴躁。

—— Linus Torvalds

总而言之,Linus 认为 Intel 为了提高 CPU 的性能跑分,强行在 CPU 中塞入了像 AVX-512 这样的东西,导致 CPU 内核臃肿,为了提升少数特定使用场景下的运算性能而影响了大部分普通用户的使用体验。早前有传闻称,Intel 可能放弃对 AVX-512 的支持,但 Alder Lake 仍然没有砍掉,只是将 AVX-512 限制在了大核中。事实上,该扩展指令集对主流家用台式机市场的影响确实不大,但可能对数据中心和移动设备(或任何计算负载剧烈波动的场景)产生较大的影响。

Intel 于 2013 年推出了 AVX-512,其最初只是 Xeon Phi x200 和 Skylake-X 处理器产品线的一部分。但现在 AVX-512 已经进入包括 Ice Lack 在内的诸多 Intel 旗下的主流 CPU 架构。 值得一提的是,这早已不是 Linus 第一次冲 Intel 发飙。2018 年初,为了修补 Spectre 漏洞,Intel 工程师提供了一个间接分支限制推测(indirect branch restricted speculation, IBRS)功能的补丁。Linus 当时就在邮件列表中公开指出 IBRS 会造成系统性能大幅降低,直言该补丁“就是彻彻底底的垃圾”,“Intel 真的要做这个 X 一样的东西?” 。

上个月,Linus 还严辞拒绝了 AWS 工程师提交的一个关于修复 Intel 安全漏洞的补丁,并嘲讽其 “像一朵矫情的花一样”。 一直以来,Linus 都在抗议 Intel 把 CPU 核心做得越来越臃肿冗杂。

2020年8月24日,Intel 回应 Linus 对 AVX-512 的批评。Intel 首席架构师 Raja Koduri 在回应中说,社区之所以喜欢 AVX-512,是因为它可以带来巨大的性能提升,并且 Intel 有义务在其产品组合中提供它。“AVX-512 是一个很棒的功能,我们的 HPC 社区、AI 社区都喜欢它。我们的数据中心客户也非常喜欢它。”

同时 Raja 还指出,使用 AVX-512 指令集 Intel 帮助客户实现了 285 倍的性能提升。Raja 承认 Linus 的部分批评可能是有道理的,但他表示对 AVX512 等指令集的批评并不会改变 Intel 的方向。详情可以查看 pcworld 上的原文

Linus 2021年第一怼:英特尔正在扼杀整个 ECC 产业

2021年元旦之际,Linus Torvalds 一则有关 ECC 内存的帖子又引起了技术社区的广泛关注与讨论。在其中,Linus 谈到了 ECC 内存的重要性,并抨击了英特尔在这方面所施行的一些“坏政策”。

ECC 绝对重要。而英特尔在扼杀整个 ECC 产业方面起到了重要作用,它的市场细分策略非常糟糕。

Linus 在与网友的讨论中表示,“鉴于该公司针对 ECC 的错误政策,英特尔对整个行业和用户都是有害的。说真的......反对 ECC 的论点一直都是完全的垃圾......现在,即使是内存制造商也开始在内部做 ECC,因为他们终于承认了一个事实,那就是他们绝对必须这样做。而内存制造商声称这是因为经济和低功率。他们都是说谎的混蛋,这些问题已经存在了好几代了,但这些操蛋的家伙却乐此不疲地把坏掉的硬件卖给消费者,并声称这是一种'attack'。让我来翻译一下,这句话的实际意思就是‘我们一直在偷工减料’”。

与此同时,Linus 还赞扬了 AMD 在 ECC 内存方面的表现。"'现代 DRAM 非常可靠,不需要 ECC',这句话一直都是小孩子的睡前故事,它翻车的次数也不是一次两次了。是的,我为此很生气。你可以找到我抱怨这个的字面意思,已经几十年了。我不想说'我是对的'。我希望这个问题得到解决,我希望有 ECC,而 AMD 做到了,英特尔没有。"

Linus 赞赏了 AMD 更广泛地支持 ECC 内存的举措,尤其是在消费类台式机硬件上配备的这一行为。并指出,他并不觉得 AMD 的非官方 ECC 支持有什么大不了的。“对 AMD 来说,‘非官方’的这一事实并不重要。因为它是有效的,而且它让市场开始自我修复(诚然可能非常缓慢)。”

“但我责怪英特尔,因为他们是行业中的大头,是他们导致 ECC 市场在几十年内基本崩溃。当年 ECC DRAM(或只是奇偶校验)曾经是标准性的,很容易获得。ECC 和奇偶校验并不是一个新事物。它简直是被英特尔的坏政策害死的。不要听信别人说的 DRAM 变得如何如何可靠,以至于不需要它的言论。这是从来都没有过的事实。”

事实上,英特尔也不是第一次被 Linus 怒怼了。2020年 7 月,Linus 就因 AVX-512 问题怒喷英特尔,并直言“去死”;同年 5 月,Linus 还宣布 15 年来首次放弃 Intel,将其主 PC 升级为基于 AMD Threadripper 3970x 的快速处理器。

x86 CPU受Hertzbleed的攻击


2022年6月中旬消息,一项最新安全研究表明:在一种名为Hertzbleed的攻击方式之下,黑客可以从远程服务器中直接窃取加密密钥。无论是英特尔还是AMD CPU,都不能幸免。

英特尔:全部。

AMD:


研究来自德州大学奥斯汀分校和伊利诺伊大学香槟分校等研究机构,相关论文一经发出便引发热议。具体情况大致如下。

针对DVFS的攻击

在密码学中,功耗分析是一种早已有之的侧信道攻击方式。

举个例子,通过测量芯片在处理数据时消耗的功率,黑客就能提取出这部分加密数据。好在功率分析基本上不能远程实现,攻击手段较为有限。但在Hertzbleed中,研究人员发现,利用动态电压频率缩放(DVFS),电源侧信道攻击就可以被转变成远程攻击!而DVFS,正是各大厂商目前用来降低CPU功耗的一项重要功能。

具体而言,研究人员在实验中发现,在某些情况下,x86处理器的动态频率缩放取决于正在处理的数据,其颗粒度为毫秒。这就是说,DVFS引起的CPU频率变化,是可以直接和数据处理功耗挂上钩的。由于CPU频率的差异可以转换为实际发生时间的差异,通过监控服务器的响应时间,攻击者就能够远程观察到这种变化。


在论文中,研究所人员在运行SIKE(一种加密算法)的服务器上测试了Hertzbleed。

结果显示,在未经优化的攻击版本中,他们分别在36小时和89小时内,完全提取出了Cloudflare加密库CIRCL和微软PQCrypto-SIDH中的全部密钥。

英特尔与AMD:不发补丁了

研究人员表示,已在2021年第三季度向英特尔、Cloudflare和微软披露了这项研究。2022年第一季度,他们也同AMD进行了沟通。不过英特尔和AMD都不打算对此发布补丁。英特尔安全通信和事件响应高级总监Jerry Bryant认为:虽然从研究的角度来看这个问题很有趣,但我们认为这种攻击在实验室环境之外并不可行。英特尔将该漏洞的危害程度定为中等。但英特尔在公告中也提到:正在发布解决此潜在漏洞的指南。而微软和Cloudflare方面,则都对加密代码库进行了更新。

研究人员估计,这些更新分别让CIRCL和PQCrypto-SIDH的解封装性能开销增加了5%和11%。

他们提到,禁用频率提升功能,即英特尔的“Turbo Boost”、AMD的“Turbo Core”等,可以缓解Hertzbleed带来的问题,但这会对系统性能产生糟糕的影响。另外有意思的一点是,研究人员透露,英特尔虽然没发补丁,但曾要求他们延缓公布调查结果。

部分英特尔 CPU 存在严重网络安全风险

2023年4月25日消息,马里兰大学和清华大学的网络安全研究人员以及中国教育部 (BUPT) 的一个实验室发现了一种适用于英特尔 CPU 的侧信道攻击漏洞,有点类似于 Meltdown,可能导致敏感数据泄露。该团队在 Arxiv.org 上发表的一篇论文中提到,这种攻击利用了瞬态执行中的一个缺陷,“使得通过定时分析从用户内存空间中提取秘密数据成为可能”,瞬态执行中 EFLAGS 寄存器的变化会影响条件码跳转 (JCC) 指令的时序。

这里提到的 FLAGS 寄存器一般被称为“包含 x86 CPU 当前状态的状态寄存器”,而 JCC 是基于 EFLAGS 寄存器内容的“允许条件分支的 CPU 指令”。简单来说,要想利用这个漏洞实现攻击,首先应该通过 EFLAGS 寄存器触发(包含秘密数据)编码的瞬态执行,然后测量 JCC 指令的执行时间来获取该编码数据的内容。


攻击概述,图源自:arxiv.org

上述研究人员已经在多种芯片上测试了这个漏洞,发现它在 i7-6700 和 i7-7700 上“100% 成功”,在 i9-10980XE 上“部分成功”(测试平台基于 Ubuntu 22.04 jammy,Linux 内核版本 515.0)。


用于计时瞬态执行攻击的伪代码

研究人员发现,为了在新芯片上获得更高的一致性,攻击需要运行数千次。不过他们目前还不清楚是什么原因导致了这个 Bug。“在我们的实验中发现 EFLAGS 寄存器对 Jcc 指令执行时间的影响并不像缓存状态那样持久,”研究人员提到,“在瞬态执行后的大约 6-9 个周期内,Jcc 执行时间将不会构建边信道。根据经验,攻击需要重复数千次才能获得更高的准确性。”

Downfall 安全漏洞影响英特尔第 6~11 代 CPU

2023年8月上旬,英特尔披露了一个名为 "Downfall" 的安全漏洞,该漏洞由第三方研究人员 Daniel Moghimi 发现。据介绍,"Downfall" 利用 “Gather Data Sampling” 从计算机上窃取其他用户的数据和敏感信息,影响多款酷睿处理器,横跨第 6 代的 Skylake 至第 11 代的 Rocket Lake 和 Tiger Lake。


目前英特尔已在安全公告 INTEL-SA-00828 中公布了该漏洞,追踪编号为 “CVE-2022-40982”。

Daniel Moghimi 是谷歌的高级研究科学家,在 downfall.page 上发布了 “Downfall” 安全漏洞的详细信息,并展示了如何从其他用户那里窃取 128 位和 256 位 AES 密钥的演示,以及如何监视输入的字符和从 Linux 内核中获取数据。他表示:“这是由英特尔处理器的内存优化功能造成的,会无意中将内部硬件寄存器泄露给了软件,使得不受信任的软件可以访问其他程序存储的数据,而这些数据通常是不可以访问的。后来我发现,Gather 指令(旨在加快访问内存中的分散数据)在推测执行期间泄露了内部矢量寄存器文件的内容。”


在 Daniel Moghimi 看来,即便用户没有使用英特尔的平台,也可能会受到影响。毕竟英特尔在服务器市场有着主导地位,意味着每个连接互联网的用户都可能会受到威胁,随着云端服务变得更加普遍,完全可能恶意利用 “Downfall” 安全漏洞从共享的计算机处窃取其他用户的数据和凭证。

目前英特尔正在为受影响的芯片发布新的微码,并建议用户更新到系统制造商提供的最新版本固件,以解决这些问题。