Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Alles rund um sicherheitsrelevante Fragen und Probleme.
Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von hikaru » 19.01.2018 10:49:21

ingo2 hat geschrieben: ↑ zum Beitrag ↑
18.01.2018 17:49:49
Wenn man das mal etwas überdenkt, könnte es doch sein, daß die angeblichen Firmware-Fehler bewußt eingeführt wurden, um die Stabilität der CPU's zu gewährleisten - d.h. indirekt einen Designfehler zu kaschieren. Oder eine höhere Taktfrequenz stabil zu erzielen, oder? Später hat man dann gemerkt, daß das Ganze einen Geschwindigfkeitsvorteil bringt und es dann so belassen hat?
Das glaube ich nicht.
Ohne mich auf irgendeine Quelle stützen zu können vermute ich das Problem im Zusammenspiel der gepatchten CPUs mit Intels Management Engine. Intel-Systeme haben einen Watchdog, der eine Signatur der ME überprüft und wenn deren Richtigkeit nicht bestätigt werden kann, dann wird das System vom Watchdog automatisch nach einer halben Stunde ausgeschaltet (oder rebootet?). Deshalb konnten die Entwickler des ME-Cleaners die ME auch nicht vollständig entfernen, sondern lediglich so weit entkernen, dass sie zumindest dem Watchdog noch die Signatur bestätigen kann.
Ob die Signatur nach jedem Boot nur einmal bestätigt wird oder ob das immer wieder geschieht weiß ich nicht. Falls Letzteres der Fall ist, dann könnte ich mir vorstellen, dass die Microcode-Updates das CPU-Verhalten derart ändern, dass die Signaturbestätigung nicht mehr zuverlässig funktioniert, was in der Folge zu scheinbar zufälligen Reboots führen könnte.

Lose im Zuammenhang damit würde mich interessieren, ob es möglicherweise Wechselwirkungen zwischen den Microcode-Updates und dem ME-Cleaner geben könnte.

Unabhängig von diesen Vermutungen fixen (lösen) die Microcode-Updates auch keine Firmware-Fehler, sondern sie sollen Hardwarefehler behandeln (abschwächen).
Wenn man das mal auf medizinische Begriffe ummünzt, dann leiden die betroffenen CPUs an einer (absichtlich oder zumindest fahrlässig beigefügten) Behinderung, die es ihnen verwährt, sicher ihren alltäglichen Aufgaben nachzugehen. All die Gegenmaßnahmen (KPTI, Retpoline, Microcodes) sind keine Heilung für die Behinderung selbst, sondern Versuche, die Symptome der Behinderung in den Griff zu bekommen (Prothesen, Medikamente, etc.).

Benutzeravatar
ingo2
Beiträge: 1124
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von ingo2 » 23.01.2018 21:59:11

Oha,
jetzt hat Intel sein Microcode Update 3.20180108.1 gegen Spectre2 wieder zurückgezogen - offenbar wegen der Reboots.

Das Changelog dazu sagt:
intel-microcode (3.20180108.1+really20171117.1) unstable; urgency=critical

