禁用 Spectre 和 Meltdown 缓解措施

禁用 Spectre 和 Meltdown 缓解措施

我可以在 Ubuntu 18.04LTS 中禁用 Spectre 和 Meltdown 缓解功能吗?

我想测试一下,当我在Linux中禁用这两个功能时,我能获得多少性能提升,如果性能很大,就永久保持它。

答案1

许多内核启动参数可用于禁用或微调硬件漏洞缓解措施:

  • 适用于 Spectre v1 和 v2nospectre_v1(x86、PowerPC)、nospectre_v2(x86、PowerPC、S/390、ARM64)、spectre_v2_user=off(x86)
  • 对于 SSB:spec_store_bypass_disable=off(x86、PowerPC)、ssbd=force-off(ARM64)
  • 对于 L1TFl1tf=off(x86)
  • 对于MDSmds=off(x86)
  • 对于TAA:tsx_async_abort=off
  • 对于 iTLB 多重命中:kvm.nx_huge_pages=off
  • 对于SRBDS:srbds=off
  • 对于再出血:retbleed=off
  • KPTInopti可以通过(x86、PowerPC)或kpti=0(ARM64)禁用

mitigations引入了元参数 ,在5.2中并向后移植到 5.1.2、5.0.16 和 4.19.43(或许还有其他版本)。它可用于控制所有架构上的所有缓解措施,如下所示:

  • mitigations=off将禁用所有可选的 CPU 缓解措施;
  • mitigations=auto(默认设置)将缓解所有已知的 CPU 漏洞,但保持 SMT 启用(如果已启用);
  • mitigations=auto,nosmt将缓解所有已知的 CPU 漏洞并在适当的情况下禁用 SMT。

其中一些可以在运行时切换;有关详细信息,请参阅链接的文档。

答案2

使用内核 5.1.13 或更高版本:

在启动参数上您可以使用

mitigations=off 

使用早于 5.1.13 的内核:

noibrs noibpb nopti nospectre_v2 nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off mitigations=off 

mitigations=off将其中一个或那个长单行添加到您的文件中/etc/sysconfig/grub,并使用以下命令重新生成 grub 的配置文件

grub2-mkconfig

(您的分配程序会有所不同)。

Debian/Ubuntu 衍生发行版:

编辑文件/etc/default/grub然后运行

update-grub

答案3

在 Fedora 37 上,具有足够新的内核,可以通过打印/sys/devices/system/cpu/vulnerabilities/.

$ grep . /sys/devices/system/cpu/vulnerabilities/*
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:KVM: Mitigation: VMX disabled
/sys/devices/system/cpu/vulnerabilities/l1tf:Not affected
/sys/devices/system/cpu/vulnerabilities/mds:Not affected
/sys/devices/system/cpu/vulnerabilities/meltdown:Not affected
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data:Mitigation: Clear CPU buffers; SMT vulnerable
/sys/devices/system/cpu/vulnerabilities/retbleed:Mitigation: Enhanced IBRS
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Mitigation: Speculative Store Bypass disabled via prctl
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: usercopy/swapgs barriers and __user pointer sanitization
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Enhanced IBRS, IBPB: conditional, RSB filling, PBRSB-eIBRS: SW sequence
/sys/devices/system/cpu/vulnerabilities/srbds:Mitigation: Microcode
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Not affected

要一次性禁用缓解措施,请执行以下操作

sudo grubby --update-kernel=ALL --args="mitigations=off"

看看重启后打印输出如何变化

$ grep . /sys/devices/system/cpu/vulnerabilities/*
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:KVM: Mitigation: VMX disabled
/sys/devices/system/cpu/vulnerabilities/l1tf:Not affected
/sys/devices/system/cpu/vulnerabilities/mds:Not affected
/sys/devices/system/cpu/vulnerabilities/meltdown:Not affected
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data:Vulnerable
/sys/devices/system/cpu/vulnerabilities/retbleed:Vulnerable
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Vulnerable
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Vulnerable: __user pointer sanitization and usercopy barriers only; no swapgs barriers
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Vulnerable, IBPB: disabled, STIBP: disabled, PBRSB-eIBRS: Vulnerable
/sys/devices/system/cpu/vulnerabilities/srbds:Vulnerable
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Not affected

当心:Spectre 概念验证漏洞可在浏览器 JavaScript 中运行

作为leaky.page 概念验证表明,可以从浏览器 JavaScript 代码中利用此漏洞。因此,只要您使用网络浏览器,保持缓解措施就有价值。

相关内容