如何缓解Linux系统上的Spectre和Meltdown漏洞?


34

安全研究人员在零号项目上发布了一个名为Spectre and Meltdown的新漏洞,该漏洞使程序可以从其他程序的内存中窃取信息。它会影响英特尔,AMD和ARM体系结构。

可以通过访问JavaScript网站来远程利用此缺陷。技术细节上可以找到redhat的网站Ubuntu的安全团队

通过推测性执行侧通道攻击的信息泄漏(CVE-2017-5715,CVE-2017-5753,CVE-2017-5754亦称为Spectre and Meltdown)

人们发现,一类新型的边信道攻击会影响大多数处理器,包括Intel,AMD和ARM的处理器。该攻击允许恶意用户空间进程读取内核内存,并允许来宾中的恶意代码读取虚拟机监控程序内存。为解决此问题,将需要更新Ubuntu内核和处理器微代码。这些更新将在以后的《 Ubuntu安全公告》中宣布。

JavaScript中的示例实现

作为概念验证,编写了JavaScript代码,该代码在Google Chrome浏览器中运行时允许JavaScript从其运行过程中读取私有内存。

我的系统似乎受到幽灵漏洞的影响。我已经编译并执行了这个概念证明(spectre.c)。

系统信息:

$ uname -a
4.13.0-0.bpo.1-amd64 #1 SMP Debian 4.13.13-1~bpo9+1 (2017-11-22) x86_64 GNU/Linux

$ cat /proc/cpuinfo
model name  : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz

$gcc --version
gcc (Debian 6.3.0-18) 6.3.0 20170516

如何缓解Linux系统上的Spectre和Meldown漏洞?

进一步阅读:使用Meltdown实时窃取密码

更新资料

@Carlos Pasqualini回答Spectre & Meltdown Checker之后,请使用之后切换到4.9.0-5内核版本的原因,因为可以使用安全更新来缓解debian Stretch上的cve-2017-5754:

CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel:  NO  (only 31 opcodes found, should be >= 70)
> STATUS:  VULNERABLE  (heuristic to be improved when official patches become available)

CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
*   Hardware (CPU microcode) support for mitigation:  NO 
*   Kernel support for IBRS:  NO 
*   IBRS enabled for Kernel space:  NO 
*   IBRS enabled for User space:  NO 
* Mitigation 2
*   Kernel compiled with retpoline option:  NO 
*   Kernel compiled with a retpoline-aware compiler:  NO 
> STATUS:  VULNERABLE  (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)

CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  YES 
* PTI enabled and active:  YES 
> STATUS:  NOT VULNERABLE  (PTI mitigates the vulnerability)

更新2018年1月25日

spectre-meltdown-checker脚本由debian正式打包,可通过backports仓库,Buster和Sid用于Debian Stretch

更新 05/22/2018

推测存储绕过(SSB)–也称为变体4

在已知所有先前存储器写入的地址之前具有利用存储器读取的推测执行和推测执行的微处理器的系统可以允许通过副信道分析通过本地用户访问向攻击者未经授权地公开信息。

流氓系统寄存器读取(RSRE)–也称为变体3a

具有利用推测性执行并且推测性读取系统寄存器的微处理器的系统可以允许通过侧信道分析通过本地用户访问向攻击者未经授权地泄露系统参数。

编辑2018年7月27日

NetSpectre:通过网络读取任意内存

在本文中,我们介绍了NetSpectre,这是一种基于Spectre变体1的新攻击,不需要目标设备上的攻击者控制代码,从而影响数十亿设备。与本地Spectre攻击类似,我们的远程攻击要求目标代码中存在Spectre小工具。我们显示,可以通过我们的通用远程Spectre攻击来攻击在裸露的网络接口或API中包含所需Spectre小工具的系统,从而允许通过网络读取任意内存。攻击者仅向受害者发送一系列精心设计的请求,并测量响应时间以从受害者的内存中泄漏秘密值。