* Revert to release 20171117, as per Intel instructions issued to
the public in 2018-01-22 (closes: #886998)
* This effectively removes IBRS/IBPB/STIPB microcode support for
Spectre variant 2 mitigation.

-- Henrique de Moraes Holschuh <email address hidden> Mon, 22 Jan 2018 23:01:59 -0200
und die Aussage vom Maintainer dazu:
https://mail-archive.com/debian-bugs-di ... 78175.html

Und Debian schmeißt das wieder aus Testing raus!

Bei der Gelegenheit mal eine Frage:
Speichert die CPU etwa die Firmware in einem, nichtflüchtigen Speicher?
Nur dann macht eigentlich das Verfahren von Debian mit der Bezeichnung 3.20180108.1+really20171117.1 für den Downgrade wirklich Sinn?

Benutzeravatar
towo
Beiträge: 4405
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von towo » 23.01.2018 22:29:53

Speichert die CPU etwa die Firmware in einem, nichtflüchtigen Speicher?
Nein, die wird gar nicht gespeichert, sondern zu einem frühen zeitpunkt geladen.
Nur dann macht eigentlich das Verfahren von Debian mit der Bezeichnung 3.20180108.1+really20171117.1 für den Downgrade wirklich Sinn?
Ja, viele anderen Möglichkeiten der Versionierung gibts hier nicht.

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von NAB » 23.01.2018 22:36:33

"Downgrades" sind bei Debian nicht wirklich vorgesehen, darum muss der Downgrade als Upgrade verpackt werden.

Die Microcodes alleine helfen aber eh nicht, solange die Kernelpatches nicht fertig sind. Und da geht's grad hoch her:
Englisch:
https://www.theregister.co.uk/2018/01/2 ... fix_linux/
Deutsch:
https://www.computerbase.de/2018-01/lin ... h-garbage/

(Heise hat leider mal wieder keinen Durchblick)

Und wenn ich das richtig sehe, sind sämtliche Gegenmaßnahmen gegen Spectre im Kernel bisher darauf ausgerichtet, eine "privilege escalation" zu verhindern, also dass User-Code in den Kernel-Speicher gucken kann. Nach meinem Verständnis ist Spectre selber danach weiterhin sperrangelweit offen.

Edit:
Inzwischen sehe ich das hoffentlich noch richtiger, nachdem ich mir den Beitrag des Intel-Entwicklers durchgelesen habe:
http://lkml.iu.edu/hypermail/linux/kern ... 05282.html
One new feature (IBPB) is a complete barrier for branch prediction.
After frobbing this, no branch targets learned earlier are going to be
used. It's kind of expensive (order of magnitude ~4000 cycles).
Even with IBRS, the CPU cannot tell the difference between different
userspace processes, and between different VM guests. So in addition to
IBRS to protect the kernel, we need the full IBPB barrier on context
switch and vmexit. And maybe STIBP while they're running.
Ich verstehe das so, dass IBPB bei jedem Wechsel zwischen zwei Prozessen die Sprungvorhersage leerputzt und damit einen Spectre-Angriff eines Prozesses auf einen anderen auch im Userspace unmöglich macht.

Nun müsste es nur noch funktionieren ... also ohne dass die Prozessoren dabei abstürzen.

Damit bliebe nur noch, dass ein Prozess sich selber angreift, also das bekannte Javascript-im-Browser-Beispiel. Ob ein Prozess auch intern IBPB einsetzen könnte, um die Sprungvorhersage zu putzen, ist mir unklar.

Übrigens:
The new microcode from Intel and AMD adds three new features.
Er geht davon aus, dass AMD und Intel hier die gleichen Microcode-Änderungen bringen ... scheinen also beide gleich betroffen zu sein.
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von hikaru » 24.01.2018 11:06:38

NAB hat geschrieben: ↑ zum Beitrag ↑
23.01.2018 22:36:33
Ich verstehe das so, dass IBPB bei jedem Wechsel zwischen zwei Prozessen die Sprungvorhersage leerputzt und damit einen Spectre-Angriff eines Prozesses auf einen anderen auch im Userspace unmöglich macht.
Ich glaube nicht, dass das zuverlässig funktionieren würde. Zusätzlich zur Sprungvorhersage müsste man auch den CPU-Cache löschen (zumindest Teile davon). Das würde wohl auf einer alten CPU funktionieren, die noch kein SMP kann (bis Pentium-3-Single-Core), aber alles was mehrere Kerne (mit Shared Cache) hat oder Hyperthreading kann, kann mehrere Threads oder Prozesse wirklich gleichzeitig ausführen und diese Threads haben Zugriff auf identische Cache-Bereiche (bei HT immer, bei Multicore i.d.R. zumindest im L3-Cache). Von so einem Parallelthread könnte man einen Side-Channel-Angriff auf einen anderen Thread ausführen. Und da hat man keine Chance, den Cache von Thread A zuverlässig zu löschen bevor Thread B auf ihn zugreift.

Benutzeravatar
ingo2
Beiträge: 1124
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von ingo2 » 24.01.2018 11:42:13

Das Durcheinander mit der Interpretation der ganzen Affäre bezüglich Intel und Spectre und den Versuchen, das zu flicken verstehe ich als Nicht-Fachmann mit den 3 CVE's so:

Die Aufteilung erfolgt in den Diskussionen aus Sicht des Angriifsweges. Da erfolgen die Angriffe in Spectre 1 und Spectre 2 auf verschiedenen Wegen über den L3-Cache.

Was den User aber letzlich angeht, ist die Auswirkung auf die betroffenen "Daten".
Bei den anderen CPU-Herstellern (außer Intel) mit OoO-Architektur sind die oben genannten Angriffswege auch möglich. Vielleicht gibt es sogar noch weitere unentdeckte Wege. Allerdings sind da die Angriffe auf die Daten eines einzelnen Threasds beschränkt. Bei Intel dagegen funktioniert die Trennung zwischen Kernelspace und Userspace nicht (privilege escalation) und deshalb sind auf den verschiedenen Angriffswegen auch Kernelfunktionen zugänglich.

Was Intel da probiert mit Firmware-Flicken um den Software-Entwickleren neue Befehle anzudrehen, soll wohl nur von ihrem eigentlichem Problen/Fehler ablenken, da dies nur mit neuem Design zu beheben ist - also "snake oil".
EDIT:
Und dazu gehört dann auch "Meltdown". Auch das ist mit dem Kernel-Patch nicht gefixt, nur gelindert, denn es wird damit nach wie vor noch der für den Prozess erforderliche Teil der Kernel Page Table eingeblendet, nur nicht die komplette.

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von NAB » 24.01.2018 17:44:45

hikaru hat geschrieben: ↑ zum Beitrag ↑
24.01.2018 11:06:38
NAB hat geschrieben: ↑ zum Beitrag ↑
23.01.2018 22:36:33
Ich verstehe das so, dass IBPB bei jedem Wechsel zwischen zwei Prozessen die Sprungvorhersage leerputzt
Ich glaube nicht, dass das zuverlässig funktionieren würde. Zusätzlich zur Sprungvorhersage müsste man auch den CPU-Cache löschen
Also Angriffe auf den CPU-Cache gibt es schon länger, da Mischen die Jungs von der TU Graz auch kräftig mit. Bisher war es aber nicht möglich, da zuverlässig an fremde Daten zu kommen.

Der Trick von Spectre basiert doch gerade darauf, dass die Sprungvorhersage trainiert wird und die Vorhersehbarkeit dieses Trainings genutzt wird, um eben zuverlässig an fremde Daten zu kommen. Wenn man die Sprungvorhersage nun vor jedem Kontextwechsel ent-trainiert, sind wir wieder bei den üblichen Unsicherheiten des CPU-Caches, die seit Jahren bekannt sind.
ingo2 hat geschrieben: ↑ zum Beitrag ↑
24.01.2018 11:42:13
Das Durcheinander mit der Interpretation der ganzen Affäre bezüglich Intel und Spectre und den Versuchen, das zu flicken verstehe ich als Nicht-Fachmann mit den 3 CVE's so:

Die Aufteilung erfolgt in den Diskussionen aus Sicht des Angriifsweges. Da erfolgen die Angriffe in Spectre 1 und Spectre 2 auf verschiedenen Wegen über den L3-Cache.
Meiner Meinung nach ist das mit den "3 CVE's" ziemlich unglücklich gelaufen. Es gibt kein "Spectre 1" und "Spectre 2".

Die Jungs von der TU Graz haben zwei Angriffsmechanismen veröffentlicht: Meltdown und Spectre. Insbesondere für Spectre zählen sie dabei eine ganze Menge möglicher Angriffswege auf, die sie offensichtlich nicht alle getestet haben. Sie haben vorallem versucht, die Mechanismen zu beschreiben und nicht so genau probiert, was man damit alles anstellen kann. Das sind halt Forscher und "klassische Wissenschaftler". Darauf, dass man mit Spectre eine "privilige escalation" erreichen könnte, sind sie gar nicht gekommen.

Google hingegen hat drei konkrete Angriffe veröffentlicht, wie man eine "privilige escalation" erreichen kann: Variante 1 bis 3. Das sind Varianten von "privilige escalation" und nicht Varianten der Angriffsmechanismen. Zwei davon nutzen den Mechanismus von Spectre, der dritte den Mechanismus von Meltdown.

AMD ist von Spectre übrigens genau so betroffen wie Intel. Nur hört man von AMD fast nichts, während bei Intel langsam durchschimmert, welche (hässlichen) Gegenmaßnahmen bei welcher Prozessorgeneration notwendig wären.

Meltdown hingegen ist eigentlich schon durch. Alle Systeme sind gepatcht, laufen jetzt langsamer ... und wir gehen mal wieder davon aus, dass es jetzt sicher ist, bis wieder jemand das Gegenteil beweist.
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

Benutzeravatar
ingo2
Beiträge: 1124
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von ingo2 » 24.01.2018 18:21:16

NAB hat geschrieben: ↑ zum Beitrag ↑
24.01.2018 17:44:45
Meltdown hingegen ist eigentlich schon durch. Alle Systeme sind gepatcht, laufen jetzt langsamer ... und wir gehen mal wieder davon aus, dass es jetzt sicher ist, bis wieder jemand das Gegenteil beweist.
Das einzige, was gemacht wurde, ist doch dass nicht mehr der gesamte Adressraum des Kernels dauerhaft im Speicher gehalten wird, sondern nur noch die unbedingt notwendigen Teile/Funktionen, welche die laufenden Anwenduingen jeweils benötigen. Und diese können nach wie vor mit den beschiebenen Techniken mißbraucht werden. Grund ist die in Intel-CPUs fehlende "page table isolation".

Deshalb meine Wertung: notdürftig geflickt, aber nicht gefixt.

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von NAB » 24.01.2018 19:13:02

ingo2 hat geschrieben: ↑ zum Beitrag ↑
24.01.2018 18:21:16
Deshalb meine Wertung: notdürftig geflickt, aber nicht gefixt.
Ja, richtig, "fixen" kann Intel das auch nicht, ohne die Prozessoren auszutauschen, sonst hätten sie das längst getan. Was wir jetzt haben, ist ein hässlicher und langsamer Workaround im Kernel. Wie unsicher der ist, muss sich erst zeigen.
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von hikaru » 25.01.2018 11:20:52

NAB hat geschrieben: ↑ zum Beitrag ↑
24.01.2018 17:44:45
Der Trick von Spectre basiert doch gerade darauf, dass die Sprungvorhersage trainiert wird und die Vorhersehbarkeit dieses Trainings genutzt wird, um eben zuverlässig an fremde Daten zu kommen. Wenn man die Sprungvorhersage nun vor jedem Kontextwechsel ent-trainiert, sind wir wieder bei den üblichen Unsicherheiten des CPU-Caches, die seit Jahren bekannt sind.
Ich glaube der Knackpunkt ist hier das Wort "Kontextwechsel".

Mir scheint, wir haben hier zwei verschiedene Deutungen des Begriffs:
A: Wechsel der CPU zwischen privilegiertem und unprivilegiertem CPU-Modus oder andersrum. Das ist im Wesentlichen das Meltdown-Szenario und sollte (hoffentlich) inzwischen kalter Kaffee sein.
B: Wechsel der CPU zwischen zwei Prozessen, ohne dabei einen Kontextwechel gemäß A durchzuführen. Das wäre die Art von zeitscheibenweisem "Multiprozessing" die schon der 80486 und Vorgänger konnten.

Variante A ist wohl die geläufigere Verwendung des Begriffs, ich glaube aber, du meinst hier Variante B.

Wenn ich das richtig sehe, dann braucht man für einen IBPB-Angriff allerdings auf einem SMP-System weder A noch B.
Dazu folgendes Szenario:
1. Wir sorgen dafür, dass zwei Threads oder Prozesse tatsächlich parallel abgearbeitet werden. Wichtig ist dabei, dass sie sich den selben Cache teilen.
2. Prozess I erzeugt rechtmäßig irgendein Geheimnis (z.B. Passwortabfrage) und legt es im Cache ab.
3. Prozess II erzeugt gleichzeitig ein IBP-Konstrukt, dessen Ergebnis von dem in durch Prozess I verwendeten Cache-Register abhängt (z.B. durch den im Spectre-Paper gezeigten Beispielcode mit dem Array-Überlauf nach einem Fehltraining der EIGENEN Sprungvorhersage).
4. Nun misst Prozess II nach dem bekannten Muster die Zugriffszeit auf eben dieses Geheimnisregister und legt das Ergebnis irgendwo abholbar ab, bevor seine eigene fehlerhafte Sprungvorhersage abgewürgt und enttrainiert wird.

Auf dem ganzen Weg wird nicht ein einziger Kontextwechsel vollzogen, weder nach Variante A noch nach Variante B. Wichtig ist nur, dass Prozess II versucht auf das Geheimnisregister zuzugreifen, nachdem Prozess I dort das Geheimnis abgelegt hat. Diese Reihenfolge könnte man vielleicht sogar durch eine Interprozesskommunikation sicherstellen.

Nice
Beiträge: 416
Registriert: 14.06.2017 19:36:20

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von Nice » 25.01.2018 13:12:32

Hier eine Laienfrage, mag sein, dass sie unsinnig ist:
Bringt die Verwendung von "Firejail" im Fall von Spectre zwar keine vollständige Lösung des Problems aber zuminest ein paar Prozent mehr Sicherheit (wie gesagt, immer bezogen auf "Spectre")?

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von NAB » 25.01.2018 19:24:46

hikaru hat geschrieben: ↑ zum Beitrag ↑
25.01.2018 11:20:52
Mir scheint, wir haben hier zwei verschiedene Deutungen des Begriffs:
Das scheint mir auch so. Darf ich dir da einfach mal mit der Wikipedia kommen?
https://en.wikipedia.org/wiki/Context_switch
Das ist die mir geläufige Definition und entspräche bei dir sowohl A als auch B.

Mit deinen restlichen Einwänden magst du aber Recht haben, das ist mir auch nicht so ganz klar. Das habe ich mich schon beim Lesen des Spectre-Papiers gefragt ... "Ja, laufen da nur exakt die beiden Programme im System, "Opfer" und "Angreifer"?".

Auch auf einem SMP-System werden Prozesse pausenlos vom Prozessor genommen und danach wieder draufgesetzt ... also Kontextwechsel durchgeführt. Das kannst du mit einem einfachen Prozessmonitor gut beobachten, wenn du einen Prozess mit hoher CPU-Auslastung am Laufen hast ... der hüpft von Kern zu Kern. Dazu kommen noch Systemaufrufe - auch die führen zu einem Kontextwechsel in den Kernel-Space ... und natürlich auch wieder zurück. Auch in deinem Beispiel sind die beiden Prozesse also "wahrscheinlich" nicht völlig ungestört auf den CPU-Kernen unterwegs.

Ansonsten komme ich aber auch ins Schlingern. Ich ging bisher davon aus, dass jeder CPU-Kern seine eigene Sprungvorhersage hat. Gut, die kann man natürlich alle trainieren ... wenn man dabei nicht gestört wird, siehe oben. Und meineswissens hat jeder CPU-Kern seinen eigenen L1 und L2 Cache - zumindest bei Intel. L3 teilen sie sich. Darauf geht das Spectre-Papier leider gar nicht ein ... wie präzise man diese Zeitunterschiede messen kann, in welchem Cache die geklauten Daten sein müssen, etc.. Und wie es mit Hyperthreading steht weiß ich auch nicht.

Ich stütze mich komplett auf die Aussage des Intel-Mitarbeiters. Ich verstehe ihn so, dass IBPB eine "complete barrier for branch prediction" ist und irgendwie eine Änderung des Microcodes benötigt. Ob die da auch eine "barrier" zwischen CPU- und HT-Kernen einziehen, weiß ich natürlich auch nicht ... sollten sie aber tun nach meinem Verständnis.
Nice hat geschrieben: ↑ zum Beitrag ↑
25.01.2018 13:12:32
Bringt die Verwendung von "Firejail" im Fall von Spectre zwar keine vollständige Lösung des Problems aber zuminest ein paar Prozent mehr Sicherheit (wie gesagt, immer bezogen auf "Spectre")?
Ich vermute mal: Nein. Spectre funktioniert einfach abseits sämtliche Sicherheitsmechanismen, die firejail zückt. Spectre guckt quasi direkt durch den Speicher durch. Vorallem das gängige JavaScript-Beispiel würde firejail überhaupt nicht verhindern - hier belauscht der geschützte Prozess ja sich selber.
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

Nice
Beiträge: 416
Registriert: 14.06.2017 19:36:20

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von Nice » 25.01.2018 20:01:20

@NAB: Thx! :THX:

Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von hikaru » 26.01.2018 10:13:54

NAB hat geschrieben: ↑ zum Beitrag ↑
25.01.2018 19:24:46
hikaru hat geschrieben: ↑ zum Beitrag ↑
25.01.2018 11:20:52
Mir scheint, wir haben hier zwei verschiedene Deutungen des Begriffs:
Das scheint mir auch so. Darf ich dir da einfach mal mit der Wikipedia kommen?
https://en.wikipedia.org/wiki/Context_switch
Das ist die mir geläufige Definition und entspräche bei dir sowohl A als auch B.
Gut, dann haben wir da ja schon mal Einigkeit. Ich hatte vermutet, dass du vielleicht noch eine Variante C auf Lager hast.
NAB hat geschrieben: ↑ zum Beitrag ↑
25.01.2018 19:24:46
Auch auf einem SMP-System werden Prozesse pausenlos vom Prozessor genommen und danach wieder draufgesetzt ... also Kontextwechsel durchgeführt.
Ja, natürlich. Mir ist allerdings nicht klar, ob sich das unterbinden oder zumindest für eine Behandlung im Rahmen eines Spectre-Angriffs voraussagen lässt.
Zumindest lassen sich ja über den Scheduler Prozessaffinitäten für bestimmte CPU-Kerne festlegen. Man kann also im Prinzip verhindern, dass ein Prozess von einem Kern auf einen anderen hüpft. Was man hier bräuchte, wäre praktisch die "Negation des Gegenteils": Man müsste verhindern, dass ein anderer Prozess auf einem Kern dazwischenhüpft oder zumindest den Zustand speichern können bevor das passiert. Ob das geht weiß ich nicht.
Man kann aber zumindest hoffen, dass das nicht passiert und so eine Art Spectre-Lotterie spielen. Wie da die Gewinnchancen sind weiß ich nicht. Die von dir angesprochene Zuverlässigkeit ist dann aber natürlich im Eimer.
NAB hat geschrieben: ↑ zum Beitrag ↑
25.01.2018 19:24:46
Ich ging bisher davon aus, dass jeder CPU-Kern seine eigene Sprungvorhersage hat.
Mir ist ehrlich gesagt noch nicht mal völlig klar, was eine Sprungvorhersage überhaupt ist. Was sie macht, glaube ich verstanden zu haben, aber wie sie implementiert ist weiß ich nicht. Ist das eine Art Firmware-Funktion? Oder ist das eine in Silizium gegossene Logik? Oder ist das etwas ganz anderes?
Was ich glaube zu wissen ist, das sie Register füllt, teils mit Werten die bei fehlerhafter Vorhersage normalerweise nutzlos sind, im Zuge der Angriffe aber gefährlich werden können. Und genau diese Register sind der wichtige Punkt, nicht die Sprungvorhersage selbst.
NAB hat geschrieben: ↑ zum Beitrag ↑
25.01.2018 19:24:46
Ob die da auch eine "barrier" zwischen CPU- und HT-Kernen einziehen, weiß ich natürlich auch nicht ... sollten sie aber tun nach meinem Verständnis.
Ich weiß nicht, ob du dich hier nur unpräzise ausdrückst, oder ob du dem gleichen Missverständnis aufsitzt, das ich schon bei Anderen beobachtet habe: Es gibt keine CPU- und HT-Kerne, oder auch "echten" und "virtuellen" Kerne.
Bei HT laufen zwei Prozesse gleichzeitig auf ein und demselben Kern. Das funktioniert, weil ein Kern im Prinzip wie das Fließband in einer Autoproduktion funktioniert.* Während am Ende des Fließbands jemand die Karosserie lackiert, kann am Anfang schon ein anderer die Teile für das nächste Auto zusammenschweßen. Sie arbeiten aber beide auf dem selben Fließband.
Deshalb nutzen diese beiden Prozesse auch zwangsläufig den selben Cache. Wenn der Lackierer nun auf geheimen Kundenwunsch ein Auto in spezieller Farbe lackiert, dann kriegt der Schweißer das zwangsläufig mit.


*) Man sehe mir das völlig an den Haaren herbeigezogene Beispiel nach.

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von NAB » 26.01.2018 15:56:45

