/ proc / cpuinfo的“ bug”部分实际上显示了什么?


23

在具有当前内核和已安装微码的Debian Stretch和测试/总线系统上,我仍然看到崩溃和幽灵被列为错误/proc/cpuinfo

但是,运行spectre-meltdown-checker节目并不容易。

所以我想知道/proc/cpuinfo显示了什么。这些只是该CPU的漏洞吗?尽管系统已打补丁,仍会始终列出这些漏洞吗?

Answers:


22

引入它/proc/cpuinfo的提交消息中描述了“ bugs”字段的意图:

x86/cpufeature:将错误标志添加到 /proc/cpuinfo

以与功能标志类似的方式,将表示我们已检测到和/或已将错误解决方法应用到正在执行的CPU的标志转储。

优点是这些功能不会像CPU功能那样随时间累积。

以前,内核检测到的硬件错误被列为单独的功能例如臭名昭著的F00F错误,该错误在32位x86系统上具有其自己的f00f_bug条目/proc/cpuinfo)。引入了“ bugs”条目,以将它们与x86 CPU flags的样式保持在同一功能中。

就条目在实践中的含义而言,如您在消息中所看到的,可以保证的是内核检测到硬件错误。您需要查看其他地方(引导消息,或特定/proc条目或/sys条目,例如中的文件/sys/devices/system/cpu/vulnerabilities/),以确定是否已解决问题。

“错误”条目的有用性有两种限制。首先是无法将真否定词与未知数区分开:如果该字段未指定“ cpu_meltdown”,则您无法(仅从该字段)知道这是否意味着内核不了解Meltdown,或者您的CPU不受Meltdown影响。第二点是检测可能过于简单。出于谨慎的考虑,它会出错,因此它可能报告您的CPU处于脆弱状态,而并非脆弱。由于“检测”是由表驱动的,因此其准确性取决于您正在运行的内核版本。

对于Meltdown和Spectre错误,在x86上/proc/cpuinfo 以以下方式工作的值的检测过程如下

  • 如果CPU 不执行任何推测(486级,某些Pentium级,某些Atom),则不会将其标记为受Meltdown或Spectre影响;
  • 将所有剩余的CPU标记为受Spectre变体1和2的影响(无论微码版本等);
  • 如果未将CPU 列为不易受推测性存储绕过的影响,如果其微代码未声明减轻SSB,并且CPU未声明减轻SSB,则将其标记为受SSB影响;
  • 如果未将CPU 列为不易受Meltdown(AMD)侵害,并且其微代码未声明缓解Meltdown,则将其标记为受Meltdown影响。

2
在幽灵和崩溃的情况下,它们甚至没有被发现,只是被假定。我有一个顺序x86不受任何影响,但是内核只是报告它仍然是因为硬编码规则,该规则基本上说“任何未使用微码补丁的X之前的Intel cpu都容易崩溃”。
R..18年

2
@R ..您的CPU是否包含在内核的顺序表中?(在此处查找“ cpu_no_speculation” 以查看最新表。)确实,这是“ bug”条目wrt的问题之一。Meltdown,Spectre等公司,其准确性实际上取决于内核的最新程度,因为它们的“检测”是由表驱动的。
史蒂芬·基特

不,这是Centerton Bonnell,从那里不见了。我将看到有关提交补丁的信息。
R.,

有人知道在引导期间但在加载内核之后应用微代码更新后,是否仍然正确?
巴绍(Bachsau)

12

Meltdown / Spectre漏洞位于CPU芯片组设计/体系结构上,并且由于无需购买新的未来硬件,因此从长远来看,这些补丁是一种很好的安全性幻觉。随着时间的推移,利用漏洞的新方法可能会浮出水面,这些方法能够绕过当前补丁。

简而言之,当前的软件补丁/微代码针对Spectre / Meltdown家族漏洞利用的已知方法缓解了这些问题,但并未解决允许它们首先使用的潜在CPU设计问题。从长远来看,受影响的(几代)CPU并没有停止遭受漏洞攻击(并且很可能永远不会)。

但是,正如@Gilles正确指出的那样,发出警告并不表示当前已知的Spectre / Meltdown方法将起作用。如果安装了补丁,它们将无法工作。

在问题中提到的情况下,内核仅检查已知受Spectre / Meltdown影响的CPU模型(如果仅讨论x86,则目前为所有x86 CPU),因此cpu-insecure仍在错误部分列出/行中/proc/cpuinfo

去检查你的/proc/cpuinfo。如果您的内核具有KPTI补丁,它将包含cpu_insecure

我发现KPTI补丁包含以下代码:

   /* Assume for now that ALL x86 CPUs are insecure */
   setup_force_cpu_bug(X86_BUG_CPU_INSECURE);

在内核更新之后,您将获得:

bugs      : cpu_insecure

PS。利用Spectre / Meltdown“错误”的新方法已经有了新的更新。可能不会是最后一次。


2
例如,如果您可以暂缓购买硬件,请等待新一代的CPU。我的水晶球告诉我,从中期来看,我们将有很多二手花生服务器出售。
Rui F Ribeiro

/proc/cpuinfo即使已通过软件补丁完全消除了CPU错误,也会列出其中。它们的存在并不意味着您的系统容易受到特定的错误。
吉尔(Gilles)'所以

@Gilles授予您,您将无法应用已知的漏洞利用。但是,我们已经在第一代补丁程序中进行了一系列利用,我敢说有很多商业利益,这使批评者们认为这是一个基本的设计缺陷,将迫使重新设计CPU成为主要问题。
Rui F Ribeiro

1
Spectre / Meltdown类型的漏洞利用确实如此,它们是将继续存在的基本设计问题。但是,您写道,这对bugs线路显示是正确的,这是错误的。大多数CPU设计错误都具有完整的软件解决方法,而只需要很少的性能。如果内核应用了解决方法,则该错误是无害的。
吉尔(Gilles)'所以

1
@Rui哦,我想我自己的表达不够清楚-我的意思是,这篇文章没有回答自己的标题提出的问题,而不是没有回答这个问题;-)。(如,文章的标题是“行业破幽灵错误如何秘密呆了七个月”,但文章并没有解释如何 IMO)
斯蒂芬·基特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.