1
我删除了Debian标记,以允许该Q应用于所有Linux(按标题);如果您打算仅将重点放在Debian上,请返回。
Jeff Schaller

Answers:


12

艾伦·考克斯(Alan Cox)分享了AMD博客的链接:https : //www.amd.com/en/corporate/speculative-execution

变体一:边界检查绕过

由软件/操作系统更新解决,以供系统供应商和制造商使用。预期的性能影响可忽略不计。

方案二:分支目标注入

AMD体系结构的差异意味着利用此变体的风险几乎为零。迄今为止,尚未在AMD处理器上证明对Variant 2的漏洞。

变体三:恶意数据缓存加载

由于AMD体系结构的差异,AMD漏洞为零。

不过,最好由第三方确认这些AMD的声明。

受影响的系统上的“缓解”将需要一个新的内核并重新启动,但是在许多发行版中,尚未发布具有修复程序的软件包:

Debian:

我发现的其他信息来源:


12
大量的AMD信息不会帮助CPU是Intel Core的提问者。
JdeBP '18年

4
对于Linux内核,请参阅Greg Kroah-Hartman的文章:kroah.com/log/blog/2018/01/06/meltdown-status
alanc

根据上面链接的debian页面(以及其中链接的页面),似乎内核补丁将在负责的供应商发布其微代码时分发。但是,从security-tracker.debian.org/tracker/CVE-2017-5754(到目前为止唯一的修复程序)看来,该修复程序仅适用于稳定版本和不稳定版本。有谁知道我们是否可以期望对oldstable(“ jessie”)进行修复?我未能找到Debian或Debian安全团队对此事的任何声明……
Shevek,

11

2018年1月27日,英特尔微码破坏了某些系统

旨在解决推测性执行分支安全漏洞的英特尔微码更新2018-01-08破坏了某些系统。从1月8日到1月21日,这影响了许多Ubuntu系统。在2018年1月22日,Ubuntu发布了一个更新,该更新将2017年7月7日之前的旧Microcode放回原处。

如果您遇到更新问题,请重新安装Ubuntu并在2018-01-08至2018-01-22之间关闭更新,您可能想再次尝试Ubuntu自动更新。

2018年1月16日更新了4.14.14和4.9.77中的Spectre

如果您已经在运行像我这样的内核版本4.14.13或4.9.76,那么安装它就很容易了,4.14.14并且4.9.77几天之内发布它们来缓解Spectre安全漏洞。此修复程序的名称是Retpoline,并且没有以前推测的严重性能下降

Greg Kroah-Hartman发送了针对Linux 4.9和4.14点发行版的最新补丁,其中包括Retpoline支持。

所有AMD / Intel CPU都启用了X86_FEATURE_RETPOLINE。为了获得全面支持,您还需要使用包含-mindirect-branch = thunk-extern支持的更新的GCC编译器来构建内核。GCC变更已于昨天在GCC 8.0中发布,并且有可能被反向移植到GCC 7.3中。

那些想要禁用Retpoline支持的用户可以使用noretpoline引导修补的内核。

在不深入了解JavaScript的情况下,这里是如何立即避免Meltdown漏洞的方法(以及2018年1月10日起的Spectre保护)

2018年1月12日更新

来自Spectre的初始保护已经到来,并将在数周和数月内得到改善。

Linux内核4.14.13、4.9.76 LTS和4.4.111 LTS

Softpedia的这篇文章中

现在可以从kernel.org下载Linux内核4.14.13、4.9.76 LTS和4.4.111 LTS,它们包括针对Spectre安全漏洞的更多修复程序以及Linux 4.14.12、4.9的一些回归。上周发布了.75 LTS和4.4.110 LTS内核,因为有些内核报告了一些小问题。