hikaru hat geschrieben: ↑ zum Beitrag ↑
26.01.2018 10:13:54
NAB hat geschrieben: ↑ zum Beitrag ↑
25.01.2018 19:24:46
Auch auf einem SMP-System werden Prozesse pausenlos vom Prozessor genommen und danach wieder draufgesetzt ... also Kontextwechsel durchgeführt.
Ja, natürlich. Mir ist allerdings nicht klar, ob sich das unterbinden oder zumindest für eine Behandlung im Rahmen eines Spectre-Angriffs voraussagen lässt.
Eh, was? Mir ist nicht klar, worauf du hier hinaus willst. Ich wollte nur ein anschauliches Beispiel für Kontextwechsel bringen. Das hat mit Spectre erst mal gar nichts zu tun. Ich wüsste auch nicht, warum man Kontextwechsel unterbinden oder einen Prozessor-Kern-Wechsel dabei verhindern sollte. Darum erst mal zu den anderen beiden Themen:
hikaru hat geschrieben: ↑ zum Beitrag ↑
26.01.2018 10:13:54
Mir ist ehrlich gesagt noch nicht mal völlig klar, was eine Sprungvorhersage überhaupt ist. Was sie macht, glaube ich verstanden zu haben, aber wie sie implementiert ist weiß ich nicht. Ist das eine Art Firmware-Funktion? Oder ist das eine in Silizium gegossene Logik? Oder ist das etwas ganz anderes?
Was ich glaube zu wissen ist, das sie Register füllt, teils mit Werten die bei fehlerhafter Vorhersage normalerweise nutzlos sind, im Zuge der Angriffe aber gefährlich werden können. Und genau diese Register sind der wichtige Punkt, nicht die Sprungvorhersage selbst.
Stelle es dir als große Tabelle vor, in der Code-Schnipsel mit einem bedingten Sprung gespeichert werden, und in der letzten Zeile, wohin dieser Sprung das letzte mal geführt hat. Und dazu eine Vergleichseinheit, die den aktuell anliegenden Code mit sämtlichen Tabellenspalten gleichzeitig vergleicht um herauszufinden, wohin der aktuell anliegende Sprung das letzte mal geführt hat. Während der Prozessor nichts zu tun hat, weil er auf das Ergebnis der Bedingung wartet, rechnest du an dieser Stelle schon mal weiter ... auf dem echten Prozessor (du hast ja keinen anderen). Und auf den echten Registern. Dazu wird der Zustand der Register vorher gesichert (Backup). Wenn der Prozessor später herausbekommt, dass die Sprungvorhersage Blödsinn erzählt hat, dann stellt er den alten Zustand wieder her (Backup wird wieder eingespielt) und bessert die Tabelle der Sprungvorhersage nach. Dann ärgert er sich kurz, richtet sein Krönchen und macht weiter im Text.

