虽然大多数用户对越来越多的 CPU 安全缓解措施不满,部分原因是通常会引入额外的开销,但 Google 工程师的新 Linux 内核补丁将允许用户/开发人员选择强制 CPU 错误及其缓解措施,即使正在使用的系统不知道易受攻击。
Google 工程师 Brendan Jackman 今天发布了引入 Linux “force_cpu_bug=”命令行引导参数的补丁,该参数能够强制执行额外的 CPU 安全缓解措施,即使处理器表明它不易受到 Spectre、Meltdown、Retbleed 等给定错误的影响。
使用此补丁,如果想要强制使用各种 Spectre 缓解措施(即使不需要),您也可以启动说“force_cpu_bug=spectre_v1,spectre_v2,spec_store_bypass”。force_cpu_bug= 值基于 /proc/cpuinfo 的 “bugs” 行中的各种字符串。
至于为什么即使没有必要也要强制 CPU 错误缓解,当内核开发人员尝试调试代码中的问题时,它可能很有用。或者,它也可能有助于安全研究人员探索缓解影响或操作差异。如果发现某些现有处理器实际上无法抵抗给定的漏洞,并且无需等待生产中的内核补丁或 BIOS/微码更新,那么这种force_cpu_bug将来也可能很有用,这将允许快速轻松地强制执行给定的缓解措施。
Google 的 Brendan Jackman 在 force_cpu_bug 补丁中将其总结为:
“有时,在不已知的系统上运行 CPU 漏洞缓解措施对于缓解任何实际漏洞非常有用。这对于平凡的原因(例如“我想在机器上这么快地调试它”)可能很方便,但也出于研究原因:虽然一些缓解措施侧重于单个漏洞和 uarch,但其他缓解措施则相当笼统,了解它们在我们当前不需要它们的系统上的性能在战略上是有用的。
为了证明这一点是有用的,在提交 5c9a92dec323 中添加了一个专门用于 Retbleed 的标志(“x86/bugs: Add retbleed=force”)。
有点遗憾的是,我们不得不通过 bug 而不是缓解来做到这一点。但是,我们没有明确的缓解措施标识符,因此我认为在这里做得比“你可以假装你在一个易受攻击的 CPU 上 – 现在去阅读每个漏洞的 cmdline 参数的文档,以弄清楚如何运行你想要的缓解措施”做得更好是不切实际的。
现在,此补丁将经过典型的 Linux 内核审查过程,而其他上游利益相关者则确定它是否足够好且实用,可用于主线。
转自 New Linux Patch Lets You Force CPU Bugs/Mitigations Even When Not Vulnerable – Phoronix