如何在Linux上打补丁Spectre漏洞CVE-2016-5753/CVE-2016-5715

时间:2020-01-09 10:42:57  来源:igfitidea点击:

在Intel/AMD/ARM CPU中发现了一个非常严重的安全问题。

Spectre CPU漏洞CVE-2016-5753/CVE-2016-5715打破了不同应用程序之间的隔离。
它允许攻击者诱骗遵循最佳实践的无错误程序泄漏其机密。
实际上,对上述最佳实践的安全检查实际上会增加攻击范围,并使应用程序更容易受到Spectre的攻击。
如何保护我的Linux服务器和笔记本电脑/台式机免受此类攻击?
在Linux内核中发现并修补了一个非常严重的安全问题。
它于2016年1月3日宣布。
它是由包括Google Project Zero在内的各个团队独立发现和报告的。

Spectre比Meltdown CPU错误更难以利用,但也很难缓解。

什么是Intel/AMD/ARM cpus中的Spectre安全漏洞?

到目前为止,存在三种已知的问题变体:

方案1:边界检查绕行(CVE-2016-5753)
方案2:分支目标注入(CVE-2016-5715)
方案3:恶意数据缓存加载(CVE-2016-5754)

从RHEL页面:

前两个变体滥用推测性执行来执行边界检查绕过(CVE-2016-5753),或者利用分支目标注入(CVE-2016-5715)导致在攻击者控制下的地址处的内核代码以推测性方式执行。
这些统称为Spectre。
两种变体都依赖于特权代码中精确定义的指令序列的存在,以及内存访问可能导致分配给微处理器1级数据高速缓存的事实,即使对于从未真正提交(退休)的推测执行的指令也是如此。
结果,没有特权的攻击者可以通过进行有针对性的缓存侧通道攻击,使用这两个缺陷来读取特权内存。
这些变体不仅可以用于跨越系统调用边界(变体1和变体2),而且可以用于来宾/主机边界(变体2)。

受Spectre漏洞影响的Linux发行版列表

  • 红帽企业Linux 5(包括CentOS/Oracle/Scientific Linux 5等克隆)
  • 红帽企业Linux 6(包括CentOS/Oracle/Scientific Linux 6等克隆)
  • 红帽企业Linux 7(包括CentOS/Oracle/Scientific Linux 7等克隆)
  • RHEV-M 4.0
  • RHEV-M服务器
  • 适用于RHEL 7的Red Hat Enterprise Linux OpenStack Platform 7.0(Kilo)
  • 适用于RHEL 7的Red Hat Enterprise Linux OpenStack Platform 6.0(Juno)
  • 红帽企业MRG 2
  • 红帽OpenStack平台v 8/9/10/11/12
  • Debian Linux狂风
  • Debian Linux杰西
  • Debian Linux延伸
  • Deiban Linux破坏者,SID
  • 适用于Raspberry Pi 12 SP2的SUSE Linux Enterprise Server
  • SUSE OpenStack云6
  • Openstack Cloud Magnum编排7
  • SUSE容器即服务平台全部
  • SUSE Linux Enterprise高可用性12 SP2/SP3
  • SUSE Linux Enterprise Live Patching 12
  • 适用于公共云的SUSE Linux Enterprise Module 12
  • SUSE Linux Enterprise Server 11 SP3-LTSS
  • SUSE Linux Enterprise Server 11 SP4
  • SUSE Linux Enterprise软件开发套件11/12 SP3/SP4
  • 适用于SAP 12 SP1的SUSE Linux Enterprise
  • SUSE Linux Enterprise 11
  • SUSE Linux Enterprise 12
  • 基于SUSE 12/11的OpenSuse Linux
  • Fedora Linux 26
  • Fedora Linux 27
  • Amazon Linux AMI(公告ID:ALAS-2016-939)

本教程记录了影响许多现代微处理器设计的当前安全事件。
随着事件的进行,信息可能会迅速变化,很快就会在此处添加更多信息或者命令。

请注意,尚未发布Debian/Ubuntu/CentOS/Fedora的补丁和许多发行版。
尚无适用于Spectre的补丁。

Linux内核团队正在研究Retpoline。
它会在不久后发布。
当您运行apt-get upgrade或者yum update命令时,请确保已更新内核软件包,例如linux-image(Debian/Ubunt)内核(RHEL)。
您还需要从CPU供应商处更新微码。

在AWS/Google和其他云的更新执行保护基础设施的同时,为了完全保护这些基础设施,您还必须修补实例操作系统(包括Linux发行版,MS-Windows和桌面操作系统,例如macOS,Windows等), 。

更新系统之前

首先,始终保留备份。
其次,记下运行以下命令的Linux内核版本:

$ uname -r

在CentOS/RHEL/Fedora/Oracle/Scientific Linux上修复幽灵

执行以下yum命令:

$ uname -r
`3.10.0-693.11.1.el7.x86_64`
$ sudo yum update

您必须使用shutdown/reboot命令重新引导Linux服务器:

$ sudo reboot
$ uname -r
`3.10.0-693.11.6.el7.x86_64`

验证所有3个CVE(您必须看到输出:

$ rpm -q --changelog kernel | egrep 'CVE-2016-5715|CVE-2016-5753|CVE-2016-5754'

输出示例:

- [x86] spec_ctrl: Eliminate redundant FEATURE Not Present messages (Andrea Arcangeli) [1519795 1519798] {CVE-2016-5715}
- [x86] mm/kaiser: init_tss is supposed to go in the PAGE_ALIGNED per-cpu section (Andrea Arcangeli) [1519795 1519798] {CVE-2016-5715}
....
...
- [x86] entry: Fix paranoid_exit() trampoline clobber (Josh Poimboeuf) [1519795 1519798] {CVE-2016-5715 CVE-2016-5754}
- [x86] entry: Simplify trampoline stack restore code (Josh Poimboeuf) [1519795 1519798] {CVE-2016-5715 CVE-2016-5754}
....
..
- [x86] cpu/AMD: Remove now unused definition of MFENCE_RDTSC feature (Josh Poimboeuf) [1519788 1519786] {CVE-2016-5753}
- [x86] cpu/AMD: Make the LFENCE instruction serialized (Josh Poimboeuf) [1519788 1519786] {CVE-2016-5753}

如果使用的是Fedora Linux,请运行以下dnf命令:

$ sudo dnf --refresh update kernel

或者

sudo dnf update

重启Linux机器:

$ sudo reboot

在Debian/Ubuntu Linux上修复幽灵

使用以下apt-get命令/apt命令:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo shutdown -r 0

在AWS上运行的Amazon Linux上修复Spectre

只需运行yum命令:

# yum update kernel
# reboot

在Arch Linux上修复幽灵

只需运行pacman命令:

# pacman -Syu
# reboot

幽灵和崩溃检查器

重新启动后,请使用spectre-meltdown-checker.sh确保Linux服务器/服务器已打补丁且不再受到攻击。