Das ist soweit völlig korrekt, inklusive des Registerzugriffs. Was nicht so ganz korrekt ist, ist, dass der Prozessor während dieser spekulativen Code-Ausführung auch aus Speicher lesen darf, zu dem der aktuelle Kontext, also der aktuelle Prozess, eigentlich keinen Zugriff hat. Bisher hat man gesagt, das sei egal, denn die Ergebnisse dieses Leseszugriffs werden ja im Fehlerfall wieder verworfen - die stehen ja nur in den Registern, die mit dem alten Backup überschrieben werden.

Nun haben findige Forscher herausgefunden, dass du die Zeit, die der Prozessor mit dieser spekulativen Code-Ausführung verbringt, messen kannst. Aufgrund dieser Zeitmessung passiert dann das, was eigentlich nicht passieren sollte ... du kannst (statistische) Aussagen über Speicherinhalte machen, die du eigentlich nicht lesen darfst.

Wie die Sprungvorhersage dabei genau implementiert ist, ist irrelevant. Es sind ja zig Varianten sämtlicher Hersteller betroffen. Aber da du das Ding gerne möglichst performant haben möchtest, wirst du wohl zu viel Silizium greifen. Und es gibt nicht "den wichtigen Punkt", sondern es sind mehrere Punkte, die ineinandergreifen müssen, damit Spectre funktioniert.
hikaru hat geschrieben: ↑ zum Beitrag ↑
26.01.2018 10:13:54
Ich weiß nicht, ob du dich hier nur unpräzise ausdrückst, oder ob du dem gleichen Missverständnis aufsitzt, das ich schon bei Anderen beobachtet habe: Es gibt keine CPU- und HT-Kerne, oder auch "echten" und "virtuellen" Kerne.
Bei HT laufen zwei Prozesse gleichzeitig auf ein und demselben Kern. Das funktioniert, weil ein Kern im Prinzip wie das Fließband in einer Autoproduktion funktioniert.*
Nein. Was du da beschreibst, ist eine "Pipeline". Danach haben sie "superskalar" erfunden. Und dann dachten sie sich, hey, wenn wir eh schon mehrere Befehle gleichzeitig ausführen können, dann fehlt nicht mehr viel und wir können so tun als seien wir mehrere Prozessoren. Das ist ein zusätzlicher echter Kern, echte Hardware, keine "virtuelle". Naja, es ist der Rumpf eines Kernes, bestehend aus eigener Befehlspipeline und eigenen Registern. Die restliche Ausführungslogik teilt er sich mit dem anderen Kern. Also ist es doch kein echter Kern, wie wollen wir es nennen? So'n bisschen Kern? HT-Kern? Simultaneous-Mulitithreading-Doppel-Kern? Egal. Im Kontext wäre interessant, welche Teile der Sprungvorhersage die beiden sich teilen, und das weiß ich nicht. Muss ich auch nicht wissen. Das ist Intels Problem, wie sie das zurechtbiegen.
hikaru hat geschrieben: ↑ zum Beitrag ↑
26.01.2018 10:13:54
Was man hier bräuchte, wäre praktisch die "Negation des Gegenteils": Man müsste verhindern, dass ein anderer Prozess auf einem Kern dazwischenhüpft oder zumindest den Zustand speichern können bevor das passiert. Ob das geht weiß ich nicht.
Man kann aber zumindest hoffen, dass das nicht passiert und so eine Art Spectre-Lotterie spielen. Wie da die Gewinnchancen sind weiß ich nicht. Die von dir angesprochene Zuverlässigkeit ist dann aber natürlich im Eimer.
Du willst gar nicht verhindern, dass die Prozesse umherhüpfen. Das ist nur ein Nebenprodukt des Kontextwechsels und lässt sich unterbinden, wie du ja selber sagst. Erstens machst du dir ohne Kontextwechsel das Multitasking kaputt und zweitens ist es vermutlich eh egal, ob die Prozesse umherhüpfen, da die Sprungvorhersagetabelle vermutlich prozessorweit gilt - das spart Silizium.