这些问题现在似乎已修复,因此可以安全地将基于Linux的操作系统更新为今天发布的新内核版本,其中包括更多x86更新,一些PA-RISC,s390和PowerPC(PPC)修复程序,以及驱动程序(Intel i915,crypto,IOMMU,MTD)以及通常的mm和核心内核更改。

许多用户在2018年1月4日和2018年1月10日有Ubuntu LTS更新的问题。我已经使用4.14.13了几天,没有任何问题,但是YMMV


2018年1月7日更新

Greg Kroah-Hartman昨天在Meltdown和Spectre Linux Kernel安全漏洞上写了状态更新。有人可能称他为Linux上仅次于Linus的第二大人物。本文介绍了大多数Ubuntu用户都拥有的稳定内核(下面讨论)和LTS内核。


Linux内核4.14.11、4.9.74、4.4.109、3.16.52和3.2.97修补程序崩溃缺陷

这篇文章

敦促用户立即更新其系统

2018年1月4日,格林尼治标准时间·Marius Nestor

Linux内核维护者Greg Kroah-Hartman和Ben Hutchings发布了Linux 4.14、4.9、4.4、3.16、3.18和3.12 LTS(长期支持)内核系列的新版本,这些系列显然修补了影响最现代的两个关键安全漏洞之一。处理器。

现在可以从kernel.org网站下载Linux 4.14.11、4.9.74、4.4.109、3.16.52、3.18.91和3.2.97内核,并敦促用户更新其GNU / Linux发行版如果这些新版本可以立即运行这些内核系列中的任何一个,则可以使用它们。为什么要更新?因为它们显然修补了称为Meltdown的严重漏洞。

如前所述,Meltdown和Spectre是两个漏洞,几乎影响了过去25年中发布的现代处理器(CPU)驱动的所有设备。是的,这意味着几乎所有的手机和个人计算机。非特权攻击者可以利用Meltdown恶意获取存储在内核内存中的敏感信息。

补丁幽灵漏洞仍在进行中

虽然Meltdown是一个严重的漏洞,可以泄露您的秘密数据,包括密码和加密密钥,但Spectre更为严重,而且不容易修复。安全研究人员说,它将困扰我们相当长的时间。众所周知,Spectre利用现代CPU使用的推测执行技术来优化性能。

在也修复了Spectre错误之前,强烈建议您至少将GNU / Linux发行版更新为任何新发行的Linux内核版本。因此,请在您喜欢的发行版的软件存储库中搜索新的内核更新,并尽快进行安装。不要等到为时已晚,现在就做!


我已经使用Kernel 4.14.10一周了,所以下载和引导Ubuntu Mainline Kernel版本4.14.11对我来说不是太大的问题。

Ubuntu 16.04用户可能更喜欢与4.14.11同时发布的4.4.109或4.9.74内核版本。

如果您的常规更新未安装您希望的内核版本,则可以按照以下询问Ubuntu的答案手动进行:https : //askubuntu.com/questions/879888/how-do-i-update-kernel-to-the-latest -mainline-version / 879920#879920


4.14.12-一天有什么不同

在我最初回答后不到24小时内,发布了一个补丁程序来修复他们可能匆忙解决的4.14.11内核版本。建议所有4.14.11用户升级到4.14.12格雷格-KH说

我宣布发布4.14.12内核。

4.14内核系列的所有用户都必须升级。

人们在此发行版中仍然遇到一些小问题。希望它们能在本周末得到解决,因为补丁尚未落在Linus的树上。

现在,一如既往,请在环境中进行测试。

查看此更新,没有太多行的源代码被更改。


1
现在存在针对Meltdown的解决方案,可通过访问apt-get dist-upgrade
luchonacho

1
现在在我的手机上,但LTS的更新导致内核崩溃于1/10/2018。请参阅询问Ubuntu。
WinEunuuchs2Unix

1
幸运的是,我将其更新为109(108导致内核崩溃)。所以没有那个问题。它工作正常。
luchonacho

