如何在Linux上修补Meltdown CPU漏洞CVE-2016-5754

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

在Intel CPU中发现了一个非常严重的安全问题。
崩溃的CPU漏洞CVE-2016-5754打破了用户应用程序与操作系统之间最根本的隔离。
这种攻击使程序可以访问内存,从而也可以访问其他程序和操作系统的机密。
如何保护Linux服务器和笔记本电脑/台式机免受Linux上的Meltdown和Spectre漏洞影响?
在Linux内核中发现并修补了一个非常严重的安全问题。
它于2016年1月3日宣布。
它是由包括Google Project Zero在内的各个团队独立发现和报告的。

什么是Intel cpus中的Meltdown安全漏洞?

处理器给人一种错觉的感觉,那就是一条指令被一对一执行。
但是,为了最有效地使用cpu资源,现代超标量处理器实际上开始并行执行许多指令。
如果指令取决于先前指令的结果或者尚未完成的检查,则根据对结果的猜测来执行。
如果猜测正确,则执行速度加快。
如果猜测不正确,则取消部分执行的指令,并还原架构状态更改(更改为寄存器,内存等);但是整个过程并不比没有任何猜测要慢。
有时这称为推测执行。

不幸的是,尽管架构状态被回滚,但是还有其他副作用,例如对TLB或者缓存状态的更改,这些副作用不会被回滚。
随后,攻击者可以检测到这些副作用,以确定有关在推测执行阶段发生的情况的信息。
如果攻击者可能导致推测执行访问敏感内存区域,则他们可能能够推断出该敏感内存包含的内容。

此问题有三个主要变体,它们在利用推测执行的方式上有所不同。
变体CVE-2016-5754依赖于以下事实:在受影响的微处理器上,在推测执行指令权限错误期间,将抑制由错误访问触发的异常生成,直到整个指令块退出。
结合以下事实:即使在块被丢弃且从未提交(执行)时,内存访问也可能会填充高速缓存,无特权的本地攻击者可以通过执行有针对性的高速缓存侧通道来利用此缺陷读取特权(内核空间)内存攻击。
注意:CVE-2016-5754影响Intel x86-64微处理器。

AMD x86-64微处理器不受此问题的影响。

受影响的Linux发行版列表

  • 红帽企业Linux 5(包括CentOS/Oracle/Scientific Linux 5等克隆)
  • 红帽企业Linux 6(包括CentOS/Oracle/Scientific Linux 6等克隆)
  • 红帽企业Linux 7(包括CentOS/Oracle/Scientific Linux 7等克隆)
  • Debian Linux狂风
  • Debian Linux杰西
  • Debian Linux延伸
  • Deiban Linux破坏者,SID
  • 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)

本教程记录了影响许多现代微处理器设计的当前安全事件。
随着事件的进行,信息可能会迅速变化,很快就会在此处添加更多信息或者命令。
它将很快发布。
当您运行apt-get upgrade或者yum update命令时,请确保已更新内核软件包,例如linux-image(Debian/Ubunt)内核(RHEL)。

更新系统之前

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

$ uname -r

请注意,目前可以确定以下发行版的修复程序("包含补丁的内核版本位于括号中"):

  • RHEL 6.x [2.6.32-696.18.7] /7.x [3.10.0-693.11.6]
  • CentOS 6.x [2.6.32-696.18.7] /7.x [3.10.0-693.11.6]
  • Fedora 26 [4.14.11-200]/27 [4.14.11-300]
  • Debian Stretch [4.9.0-5-amd64]/jessie [3.16.0-5-amd6]/wheezy [3.2.0-5-amd64]
  • CoreOS[4.14.11-coreos]
  • Arch Linux [更新至当前版本]
  • Gentoo Linux [更新至当前版本]
  • Ubuntu Linux v16.04 [4.4.0-109-generic或者4.13.0-26-generic] /v17.10 [4.13.0-25-generic] /14.04 [3.13.0-139 -通用`]
  • SUSE SLES 12 SP3 [4.4.103-6.38.1]/SLES 12 SP2 [4.4.103-92.59.1]/SLES 11 SP4 [3.0.101-108.21.1]/SLES 11 SP3- LTSS [`3.0.101-0.47.106.11.1]]如何保护Linux服务器免受Meltdown漏洞的攻击您需要更新内核版本并重新启动服务器。以下显示了如何修补和应用流行Linux发行版的更新。在CentOS/RHEL/Fedora/Oracle/Scientific Linux上修复Meltdown执行以下yum命令:
$ uname -r
`3.10.0-693.11.1.el7.x86_64`
$ sudo yum update

输出示例(来自我的CentOS 7.x服务器):