Aber sieh es mal anders herum: Die Sprungvorhersagetabelle enthält gewissermaßen geheime Informationen über andere Prozesse - was sie berechnet haben und was dabei herausgekommen ist. Und nun gibt es eine Methode, diese geheimen Informationen auszunutzen. Man könnte einfach eine Sprungvorhersagetabelle pro Prozess einführen, das wäre eine "complete barrier for branch prediction". Vermutlich ist das nicht die Implementation, die Intel per Microcode-Update gebacken kriegt, aber so grob in die Richtung müsste es laufen. Ich vermute, sie werden die Sprungvorhersagetabelle einfach bei jedem Kontextwechsel leerputzen, mit der entsprechenden performance penalty.

"Lotterie" spielen wir übrigens schon länger. Cache-Angriffe sind seit Jahren bekannt:
https://cyber.wtf/2016/06/16/cache-side ... y-problem/
Bisher haben sie mit hohem "Rauschen" zu kämpfen, die Qualität der gewonnenen Informationen ist dubios bzw. unzuverlässig. Meiner Meinung nach ist das nur eine Frage ausreichend guter Rauschunterdrückungssysteme bzw. statistischer Analysen. Wenn du beide Seiten kontrollieren kannst, kannst du über den Cache schon Video-Telefonieren:
https://www.youtube.com/watch?v=a9sGk7FtnYk
Bisher hat Intel das nicht gejuckt. Nun wurde erstmals ein recht schnelles und - was die Aufbereitung der gewonnenen Daten angeht - sehr unkompliziertes Verfahren vorgestellt. Plötzlich kippen sie alle aus den Puschen ... na sowas aber auch ...

