如何禁用页表隔离以恢复因英特尔 CPU 安全漏洞补丁而丢失的性能?

mah*_*s61 45 security patch intel cpu

由于当前的 Intel CPU 安全漏洞问题,预计会有一个补丁会降低系统性能。

我怎样才能确保这个补丁不会安装在我的 Ubuntu 系统上?

Jon*_*sCz 57

补丁(又名“页表隔离”)将是正常内核更新的一部分(更新系统时您将获得)。但是,强烈建议保持内核最新,因为它还可以获得许多其他安全修复程序。所以我建议只使用没有修复的过时内核。

但是,您可以通过向内核命令行 ( howto )添加pti=off内核补丁添加此选项,包含更多信息)来有效禁用补丁。请注意,这样做会导致系统安全性降低。

PostgreSQL 邮件列表上有更多关于启用和禁用 PTI 的信息和性能测试- TLDR 是它有 10% 到 30% 的性能影响(对于 ProstgreSQL,也就是说 - 其他事情(例如游戏)可能会看到影响较小) .

请注意,这只会影响 Intel 处理器,因为 AMD显然不受影响reddit),因此可以预见,默认情况下 AMD 将禁用此功能。

  • 不,内核会检测(在启动时)它在 AMD CPU 上运行的天气,如果是,则禁用修复。@cl-netbox (17认同)
  • 在我确定有一个基于 JavaScript 的攻击之前,我计划使用它。 (3认同)
  • “……可以预见,这将在 AMD 上默认禁用。” 这是否意味着在配备 Canonical 提供的 AMD CPU 的机器上运行的 Ubuntu 操作系统会有一个额外的内核版本?:) (2认同)
  • 显然这个特性在 x64 架构中,但在 i386/IA-32 中没有。因此,补丁也不影响 32 位 linux(安全/Kconfig 需要 X86_64 来启用 PAGE_TABLE_ISOLATION)。这带来了另一个问题。安装了 32 位 linux 的 x64 机器怎么样,这些会受到影响吗?如果是这样,那么受 bios 限制只能运行 32 位指令的旧 x64 机器(如旧的基于原子的上网本)呢?他们是坐鸭子吗? (2认同)
  • @thePiGrepper 没有“x64 机器受 bios 限制只能运行 32 位指令”这样的东西。如果一个 CPU 可以运行 x86_64 指令,它就是一个 x86_64 CPU。那些 Atom 机器是 64 位的,只有 UEFI 被限制为 32 位,[你可以在那些机器上安装 64 位 Linux](https://askubuntu.com/q/727664/253474) (2认同)

Oli*_*Oli 35

更新:该问题已获得两个绰号:Meltdown 和 Spectre。我已经用新信息更新了答案。

它最初是一个内核补丁。它将显示为更高版本。它会被安装,因为你已经linux-image-generic安装了。这就是那个包的用途。所以你可以删除linux-image-generic. 这是一个可怕的、灾难性的想法,它会让你暴露在各种恶劣的环境中,但你可以做到。有可能还是遵循CPU微代码linux-firmware为in-CPU修复。这真的取决于英特尔。

您用来解决此问题的方法无关紧要。你要求绕过一些你既不知道错误的真正影响,也不知道修复它的性能成本的东西。

  • 这个错误很恶心。报告的 CVE 是跨进程内存读取。任何进程都可以读取任何其他进程的内存。输入,密码,一应俱全。这也可能对沙箱产生影响。现在还为时过早,我希望人们在影响和访问方面进一步推动这一点。

  • 性能下降可能没有您担心的那么大。人们抛出的数字集中在理论上的子系统性能上,或者说最坏的情况。缓存不佳的数据库将受到最严重的打击。游戏和日常事物可能不会发生明显的变化。

即使现在我们可以看到实际的错误是什么,现在说影响是什么还为时过早。虽然对 RAM 的免费读取访问很糟糕,但还有更糟糕的事情。我还会测试看看修复对你有多大影响(你所做的事情)。

暂时不要开始使用标志预加载您的 GRUB 配置,或删除内核元数据包。

  • 您需要做的就是将 `pti=off` 添加到内核命令行(在 GRUB 中)以禁用补丁。 (8认同)
  • @JonasCz 这条评论——如果是真的,我不知道——听起来值得单独回答,特别是如果你可以用参考来支持它。 (3认同)
  • @Oli 我同意这个建议,并在其他地方给出了这样的建议。话虽如此,问题是如果需要,如何禁用这个新的安全功能,而且,IMO,nopti 是这样做的选项。 (3认同)

nix*_*wer 14

虽然我不推荐这样做,但可以禁用 PTI

使用nopti内核命令行参数

根据Phoronix

为此,请附加nopti到以GRUB_CMDLINE_LINUX_DEFAULTin开头的行旁边的字符串/etc/default/grub,然后运行

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

然后是重新启动。

有关禁用与性能相关的安全功能的内核启动参数的更多信息,请参阅:Ubuntu Wiki 中的 Spectre&Meltdown MitigationControls


cnd*_*cnd 5

将以下内容添加到 grub 中内核参数的末尾:-

spectre_v2=关闭 nopti pti=关闭

内核参数描述在:https : //wiki.ubuntu.com/SecurityTeam/KnowledgeBase/SpectreAndMeltdown/MitigationControls