Was zeigt der Bereich "Bugs" von / proc / cpuinfo tatsächlich?

23

Auf einem Debian Stretch and Testing / Buster-System mit einem aktuellen Kernel und installiertem Mikrocode sehe ich immer noch Meltdown und Spectre als Bugs in /proc/cpuinfo.

Das Ausführen der spectre-meltdown-checkerShows ist jedoch nicht anfällig.

Also frage ich mich, was /proc/cpuinfozeigt. Sind dies nur die Schwachstellen für diese CPU und werden diese trotz eines gepatchten Systems immer aufgelistet?

Hurrbert
quelle

Antworten:

22

Die Absicht des Feldes "Bugs" in /proc/cpuinfowird in der Commit-Nachricht beschrieben, die es eingeführt hat :

x86/cpufeature: Füge Bug Flags zu /proc/cpuinfo

Sichern Sie die Flags, die anzeigen, dass wir Fehlerumgehungen für die CPU, auf der wir ausführen, erkannt und / oder angewendet haben, auf ähnliche Weise wie die Feature-Flags.

Der Vorteil ist, dass sich diese nicht wie die CPU-Funktionen mit der Zeit ansammeln.

Zuvor wurden vom Kernel erkannte Hardwarefehler als separate Funktionen aufgeführt ( z. B. der berüchtigte F00F-Fehler, der auf 32-Bit-x86-Systemen einen eigenen f00f_bugEintrag aufweist /proc/cpuinfo). Der Eintrag "Bugs" wurde eingeführt, um diese in einem einzigen Feature zu speichern, das vorwärts geht, im selben Stil wie x86-CPU-Flags .

Soweit, was die Einträge in der Praxis bedeuten, wie Sie in der Nachricht sehen können, alle , die garantiert ist , dass der Kernel erkannt einen Hardware - Fehler. Sie müssen an anderer Stelle nachsehen (Startmeldungen oder bestimmte /procEinträge oder /sysEinträge wie die Dateien in /sys/devices/system/cpu/vulnerabilities/), um festzustellen, ob die Probleme behoben sind.

Die Nützlichkeit der "Bugs" -Einträge wird auf zwei Arten eingeschränkt. Das erste ist, dass echte Negative nicht von Unbekannten unterschieden werden können: Wenn das Feld "cpu_meltdown" nicht angibt, können Sie (nur vom Feld) nicht wissen, ob das bedeutet, dass der Kernel nichts über Meltdown weiß, oder dass Ihre CPU nicht von Meltdown betroffen ist. Das zweite ist, dass die Erkennung zu einfach sein kann; es ist ein Fehler, der zur Vorsicht Anlass gibt, zu melden, dass Ihre CPU anfällig ist, wenn dies nicht der Fall ist. Da die "Erkennung" tabellenbasiert ist, hängt ihre Genauigkeit davon ab, welche Version des Kernels Sie ausführen.

Im Fall von Meltdown- und Spectre-Fehlern /proc/cpuinfo funktioniert der Erkennungsprozess, bei dem die Werte in eingegeben werden , auf x86 wie folgt :

Stephen Kitt
quelle
2
Im Falle von Specter und Meltdown werden sie nicht einmal erkannt, sondern nur angenommen . Ich habe ein in-order x86, das auch nicht davon betroffen ist, aber der Kernel meldet nur, dass es sowieso an einer hartcodierten Regel liegt, die im Grunde sagt: "Jede Intel-CPU, die älter als X ist, ohne dass ein Mikrocode-Patch angewendet wurde, ist anfällig für Kernschmelze."
R ..
2
@R .. Ist Ihre CPU in den In-Order-Tabellen im Kernel enthalten? (Suchen Sie hier nach "cpu_no_speculation" , um die neuesten Tabellen anzuzeigen .) Dies ist in der Tat eines der Probleme mit dem Eintrag "bugs" wrt. Meltdown, Spectre und Co., seine Genauigkeit hängt wirklich davon ab, wie aktuell Ihr Kernel ist, da seine „Erkennung“ tabellenbasiert ist.
Stephen Kitt
Nein, es ist ein Centerton Bonnell und es fehlt dort. Ich werde einen Patch einreichen.
R ..
Weiß jemand, ob dies immer noch korrekt ist, wenn Mikrocode-Updates während des Startvorgangs, aber nach dem Laden des Kernels angewendet wurden?
Bachsau
12