P.S.: Da taucht doch grad wieder Meltdown auf meinem Radar auf:
https://security-tracker.debian.org/tra ... -2017-5754
Zumindest der proprietäre Nvidia-Grafiktreiber scheint auch betroffen zu sein. Wie mag es mit anderen proprietären oder Kernel-fremden Treibern stehen?
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

clue
Beiträge: 943
Registriert: 08.07.2007 17:36:57

Re: Intel-Bug

Beitrag von clue » 26.01.2018 16:23:32

TomL hat geschrieben: ↑ zum Beitrag ↑
03.01.2018 15:44:07
Ich habe mir jetzt gerade mal sysbench installiert, mit dem Gedanken, dass ich irgendwann einen Vorher/Nachher-Vergleich anstellen kann.... oder um festzustellen, ob überhaupt was passiert ist. Die Ausgaben dieser beiden Befehle habe ich jetzt gesichert:

Code: Alles auswählen

sysbench --test=cpu --num-threads=4 run
sysbench --test=memory run
Kann man damit bei einem späteren Vergleich dann sinnvolle Erkenntnisse ableiten, ob der Patch wirklich was "kostet" und wieviel?

Also ich fand Deine Frage sehr interessant. Deswegen habe ich mehrere benchmarks mit der Phoronix-Suite http://www.phoronix-test-suite.com/ gemacht.

Das Ergebnis nach jeweils 3 Durchläufen (c-ray):

Keine messbaren Geschwindigkeitseinbußen nach update von Kernel 4.9.03 auf Kernel 4.9.05.

Falls Du Lust hast, kannst Du Dein System ganz einfach selber testen:

1. Dem obigen link folgend das Debian/Ubuntu-Paket für die test-suite runterladen.
2. Ich musste bei mir noch folgende Abhängigkeiten auflösen:

apt-file autoconf build-essential dpkg-dev g++ g++-6 gcc gcc-6 libapt-pkg-perl libasan3 libatomic1 libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl libexporter-tiny-perl libgcc-6-dev libitm1 liblist-moreutils-perl liblsan0 libmpx2 libregexp-assemble-perl libstdc++-6-dev libtsan0 libubsan0 linux-libc-dev make mesa-utils php-xml php7.0-xml php-cli php-common php7.0-cli
php7.0-common php7.0-json php7.0-opcache php7.0-readline

