我的客户操作系统(CentOS 6.5,内核版本 2.6.32-696.18.7.el6.x86_64)正在 ESXI 服务器(VMware ESXi 5.5.0 build-6480324,已应用补丁 ESXi550-201709001.zip)中运行。
我安装了https://lists.centos.org/pipermail/centos-announce/2018-January/
已安装软件包的列表如下
kernel-debug-devel-2.6.32-696.18.7.el6.i686
kernel-2.6.32-696.18.7.el6.x86_64
kernel-doc-2.6.32-696.18.7.el6.noarch
kernel-debug-2.6.32-696.18.7.el6.x86_64
kernel-devel-2.6.32-696.18.7.el6.x86_64
kernel-debug-devel-2.6.32-696.18.7.el6.x86_64
libreport-plugin-kerneloops-2.0.9-19.el6.centos.x86_64
abrt-addon-kerneloops-2.0.8-21.el6.centos.x86_64
dracut-kernel-004-409.el6_8.2.noarch
kernel-headers-2.6.32-696.18.7.el6.x86_64
kernel-firmware-2.6.32-696.18.7.el6.noarch
kernel-abi-whitelists-2.6.32-696.18.7.el6.noarch
dracut-004-409.el6_8.2.noarch
dracut-kernel-004-409.el6_8.2.noarch
elfutils-libs-0.164-2.el6.x86_64
elfutils-0.164-2.el6.x86_64
elfutils-libelf-devel-0.164-2.el6.x86_64
elfutils-libelf-0.164-2.el6.x86_64
elfutils-devel-0.164-2.el6.x86_64
microcode_ctl-1.17-25.2.el6_9.x86_64
python-perf-2.6.32-696.18.7.el6.x86_64
perf-2.6.32-696.18.7.el6.x86_64
但是 /sys/kernel/debug/x86/ibrs_enabled 仍然设置为 0,如果我执行
echo 2 > /sys/kernel/debug/x86/ibrs_enabled"
然后我们得到错误
“bash:echo:写入错误:没有这样的设备”。
的内容/sys/kernel/debug/x86/ibpb_enabled
也是0
echo 1 > /sys/kernel/debug/x86/ibpb_enabled
抛出同样的错误
“bash:echo:写入错误:没有这样的设备”。
我使用了一个工具https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker.sh检测 meltdown 和 spectre 是否已修复。Spectre Variant 1 和 Meltdown 已修复,但 Variant 2 尚未修复。
"CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
* Hardware (CPU microcode) support for mitigation: YES
* Kernel support for IBRS: YES
* 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)"
答案1
但是 /sys/kernel/debug/x86/ibrs_enabled 仍然设置为 0,如果我执行
echo 2 > /sys/kernel/debug/x86/ibrs_enabled
,我们会收到错误“bash:echo:写入错误:没有这样的设备”。
/sys/kernel/debug/x86/ibpb_enabled 的内容也为 0,并且 echo 1 > /sys/kernel/debug/x86/ibpb_enabled 会引发错误
“bash:echo:写入错误:没有这样的设备
在 Centos 6 上(与 CentOS 7 不同),为了能够写入那些位置,您需要挂载内核 debugfs
mount -t debugfs nodev /sys/kernel/debug
答案2
我有几个 CentOS 6.x 和 CentOS 7 主机。
我的主机在 VMWare ESX 主机上运行,因此需要修补以获取最新的 CPU 功能,例如 ibrs 和 spec_ctrl。
修补主机后,所有虚拟机都需要升级到 VMWare 硬件版本 >= 9。
最后,我安装了 CentOS 提供的新内核,它利用了微码更新添加的缓解功能。
正如 VMWare 所述,您需要对每个 VM 进行电源循环,以准备好新的 CPU 功能。
在电源循环(重新启动)之前,无法执行 echo 2 > /sys/kernel/debug/x86/ibrs_enabled
电源循环后,它运行良好,我所有 CentOS VM 上的 3 种 Spectre 变体都得到了缓解。我创建了一个 cron 作业,在每次重新启动时将 ibrs_enabled 设置为 2,因为此设置不会持续,尽管如果有微码提供的新功能可用,CentOS 内核会默认将其设置为 1。