Die Meltdown- / Spectre-Schwachstellen betreffen das Design / die Architektur des CPU-Chipsatzes, und die Patches sind, abgesehen vom Kauf neuer zukünftiger Hardware, eine schöne Illusion von langfristiger Sicherheit . Mit der Zeit könnten neue Methoden zur Ausnutzung der Fehler auftauchen, mit denen die aktuellen Patches umgangen werden können.

Kurz gesagt, die aktuellen Software-Patches / Mikrocodes mildern die Probleme gegenüber bekannten Methoden der Spectre / Meltdown-Familie von Exploits, lösen jedoch nicht die zugrunde liegenden CPU-Designprobleme, die sie überhaupt erst ermöglichen. Die betroffenen (mehrere Generationen) CPUs sind auf lange Sicht nicht aufgehört, anfällig zu sein (und werden es höchstwahrscheinlich nie tun).

Wie @Gilles jedoch korrekt angibt, bedeutet diese Warnung nicht, dass die derzeit bekannten Exploits der Spectre / Meltdown-Methoden funktionieren. Sie funktionieren nicht, wenn die Patches installiert sind.

In dem in der Frage erwähnten Fall überprüft der Kernel nur die CPU-Modelle, von denen bekannt ist, dass sie von Spectre / Meltdown betroffen sind ( cpu-insecurederzeit alle x86-CPUs, wenn es sich nur um x86 handelt) / line in /proc/cpuinfo.

Geh und überprüfe deine /proc/cpuinfo. Es wird cpu_insecure enthalten, wenn Ihr Kernel über den KPTI-Patch verfügt

Ich habe festgestellt, dass der KPTI-Patch diesen Code enthält:

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

Und nach dem Kernel-Update erhalten Sie:

bugs      : cpu_insecure

PS. Es gab bereits eine Reihe von Updates für eine neue Methode zur Ausnutzung der Spectre / Meltdown- "Bugs". Es wird wahrscheinlich nicht das letzte Mal sein.

Rui F Ribeiro
quelle
2
zB Wenn Sie den Kauf von Hardware für eine Weile unterbrechen können, warten Sie auf eine neue Generation von CPUs. Meine Kristallkugel sagt mir, dass wir mittelfristig eine Menge gebrauchte Server für Erdnüsse verkaufen werden.
Rui F Ribeiro
CPU-Fehler werden /proc/cpuinfoauch dann aufgelistet , wenn sie durch einen Software-Patch vollständig behoben wurden. Ihre Anwesenheit bedeutet nicht , dass Ihr System für diesen bestimmten Fehler anfällig ist.
Gilles 'SO- hör auf böse zu sein'
@Gilles gewährt, können Sie keine bekannten Exploits anwenden. Wir hatten jedoch bereits eine Reihe von Exploits für die erste Patch-Generation, und ich wage zu behaupten, dass viele kommerzielle Interessen die Kritik daran zum Schweigen bringen, dass dies ein grundlegender Konstruktionsfehler ist, der eine umfassende Neugestaltung der CPU erforderlich macht.
Rui F Ribeiro
1
Dies gilt für Exploits vom Typ Spectre / Meltdown. Es handelt sich hierbei um grundlegende Designprobleme, die weiterhin auftreten werden. Aber Sie haben geschrieben, dass dies für die bugsZeilenshows zutrifft , und dies ist einfach falsch. Die meisten CPU-Design-Fehler haben eine vollständige Software-Problemumgehung, die nur wenig Leistung kostet. Wenn der Kernel die Problemumgehung anwendet, ist der Fehler harmlos.
Gilles 'SO- hör auf böse zu sein'
1
@Rui oh, ich glaube, ich habe mich nicht klar genug ausgedrückt - ich habe gemeint, dass der Artikel nicht die Frage beantwortet hat, die sein eigener Titel gestellt hat, nicht, dass er diese Frage nicht beantwortet hat ;-). (Der Titel des Artikels lautet wie folgt: "Wie der bahnbrechende Spectre-Fehler sieben Monate lang geheim blieb", aber der Artikel erklärt nicht, wie IMO.)
Stephen Kitt