3. Dann die test-suite installieren.
4. Als normaler User kannst Du dann den Test ganz einfach laufen lassen:

phoronix-test-suite benchmark c-ray

4.1. Er lädt sich aus dem Internet dann eine winzige Datei für den c-ray test runter. Ich habe c-ray genommen, weil der die Prozessorleistung messen kann. Es gibt aber über 100 Tests. Die kannst Du Dir anzeigen lassen, indem Du

phoronix-test-suite list-available-tests


eingibst.

Würd mich mal interessieren, ob Du bei Dir irgendwelche Einbußen festellen kannst.
Offenbarung 13 erfüllt sich gerade vor unseren Augen, genießen wir also die letzten Jahre unserer Scheinfreiheit

Benutzeravatar
Par@noid
Beiträge: 244
Registriert: 09.11.2005 13:33:35
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schwarzwald

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von Par@noid » 27.01.2018 18:33:03

kann ich mich mit VPN vor Spectre und Meltdown schützen ?

MfG Par@noid
Man hilft den Menschen nicht, wenn man für sie tut, was sie selbst tun können .....

Debian GNU/Linux Bookworm/sid 64-bit| GNOME Version 43 :THX:

DeletedUserReAsG

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von DeletedUserReAsG » 27.01.2018 18:35:49

Nein.

Benutzeravatar
Par@noid
Beiträge: 244
Registriert: 09.11.2005 13:33:35
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schwarzwald

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von Par@noid » 28.01.2018 14:10:14

niemand hat geschrieben: ↑ zum Beitrag ↑
27.01.2018 18:35:49
Nein.
Vielen Dank :THX:

MfG Par@noid
Man hilft den Menschen nicht, wenn man für sie tut, was sie selbst tun können .....

Debian GNU/Linux Bookworm/sid 64-bit| GNOME Version 43 :THX:

Benutzeravatar
Par@noid
Beiträge: 244
Registriert: 09.11.2005 13:33:35
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schwarzwald

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von Par@noid » 28.01.2018 18:05:02

Hab momentan kernel 4.15.0-amd64 installiert zum testen und leider bringt immer noch das gleiche Ergebnis :
Checking for vulnerabilities against running kernel Linux 4.15.0-rc8-amd64 #1 SMP Debian 4.15~rc8-1~exp1 (2018-01-15) x86_64
CPU is Intel(R) Core(TM) i5-7600K CPU @ 3.80GHz

CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking whether we're safe according to the /sys interface: NO (kernel confirms your system is vulnerable)
> STATUS: VULNERABLE (Vulnerable)

CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Checking whether we're safe according to the /sys interface: NO (kernel confirms your system is vulnerable)
> STATUS: VULNERABLE (Vulnerable: Minimal generic ASM retpoline)

CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Checking whether we're safe according to the /sys interface: YES (kernel confirms that the mitigation is active)
> STATUS: NOT VULNERABLE (Mitigation: PTI)

MfG Par@noid
Man hilft den Menschen nicht, wenn man für sie tut, was sie selbst tun können .....

Debian GNU/Linux Bookworm/sid 64-bit| GNOME Version 43 :THX:

Benutzeravatar
ingo2
Beiträge: 1124
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von ingo2 » 28.01.2018 18:56:23

Womit wurde denn der Kernel kompiliert?

Momentan hat nur gcc8 die retpoline-patches, wird aber auf gcc7 zurückportiert und ist in 7.3 enthalten.
Ob Stretch je in den Genuß kommt? Für gcc6 hat noch niemand mit Backports begonnen.

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von NAB » 28.01.2018 20:45:48

Wenn ich das richtig verstanden habe, reicht ein Compiler mit Retpoline-Patches nicht. Der Kernel muss Retpoline auch nutzen.
Und das geht auch nur bis Haswell. Ab Skylake braucht's auch noch neuen Microcode.
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von hikaru » 29.01.2018 10:31:15