Resolving Dependencies
--> Running transaction check
---> Package iwl100-firmware.noarch 0:39.31.5.1-56.el7 will be updated
---> Package iwl100-firmware.noarch 0:39.31.5.1-57.el7 will be an update
---> Package iwl1000-firmware.noarch 1:39.31.5.1-56.el7 will be updated
---> Package iwl1000-firmware.noarch 1:39.31.5.1-57.el7 will be an update
---> Package iwl105-firmware.noarch 0:18.168.6.1-56.el7 will be updated
---> Package iwl105-firmware.noarch 0:18.168.6.1-57.el7 will be an update
---> Package iwl135-firmware.noarch 0:18.168.6.1-56.el7 will be updated
....
...
Dependencies Resolved
 
========================================================================================
Package                               Arch   Version                    Repository
                                                                                   Size
========================================================================================
Installing:
kernel                                x86_64 3.10.0-693.11.6.el7        updates   43 M
Updating:
iwl100-firmware                       noarch 39.31.5.1-57.el7           updates  152 k
...
..
python-perf                           x86_64 3.10.0-693.11.6.el7        updates  5.1 M
qemu-img                              x86_64 10:1.5.3-141.el7_4.6       updates  678 k
qemu-kvm                              x86_64 10:1.5.3-141.el7_4.6       updates  1.9 M
qemu-kvm-common                       x86_64 10:1.5.3-141.el7_4.6       updates  416 k
Removing:
kernel                                x86_64 3.10.0-514.21.2.el7        @updates 148 M
 
Transaction Summary
========================================================================================
Install   1 Package
Upgrade  48 Packages
Remove    1 Package
 
Total download size: 117 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/49): iwl100-firmware-39.31.5.1-57.el7.noarch.rpm              | 152 kB  00:00:00     
....
..
  microcode_ctl.x86_64 2:2.1-22.2.el7                                                   
  python-perf.x86_64 0:3.10.0-693.11.6.el7                                              
  qemu-img.x86_64 10:1.5.3-141.el7_4.6                                                  
  qemu-kvm.x86_64 10:1.5.3-141.el7_4.6                                                  
  qemu-kvm-common.x86_64 10:1.5.3-141.el7_4.6                                           
 
Complete!

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

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

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

$ sudo dnf --refresh update kernel

或者

sudo dnf update

重启Linux机器:

$ sudo reboot

修复Debian/Ubuntu Linux上的崩溃使用以下apt-get命令/apt命令:

$ uname -r
`4.9.0-4-amd64`
$ sudo apt-get update
## better run the following instead of 'sudo apt-get upgrade'
$ sudo apt-get dist-upgrade

输出示例:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  linux-image-4.9.0-5-amd64
The following packages will be upgraded:
  linux-image-amd64
1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/38.8 MB of archives.
After this operation, 190 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Reading changelogs... Done
Selecting previously unselected package linux-image-4.9.0-5-amd64.
(Reading database ... 28066 files and directories currently installed.)
Preparing to unpack .../linux-image-4.9.0-5-amd64_4.9.65-3+deb9u2_amd64.deb ...
Unpacking linux-image-4.9.0-5-amd64 (4.9.65-3+deb9u2) ...
Preparing to unpack .../linux-image-amd64_4.9+80+deb9u3_amd64.deb ...
Unpacking linux-image-amd64 (4.9+80+deb9u3) over (4.9+80+deb9u2) ...
Setting up linux-image-4.9.0-5-amd64 (4.9.65-3+deb9u2) ...
I: /vmlinuz.old is now a symlink to boot/vmlinuz-4.9.0-4-amd64
I: /initrd.img.old is now a symlink to boot/initrd.img-4.9.0-4-amd64
I: /vmlinuz is now a symlink to boot/vmlinuz-4.9.0-5-amd64
I: /initrd.img is now a symlink to boot/initrd.img-4.9.0-5-amd64
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.9.0-5-amd64
/etc/kernel/postinst.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.9.0-5-amd64
Found initrd image: /boot/initrd.img-4.9.0-5-amd64
Found linux image: /boot/vmlinuz-4.9.0-4-amd64
Found initrd image: /boot/initrd.img-4.9.0-4-amd64
Found linux image: /boot/vmlinuz-4.9.0-3-amd64
Found initrd image: /boot/initrd.img-4.9.0-3-amd64
done
Setting up linux-image-amd64 (4.9+80+deb9u3) ...

重新启动服务器:

$ sudo shutdown -r 0
$ uname -r
`4.9.0-5-amd64`

修复在AWS上运行的Amazon Linux上的Meltdown只需运行yum命令:

# yum update kernel
# reboot
```修复Arch Linux上的Meltdown只需运行pacman命令:

``` sh
# pacman -Syu
# reboot

修复Suse Enterprise Linux Server 12-SP3上的崩溃执行zypper命令:

# zypper in -t patch SUSE-SLE-SERVER-12-SP3-2016-12=1
### [ To bring your system up-to-date ] ###
# zypper patch
# reboot

Spectre&Meltdown Checker重启后,请确保您的Linux服务器/服务器已打补丁且不再受Spectre-meltdown-checker.sh的攻击.