1
@ WinEunuuchs2Unix这里有一个更新:USN-3531-2:英特尔微代码回归
GAD3R

1
@ GAD3R非常感谢您的链接。它帮助我在Ask Ubuntu中发布了可以帮助很多人的答案:askubuntu.com/questions/998471/…–
WinEunuuchs2Unix

6

可以通过访问JavaScript网站来远程利用此缺陷。

确实。因此,一种明智的缓解措施是在您的Web浏览器中禁用JavaScript,或使用不支持JavaScript的Web浏览器。

大多数支持JavaScript的浏览器都有禁用它的设置。另外,如果您希望维护允许使用JavaScript的网站或域的白名单,则可以使用各种附加组件,例如uBlock OriginNoScript

注意:不用说,禁用/限制JavaScript并不是唯一的缓解措施。一旦编写,测试和发布了任何相关的内核修补程序和其他安全更新,您还应该检查(并且可能会应用)。在Debian衍生的分布,使用命令 sudo apt updatesudo apt list-upgradable,和sudo apt upgrade

更新:不要相信我。艾伦·考克斯Alan Cox)说的差不多:

你需要大约关心什么大的时候是JavaScript的,因为可以远程使用由JavaScript网页上,从系统内存偷东西的漏洞。...考虑一下诸如Adblocker之类的东西和诸如noscript之类的扩展,这些东西一开始就可以阻止大量垃圾运行。尽快做到这一点。当出现操作系统更新时,请应用它们。(来源


5
对不起,尽管这有助于防止攻击,但是如果没有JS,您将无法在这里留下答案。该建议类似于“停止使用互联网”(在2018年)。
莫里茨都

4
@MoritzBoth,值得庆幸的是,许多站点在没有JS的情况下都能正常运行。不幸的是,您指出,StackExchange确实需要JS进行发布。那是SE中的(严重!)缺点:(
sampablokuper

3
对于FireFox,像addon这样的noScript 可能有助于减少可疑站点上JavaScript的使用-尽管FF Quantum(V57)带来的最新变化已经在整个FF插件池中
占据

2
自从Quantum发布以来,正是出于这个原因,我切换到了Pale Moon。对我来说非常有效,包括NoScript和Cookie Masters(曾经是Cookie Monster)。
墨菲'18

2
@MoritzBoth我真的不认为禁用JS 并不意味着“停止使用网络”,更不用说“停止使用网络”了。但是,这是提高一些 Web内容提供商普遍依赖JS所引起的问题的意识的好时机。
Tobia Tesan

5

使用JavaScript可以利用它的事实不是重点,也不应该成为主要问题(尽管这是一个主要问题,因为可以通过这种方式在您的系统上轻松执行远程代码,但这并不是唯一的问题。这样可能会发生)。

您的重点不应放在Javascript和/或浏览器上。理想情况下,应该修补您的CPU。不幸的是,对于当前大多数错误,这似乎都是不可能的。Debian与所有其他提供OS的各方一起,将以其他唯一可行的方式来推荐没有缺陷的CPU:它们迫使系统解决CPU中的错误。这些补丁不能解决问题。相反,操作系统会将它们隐藏在用户在计算机(以及您的浏览器)上运行的任何程序中所能做到的最好的状态。

这种隐藏是额外的计算工作,因此您的整体系统性能将比没有它低。降低多少可能很大程度上取决于这些程序的确切功能。

考虑到这一点,请回到您的问题:保护Debian系统可以做的是安装安全更新。我相信,尽管存在固有的CPU缺陷,Debian会根据这些bug尽一切可能使Debian尽可能安全地运行。

各种各样的大公司已经在解决这个问题,许多硬件和Linux专家也是如此。我不想绝对阻止您自己尝试某些事情或尝试帮助您做出一般性努力。但是,如果您感兴趣的只是自己的安全性和及时的修复程序,那么他们很可能会在比您更短的时间内找到更好的解决方案,现在开始自己研究。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.