NAB hat geschrieben: ↑ zum Beitrag ↑
26.01.2018 15:56:45
Mir ist nicht klar, worauf du hier hinaus willst. Ich wollte nur ein anschauliches Beispiel für Kontextwechsel bringen.
Meinem (und deinem?) Verständnis nach greift IBPB nur bei Kontextwechseln.
Auf einem SMP-System könnte man allerdings auf fremde Cache-Inhalte zugreifen ohne dass dafür überhaupt ein Kontextwechsel nötig ist, weil eben zwei Prozese tatsächlich gleichzeitig auf dem selben Cache arbeiten können.
NAB hat geschrieben: ↑ zum Beitrag ↑
26.01.2018 15:56:45
Stelle es dir als große Tabelle vor, in der Code-Schnipsel mit einem bedingten Sprung gespeichert werden, und in der letzten Zeile, wohin dieser Sprung das letzte mal geführt hat. Und dazu eine Vergleichseinheit, die den aktuell anliegenden Code mit sämtlichen Tabellenspalten gleichzeitig vergleicht um herauszufinden, wohin der aktuell anliegende Sprung das letzte mal geführt hat. Während der Prozessor nichts zu tun hat, weil er auf das Ergebnis der Bedingung wartet, rechnest du an dieser Stelle schon mal weiter ... auf dem echten Prozessor (du hast ja keinen anderen). Und auf den echten Registern. Dazu wird der Zustand der Register vorher gesichert (Backup). Wenn der Prozessor später herausbekommt, dass die Sprungvorhersage Blödsinn erzählt hat, dann stellt er den alten Zustand wieder her (Backup wird wieder eingespielt) und bessert die Tabelle der Sprungvorhersage nach. Dann ärgert er sich kurz, richtet sein Krönchen und macht weiter im Text.
Soweit ist mir die Sache klar, das sagt aber nur etwas darüber aus, was die Sprungvorhersage macht, nicht was sie ist.
NAB hat geschrieben: ↑ zum Beitrag ↑
26.01.2018 15:56:45
Wie die Sprungvorhersage dabei genau implementiert ist, ist irrelevant.
Eben das halte ich für fraglich. Ich vermute, Implementierungsdetails könnten wichtig sein, um Sicherheitsaspekte beurteilen zu können.
NAB hat geschrieben: ↑ zum Beitrag ↑
26.01.2018 15:56:45
Was du da beschreibst, ist eine "Pipeline".
Ja.
NAB hat geschrieben: ↑ zum Beitrag ↑
26.01.2018 15:56:45
Danach haben sie "superskalar" erfunden. Und dann dachten sie sich, hey, wenn wir eh schon mehrere Befehle gleichzeitig ausführen können, dann fehlt nicht mehr viel und wir können so tun als seien wir mehrere Prozessoren. Das ist ein zusätzlicher echter Kern, echte Hardware, keine "virtuelle". Naja, es ist der Rumpf eines Kernes, bestehend aus eigener Befehlspipeline und eigenen Registern. Die restliche Ausführungslogik teilt er sich mit dem anderen Kern. Also ist es doch kein echter Kern, wie wollen wir es nennen? So'n bisschen Kern? HT-Kern? Simultaneous-Mulitithreading-Doppel-Kern? Egal. Im Kontext wäre interessant, welche Teile der Sprungvorhersage die beiden sich teilen, und das weiß ich nicht. Muss ich auch nicht wissen. Das ist Intels Problem, wie sie das zurechtbiegen.
Natürlich ist das letztendlich Intels Problem. Falls wir hier aber halbwegs qualifiziert diskutieren wollen wäre es schon schlau, zumindest zu versuchen zu verstehen, was da im Detail passiert, statt es wie eine Black Box zu behandeln.
Ein wichtiger Punkt ist z.B., dass zwei HT-Siblings sich eine Pipeline teilen. Deshalb ist auch mein Autovergleich (im Rahmen der üblichen Untauglichkeit solcher Vergleiche) passend, weil eben nicht einfach davon ausgegangen werden kann, dass zwei Siblings tatsächlich voneinander getrennte Register benutzen. Zumindest kann ich das mit meinem derzeitigen Wissensstand nicht, denn ich weiß nicht welche Register repliziert, welche partitioniert und welche geteilt werden.
NAB hat geschrieben: ↑ zum Beitrag ↑
26.01.2018 15:56:45
Du willst gar nicht verhindern, dass die Prozesse umherhüpfen.
Im Rahmen eine Angriffs willst du das vielleicht schon, denn jeder Hüpfer bedeutet einen Kontextwechsel, der dir potenziell deinen Angriff kaputt machen könnte.
NAB hat geschrieben: ↑ zum Beitrag ↑
26.01.2018 15:56:45
Man könnte einfach eine Sprungvorhersagetabelle pro Prozess einführen, das wäre eine "complete barrier for branch prediction".
Das hilft mMn nicht weiter, so lange diese Prozesse sich weiterhin die selben Cache-Register teilen, denn damit bleiben Zeitmessungen weiterhin möglich. Und jedem Prozess seine eigenen physischen Register zu geben halte ich für praktisch unmöglich, wenn man bedenkt, dass Prozesse in die Zehntausender gehen können.
NAB hat geschrieben: ↑ zum Beitrag ↑
26.01.2018 15:56:45
P.S.: Da taucht doch grad wieder Meltdown auf meinem Radar auf:
https://security-tracker.debian.org/tra ... -2017-5754
Zumindest der proprietäre Nvidia-Grafiktreiber scheint auch betroffen zu sein. Wie mag es mit anderen proprietären oder Kernel-fremden Treibern stehen?
Ich vermute, das Problem ist wie bei CPUs nicht der Treiber selbst sondern die bediente Hardware. Nvidia-GPUs könnten ebenso verwundbar für Meltdown sein wie Intel-CPUs. Vieleicht spekuliert Nouveau nicht, was Teil einer Erklärung für den Leistungsunterschied zwischen den Treibern sein könnte.

Benutzeravatar
MSfree
Beiträge: 10726
Registriert: 25.09.2007 19:59:30

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von MSfree » 29.01.2018 11:19:58

hikaru hat geschrieben: ↑ zum Beitrag ↑
29.01.2018 10:31:15
Auf einem SMP-System könnte man allerdings auf fremde Cache-Inhalte zugreifen ohne dass dafür überhaupt ein Kontextwechsel nötig ist, weil eben zwei Prozese tatsächlich gleichzeitig auf dem selben Cache arbeiten können.
Der L1-Caches ist immer einem bestimmten CPU-Kern zugeordnet und kann von einem zweiten Prozeß, der auf einem anderen Kern läuft, nicht gelesen werden.

Beim L2-Cache sind oft 2 Kerne einem L2-Block zugeordnet. Zwei Prozesse könnten sich also gegenseitig in die Karten schauen, wenn sie auf zwei Kernen laufen, die den selben Cache-Block verwenden.

Der L3-Cache ist für alle Kerne zugänglich und somit potentiell das schwächste Glied. Allerdings werden vom L3 nur Daten geholt, wenn sie nicht schon im L2 liegen.

Die Frage ist hier also, wie gezielt ein bestimmter Schadprozeß sich auf einen CPU-Kern lagern kann, um Daten abzugreifen, die im L2 des Partnerkerns liegen. Eigentlich sollte ja der Betriebssystemkern die Zuteilung der CPU-Kerne regeln.

Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: Hardware-Sicherheitslücken: Meltdown und Spectre: ehem. Intel-Bug

Beitrag von hikaru » 29.01.2018 11:27:48

MSfree hat geschrieben: ↑ zum Beitrag ↑
29.01.2018 11:19:58
Der L1-Caches ist immer einem bestimmten CPU-Kern zugeordnet und kann von einem zweiten Prozeß, der auf einem anderen Kern läuft, nicht gelesen werden.
Gilt das auch für HT-Siblings?

Antworten