Notiz Intel Ice Lake-SP: Die neuen Server-CPUs werden am 6. April vorgestellt

deineMudda schrieb:
@Termy

Da mus keiner was "rumprogrammieren". Das macht der Compiler per flag.

Welches flag soll das fuer Spectre v1 sein? Ich habe noch von keinem flag gehoert, das die Spectre-v1-Workarounds vollautomatisch einbaut. Und selbst wenn es so ein Flag gaebe, haette jemand am Compiler rumprogrammieren muessen, um das einzubauen.

Einfach auch mal nach unten scrollen.

Weder in dem von Dir gezeigten Screenshot noch sonstwo auf der Seite steht etwas von compiler flags. Du zeigst aber schoen ganz links die Spalte zu Spectre v1, wo "Software" steht.
 
  • Gefällt mir
Reaktionen: Onkel Föhn, konkretor, Kodak und eine weitere Person
nagus schrieb:
Intel muss froh sein, wenn sie damit Core für Core "Rome" schlagen. Milan ist uneinholbar damit. außer in absoluten corner cases mit AVX512 vlt... und von solchen Benchmarks werden wir von Intel garantiert übergossen werden.
Das wären dann die berühmten Real World Benchmarks ;)
 
  • Gefällt mir
Reaktionen: Onkel Föhn, nagus, Smartbomb und 2 andere
pumuck| schrieb:
Wer hier wohl der Troll ist?

Affected Processors: Transient Execution Attacks & Related Security Issues by CPU​

Last updated: March 15, 2021

Alle in deinem Link genannte Prozessoren SIND (noch) betroffen.
Die stehen da noch nicht drin...

Da aber Rocket Lake S und IceLake SP durch Sunny Cove sehr verwandt sind (nur das RL S 14nm ist) und 11th Gen da jetzt schon drin steht... es sind btw. genug Punkte drin die zeigen das Sunny Cove vielleicht doch gar nicht so ein neuer Prozessor ist wie man denken könnte. Mitigation in Software 5 Jahre nach dem das aufgetreten ist
 
  • Gefällt mir
Reaktionen: Smartbomb und TechFA
mae schrieb:
Welches flag soll das fuer Spectre v1 sein? Ich habe noch von keinem flag gehoert, das die Spectre-v1-Workarounds vollautomatisch einbaut. Und selbst wenn es so ein Flag gaebe, haette jemand am Compiler rumprogrammieren muessen, um das einzubauen.

Weder in dem von Dir gezeigten Screenshot noch sonstwo auf der Seite steht etwas von compiler flags. Du zeigst aber schoen ganz links die Spalte zu Spectre v1, wo "Software" steht
Da steht Software, weil es wie schon beschrieben z. B. durch den Compiler gelöst wird (einfach mal den Link anklicken). Was ist so schlimm dran? Natürlich mussten die Betriebssysteme und die Compiler stellenweise deutlich umprogrammiert werden wegen der Sicherheitslücken. Ich verstehe auch, dass diese Programmierer ein bisschen sauer auf Intel sind. Aber warum sich 0815 Nutzer in Foren drüber aufregen, von denen der Großteil davon überhaupt nicht betroffen ist, verstehe ich nicht. Der Großteil der Lücken wurde schon bei den heute erhältlichen Prozessoren in Hardware gefixt. Geht es dir hier wirklich um die Sache oder willst du nur AMD pushen? Es ist ja nicht so, dass andere Hersteller keine Sicherheitslücken hätten. Angesichts der Komplexität heutiger Prozessoren ist das eher Wunschdenken.
 
  • Gefällt mir
Reaktionen: Googlook und Benj
90% haben einen Consumer Sockel in ihrem System (AM4, 1200, 1151 v2) aber meinen die Leistung einer Workstation bzw. eines Servers mit Sockel 2066, 3647, RX40/80 oder SP3 beurteilen zu können.


Ich selbst habe noch einen alten Xeon E5 2643 auf Sandybridge EP Basis, Sockel 2011-0
 
  • Gefällt mir
Reaktionen: Smartbomb
Momentan dürstet unsere Kunden eher nach 8-16 Core CPUs mit nem höheren Takt.
Daher wird wohl die Nummer mit dem XCC nichts für uns. Mal schaun was noch so kommt.
 
deineMudda schrieb:
Da steht Software, weil es wie schon beschrieben z. B. durch den Compiler gelöst wird (einfach mal den Link anklicken).

Nachfragen nicht beantworten und stattdessen weitere unbestimmte Aktionen einfordern, so schaut es aus, wenn einer nicht eingestehen will, dass er Bloedsinn geschrieben hat.

Was ist so schlimm dran?

Die Software-Workarounds sind nicht gratis, weder in der Entwicklung noch zur Laufzeit. Nehmen wir z.B. Gforth und den retpoline-Workaround fuer Spectre v2, wo man tatsaechlich nur ein paar Flags im gcc einschalten muss (-mindirect-branch=thunk -mfunction-return=thunk); und retpolines (und andere Workarounds) kosten:

Code:
 sieve bubble matrix   fib   fft
 0.095  0.089  0.039 0.063 0.023 gforth-fast ohne retpolines auf Ryzen 3900x
 0.780  0.663  0.647 0.923 0.416 gforth-fast  mit retpolines auf Ryzen 3900x
 0.092  0.124  0.052 0.080 0.032 gforth-fast ohne retpolines auf Pentium G4560
 1.376  1.288  1.272 1.736 0.784 gforth-fast  mit retpolines auf Pentium G4560
 0.492  0.556  0.424 0.700 0.396 gforth-fast ohne retpolines auf Intel Atom 330

Die Zahlen sind die Laufzeit in Sekunden. Fuer den Atom 330 habe ich nur etwas aeltere Laufzeiten ohne retpolines, der ist gerade off-line.

Ist zugegebenermassen ein extremes Beispiel (Gforth macht staendig indirekte Spruenge), aber es illustriert, wie sowas laufen kann. Der Workaround macht Zen2 und Skylake langsamer als der garantiert nicht betroffene (dank in-order Mikroarchitektur) Atom 330. Was es auch noch nicht gibt, ist, dass der gcc das doppelt compiliert, einmal mit und einmal ohne workaround, und je nach Prozessor die passende Variante auswaehlt. So wird vermutlich einiges an Software mit retpoline ausgeliefert und kostet auch auf Prozessoren, die das nicht brauchen; oder es wird eben aus Performancegruenden ohne Retpolines ausgeliefert, und bietet eventuell eine Luecke fuer einen Angreifer.

Der Großteil der Lücken wurde schon bei den heute erhältlichen Prozessoren in Hardware gefixt.

Aber eben nicht alle. Und es ist schon gut, wenn sich da ein paar Leute mehr aufregen, sonst machen die Hardwarehersteller naemlich nichts. Bei Rowhammer sieht man, wie das laufen kann: Das haetten die RAM-Hersteller schon laengst fixen koennen, aber als da vor kuerzerem jemand aktuelle RAMs getestet hat, gab's noch immer welche, die man so angreifen konnte. Und als ich vor kurzem geschaut habe, was DIMM-Hersteller zu dem Thema schreiben, fand ich nichts mehr (im Gegensatz zu vor ein paar Jahren), vermutlich aus gutem Grund. Das passiert, wenn man bei sowas den Kopf in den Sand steckt. Wenn's die Kunden nicht kuemmert, warum sollte es den Hersteller kuemmern?
 
  • Gefällt mir
Reaktionen: dahkenny, Onkel Föhn, .fF und 5 andere
@AnimeJunkie787
Ich habe unter anderem ein 2066 System - darf ich hier jetzt meine Meinung kundtun? ;)

@topic
Bezug nehmend darauf:
https://www.computerbase.de/2020-10/intel-xeon-roadmap-ice-lake-sp-sapphire-rapids/

Ist der Stand noch aktuell mit Sapphire Rapids? Also Launch 2021?
Könnte die kurze Lebensdauer der CPU darauf basieren, dass die wirklich schon seit einiger Zeit gehortet werden, um die Lager auch voll zu haben, weil die Ausbeute einfach elendig ist?
Sprich, man hat der Termin des Launches so weit nach hinten gesetzt, dass man sich sicher ist bei Intel, dass es bis Sapphire Rapids ausreicht?
 
Zuletzt bearbeitet:
Also, um noch mal auf meine Anfrage in meinem Kommentar ganz oben zurück zu kommen:
Gen 10 Server, Windows Server 2019.
Welche Windows Updates kann ich deinstallieren, weil die Angriffsvektoren mittlerweile durch BIOS MicroCode Updates geschlossen wurden?
Weil die Software Workarounds VIEL mehr Leistung kosten als ausoptimierte Microcode Updates für die CPU direkt.

Und: gilt das auch für die VMs mit Win Server 2019 (Hyper V)?
Weil dann wäre das performance vernichtende MS Update ja bei JEDEM Server (also jeder VM) doppelt vorhanden auch noch!

Bei nem Kunden hamma das Ganze mal nachgeprüft:
Alter, völlig ungepatchter Win Server 2012 zu jetzt: 80% (!!) Performance Verlust!!
Nicht 8 oder 18% oder sowas (was bei Intel ja auch schon 2 Generationen sind), nein, 80% !!
Ich vermute das ist ein Extrembeispiel, aber immerhin.

Ich erinnere mich noch an ne News hier wo nach nem Fix für Spectre vx oder sonstwas, weiß nicht mehr, die SSD Benchmarks nur noch die Hälfte angezeigt hatten.
Das waren glaub ich die ersten Software Fixes, aka Win Updates.
Später hieß es dann, neuer Micro Code per BIOS Update kostet viel weniger Leistung.

Toll, und welche MS Updates kann ich jetzt wieder deinstallieren?
 
mae schrieb:
Im Juni sind's 4 Jahre seit Spectre an Intel und AMD gemeldet wurde; man liest immer von 5 Jahren Entwicklung von Mikroarchitekturen. Wenn die das Problem gleich ernst genommen und den Fix noch waehrend der Entwicklung reingekriegt haben, koennte Alder Lake vielleicht den Fix enthalten. Mal sehen.
Naja, so einfach funktioniert das leider nicht, denn mindestens mal Spectre V1 ist nicht bzw. nicht in der Form in Hardware fixbar. Warum? Weil es ein "works as designed" Problem ist.
Es geht dabei um das Ausnutzen der Out of Order Execution, die schlicht und ergreifend gewollt ist. Die Reihenfolge im Code wird geändert. Der Prozessor zerhackstückelt den Code und führt die einzelnen Teile davon in einer Reihenfolge aus, die er für richtig hält. Respektive die in Abhängigkeit der anderen Berechnungen eben der optimale Weg/schnellste Weg ist. Das ist das "Design" der OoO Execution.

Spectre V1 bedeutet in kurz einfach nur, dass du vereinfacht gesagt auf einen Speicherbereich zugreifst, worauf du keinen Zugriff hast, der Prozessor terminiert dir das ordnungsgemäß mit einem Fehler. Soweit so gut, aber durch OoO wird der Zugriff auf den Speicher VOR dem werfen des Fehlers durchgeführt. Oder sagen wir besser, er kann davor durchgeführt werden. Sodass der Prozessor zwar die Abarbeitung dann stoppt, der Zugriff erfolgt ist. Über weitere Mechanismen kann man dann entweder die Daten selbst auslesen oder indirekt auf diese Schließen. Letzteres ist dabei aber ein Problem. Denn bspw. gepaart mit einer Art "Raten" auf den Inhalt wird sowas in Summe zu einem Ding der Unmöglichkeit bei einem echten Fix. Ein Cache Hit ist schneller als ein Miss. Sprich wenn du die Daten durch rätst, dann wirst du ein Hit durch kürzere Antwortzeit erkennen. Das kann man dann einfach so lange durch probieren, bis du auf Tokens, Keys, Passwörter usw. usf. stößt und die einzelnen Teile dieser einfach komplett durch probiert hast, mit denen man sich dann weiter vorgraben kann.
Gerade Browser sind dafür anfällig, weil durch Webseiten JavaScript Code quasi ohne "Bedingungen" auf dem Client ausführbar ist und durch diese Anfälligkeit potentiell zumindest mal Daten geleakt werden können.

Das ganze erfordert aber eine seeeehr genaue Kenntnis über eine Hardware und eingesetzte Software. Man geht mehr oder weniger davon aus, dass es abseits der Laborbedingungen ultra schwer ist sowas überhaupt gezielt auszunutzen. Die bisherigen Mitigations (deswegen schimpft sich das auch so - das sind keine Fixes!!) erschweren die Ausnutzbarkeit, idealerweise soweit, dass es unattraktiv wird, darüber anzugreifen.
Für V1 Spectre bspw. wurde angedacht, die Timings soweit zu verwischen, dass ganz präzise Zugriffe zu genau dem richtigen Zeitpunkt nicht mehr (so einfach) gehen. Damit geht sowas zwar potentiell immernoch, aber es kommt dann ggf. nur irgendwelcher Random Shit zurück. Weiterhin wir (siehe auch die Intel Folie) von Sandboxing oder Isolation gesprochen. Das könnte vllt ein Ding für die Zukunft sein, dass man da mehr Layer zwischen packt um die einzelnen Schichten voneinander zu entkoppeln. Aber ich bin auch kein CPU Architektur Entwickler, kein Plan was da noch für Probleme auftreten oder für Speed Strafen bedeuten würde. Ich könnte mir eher ne Art in Hardware Sandboxing vorstellen, wo man dann entsprechenden Usercode ganz von anderen Prozessen weg trennt. Nur ist dummerweise auch Hardware eben nicht frei von Fehlern, was die SGX Geschichte klar belegt. Es wäre nur eine weitere Mitigation - aber immernoch kein Fix. Knackt man den Schutz ist das wieder offen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: DFFVB
fdsonne schrieb:
Naja, so einfach funktioniert das leider nicht, denn mindestens mal Spectre V1 ist nicht bzw. nicht in der Form in Hardware fixbar. Warum? Weil es ein "works as designed" Problem ist.

Es geht dabei um das Ausnutzen der Out of Order Execution, die schlicht und ergreifend gewollt ist.

Out-of-order (OoO) kann man ohne Spectre machen. OoO fuehrt moegliche kuenftige Befehle spekulativ aus; wenn die Spekulation richtig ist, werden die Ergebnisse (Registeraenderungen, Speicheraenderungen etc.) in den architekturell dauerhaft sichtbaren Zustand aufgenommen, sonst verworfen. Spectre beruht darauf, dass aktuelle OoO-Prozessoren das bei mikroarchitekturellem Zustand wie beim Cache anders machen: Weil's "nur" Mikroarchitektur ist, haben Prozessoren auch dauerhafte Aenderungen am (z.B.) Cache gemacht, bevor die Spekulation bestaetigt wurde. Und so konnten Daten spekulativ gelesen werden, dann auch bei einer Fehlspekulation im Cache verbleiben, und von dort ueber (schon laenger bekannte) Side Channels Auskunft ueber die zugegriffenen Adressen geben, was fuer Exploits genutzt werden kann; weitere Varianten haben an anderen Teilen des mikroarchitekturellen Zustands angesetzt.

Daraus ergibt sich klar, wie man das in der Hardware reparieren kann, ohne OoO aufzugeben: Bei einer Fehlspekulation muessen Aenderungen am mikroarchitekturellen Zustand genauso verworfen werden wie beim architekturellen Zustand. Kostet etwas Hardware, ist aber machbar.

Spectre V1 bedeutet in kurz einfach nur, dass du vereinfacht gesagt auf einen Speicherbereich zugreifst, worauf du keinen Zugriff hast, der Prozessor terminiert dir das ordnungsgemäß mit einem Fehler. Soweit so gut, aber durch OoO wird der Zugriff auf den Speicher VOR dem werfen des Fehlers durchgeführt.

Das klingt mehr nach Meltdown als nach Spectre. Bei Spectre v1 wird auf eine Speicherstelle zugegriffen, auf die der Prozess zugreifen darf (und was der Prozessor daher nicht terminiert), aber es bei architektureller (also in-order) Ausfuehrung nicht macht.

Das ganze erfordert aber eine seeeehr genaue Kenntnis über eine Hardware und eingesetzte Software. Man geht mehr oder weniger davon aus, dass es abseits der Laborbedingungen ultra schwer ist sowas überhaupt gezielt auszunutzen.

Die Hardwarehersteller und z.B. die NSA freuen sich ueber solche Verharmlosungen.

PS: Eine sehr kurze Suche ergab Spectre exploits in the "wild".
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Smartbomb und .fF
„How Wonderful Gets Done 2021“
Einfach geil, frage mich, was rauchen die für ein Kraut in der PR-Abteilung bei Intel??
 
  • Gefällt mir
Reaktionen: dahkenny, Smartbomb, itm und eine weitere Person
Termy schrieb:
Wenn Intel nicht so..."gute Beziehungen" hätte müssten sie die CPUs wohl ziemlich verramschen um irgendwie attraktiv zu bleiben. Hoffen wir, dass das ein weiterer Anreiz für die OEMs ist, AMD weiter zu etablieren ^^
Das sind nicht Beziehungen sondern Knebel Verträge die auf Jahre Laufzeit hin laufen und solange sie ihre Arbeit tun denkt keiner daran sie zu ersetzen. Allerdings wird es langsam dünn für Intel weil die Rechenschieber in den Firmen das sagen haben. Und wenn AMD nicht nur die Hardware sondern auch den Support liefern kann werden Neuanschaffungen plötzlich mit Ablauf der alten Intel Verträge ENORM interessant weil die Intel CPU's enorme Schluckspechte sind. In einer Serverfarm die teilweise eine eigene Strom Erzeugung UND AUGWÄNDIGE KÜHLUNG der Serverfarmern benötigt sind diese jährlichen Betriebs Kosten schnell höher als die einmaligen Anschaffungskosten die eben AMD auch deutlich senken konnte...nur wie gesagt das ist ein langsamer Prozess durch die bestehenden Verträge mit ihren langen Laufzeiten.
 
  • Gefällt mir
Reaktionen: Smartbomb
Salutos schrieb:
„How Wonderful Gets Done 2021“
Einfach geil, frage mich, was rauchen die für ein Kraut in der PR-Abteilung bei Intel??
"We have literally no point of selling 32 und 48 Cores to new customers because our CPUS are too energy hungry... "

But they make wonderful space heaters...
 
  • Gefällt mir
Reaktionen: Smartbomb
mae schrieb:
Out-of-order (OoO) kann man ohne Spectre machen. OoO fuehrt moegliche kuenftige Befehle spekulativ aus; wenn die Spekulation richtig ist, werden die Ergebnisse (Registeraenderungen, Speicheraenderungen etc.) in den architekturell dauerhaft sichtbaren Zustand aufgenommen, sonst verworfen. Spectre beruht darauf, dass aktuelle OoO-Prozessoren das bei mikroarchitekturellem Zustand wie beim Cache anders machen: Weil's "nur" Mikroarchitektur ist, haben Prozessoren auch dauerhafte Aenderungen am (z.B.) Cache gemacht, bevor die Spekulation bestaetigt wurde. Und so konnten Daten spekulativ gelesen werden, dann auch bei einer Fehlspekulation im Cache verbleiben, und von dort ueber (schon laenger bekannte) Side Channels Auskunft ueber die zugegriffenen Adressen geben, was fuer Exploits genutzt werden kann; weitere Varianten haben an anderen Teilen des mikroarchitekturellen Zustands angesetzt.
Das klingt mir nur nach Marketing Sprech. ;)
Geh mal bitte mehr in die Technik. Der Prozessor führt in einer für ihn selbst passenden Reihenfolge Befehle aus - diese werden, weil es eben OoO ist, in dem Fall auch dann ausgeführt, wenn er diese eigentlich gar nicht ausführen dürfte, weil der nachfolgende Befehl bspw. in eine Exception rennt. Nur dieses, "dürfte er gar nicht" entspricht schlicht nicht dem Design. Wenn du willst, dass Schritt 2 vor dem Schritt 1 ausgeführt wird (OoO in Verbindung mit Spekulativer Codeausführung), dann ist dieses Verhalten schlicht logische Konsequenz.

Ich kann dir ehrlich gesagt nicht wirklich folgen, was "mikroarchitekturellem Zustand" sein soll, technisch gesehen führt das Rechenwerk eine Operation aus und muss irgendwo die Daten her haben und diese müssen auch dann irgendwo hin, also das Ergebnis. Mit Spectre macht man sich diesen Umstand zu nutze - wie das technisch fixbar ist, erkläre mir doch bitte (ohne Marketing, sondern technisch). Das Problem ist hier ein konzeptionelles.

mae schrieb:
Daraus ergibt sich klar, wie man das in der Hardware reparieren kann, ohne OoO aufzugeben: Bei einer Fehlspekulation muessen Aenderungen am mikroarchitekturellen Zustand genauso verworfen werden wie beim architekturellen Zustand. Kostet etwas Hardware, ist aber machbar.
Das funktioniert so aber nicht, weil das Kind im Brunnen ersoffen ist, wenn das Rechenwerk die eine Operation schon durchgeführt hat. Es weis in dem Zustand noch überhaupt nichts davon, dass da im nachfolgenden Schritt eine Exception geworfen wird. Wie soll das für die Zukunft Hellsehen?? -> technisch nicht möglich.



mae schrieb:
Das klingt mehr nach Meltdown als nach Spectre. Bei Spectre v1 wird auf eine Speicherstelle zugegriffen, auf die der Prozess zugreifen darf (und was der Prozessor daher nicht terminiert), aber es bei architektureller (also in-order) Ausfuehrung nicht macht.
Das ergibt keinen Sinn - wenn er zugreifen darf, darf er zugreifen. Was er bei In Order anders macht ist auch logisch, die Reihenfolge ist eben anders.
Bei Spectre V1 nutzt man aus, dass die Sprungvorhersage etwas anderes vorher sagt als man dann am Ende durchführt und aufgrund des Zugriffs eben somit an den Daten kommt. Das ist aber kein Problem des Wegputzens der Daten, sondern ein konzeptionelles Thema. Natürlich könntest du hier vielleicht aufräumen, aber man will doch, dass die Daten da drin stehen? Das ist doch Teil der Geschwindigkeitssteigerung, weil eben OoO den Vorteil bringt, in dem Fall schlicht das Ergebnis schon parat zu haben.



mae schrieb:
Die Hardwarehersteller und z.B. die NSA freuen sich ueber solche Verharmlosungen.
Halte ich für keine sinnige Aussage - es geht doch viel eher um die Relation von Aufwand zu potentiellen Nutzen in Sachen Angriffsvektor. Das Ding ist, es gibt Tonnen von Software Exploits, die nichts mit irgendwelchen Hardware Themen zu tun haben. Teils seit Monaten und Jahren da drin schlummern - irgendwelche sudo Priv. Exc. Themen von jüngst, Paradebeispiel. Lücke seit Jahren! vorhanden.

Sich da auf die CPU einzuschießen ist klar nicht falsch oder soll auch nicht so verstanden werden. In Relation zum Rest ist das aber einfach hoher Aufwand für einen begrenzten Erfolg. Wer rein will, nutzt viel einfachere Lücken. Die sudo Thematik von jüngst hab ich schon benannt. Auf der Microsoft Seite war jüngst das Exchange Thema in aller Munde. In welcher Relation dazu steht deiner Ansicht nach das CPU Thema?? Für mich in keiner wirklich greifbaren...
 
  • Gefällt mir
Reaktionen: deineMudda
Zunaechst einmal die Grundbegriffe:

Architektur: Der Befehlssatz und der darin beschriebene architekturelle Zustand: Register, Flags, Speicher.

Mikroarchitektur: Wie die Architektur implementiert wird, z.B. mit caches, pipelines, branch prediction, in-order oder OoO, register renaming, und dabei gibt es noch viele Entwurfsentscheidungen. Wobei man niedriglevelige Dinge wie den Fab-Prozess nicht dazuzaehlt.

Dieselbe Architektur kann mit verschiedenen Mikroarchitekturen implementiert werden, und gerade bei der AMD64-Architektur gibt es ja sehr viele verschiedene Mikroarchitekturen (z.B. Haswell, Skylake, Ice Lake, Zen, Zen 2, Zen 3). Das heisst aber auch, dass die Mikroarchitektur fuer den Befehlssatz nicht sichtbar ist, sondern sich nur in der Laufzeit auswirkt.

Mikroarchitektureller Zustand ist z.B., was sich in Caches, oder im Branch predictor befindet, aber z.B. auch der Power-Zustand der AVX-Einheit auf dem Skylake. Das ist, wie gesagt, fuer die Architektur eigentlich unsichtbar, aber es wirkt sich auf das Timing aus, und daher kann Code mit Hilfe von Zeitmessungen etwas ueber diesen Zustand herausfinden.

fdsonne schrieb:
Ich kann dir ehrlich gesagt nicht wirklich folgen, was "mikroarchitekturellem Zustand" sein soll, technisch gesehen führt das Rechenwerk eine Operation aus und muss irgendwo die Daten her haben und diese müssen auch dann irgendwo hin, also das Ergebnis.

Der spekulative architekturelle Zustand wird schon seit den ersten modernen OoO-Prozessoren in Zwischenpuffern gespeichert, und dann erst in der commit/retirement-Stufe der Pipeline, die die Befehle in-order verarbeitet, in dauerhaften architekturellen Zustand uebergefuehrt. Wenn das nicht so waere, wuerden OoO-Prozessoren nicht die Architektur implementieren.

Bisher wurden solche Zwischenpuffer bei mikroarchitekturellem Zustand oft nicht verwendet, weil's ja nur Mikroarchitektur war und architekturell nicht sichtbar: Wenn eine andere Cache line im Cache liegt, dann wirkt sich das auf die Performance aus, aber nicht auf die architekturell korrekte Ausfuehrung. Und das macht sich Spectre zu nutze: es gibt dadurch einen Side channel von der spekulativen Ausfuehrung in die nicht-spekulative Ausfuehrung.

Wenn man jetzt fuer z.B. Cache-updates oder Branch predictor updates solche Zwischenpuffer verwenden wuerde, und den dauerhaften Cache erst beim commit aendert, gaebe es diesen Seitenkanal nicht mehr, und damit kein Spectre.

Das funktioniert so aber nicht, weil das Kind im Brunnen ersoffen ist, wenn das Rechenwerk die eine Operation schon durchgeführt hat. Es weis in dem Zustand noch überhaupt nichts davon, dass da im nachfolgenden Schritt eine Exception geworfen wird. Wie soll das für die Zukunft Hellsehen?? -> technisch nicht möglich.

Deswegen wird das Ergebnis der Operation zwischengespeichert statt gleich z.B. das architekturelle Register zu ueberschreiben. Und das mit den Zwischenspeichern funktioniert: Es gibt keine Spectre-Variante, die versucht, spekulative architekturelle Daten direkt auszulesen. Stattdessen verwendet Spectre mikroarchitekturelle Seitenkanaele, weil dort noch nicht mit Zwischenspeichern gearbeitet wird.

Das Ding ist, es gibt Tonnen von Software Exploits, die nichts mit irgendwelchen Hardware Themen zu tun haben. Teils seit Monaten und Jahren da drin schlummern - irgendwelche sudo Priv. Exc. Themen von jüngst, Paradebeispiel. Lücke seit Jahren! vorhanden.

Klar, gibt es auch, muessen auch gefixt werden. Da kann man auch nicht sagen: Ist doch eh egal, es gibt noch soviele andere Luecken.

Sich da auf die CPU einzuschießen ist klar nicht falsch oder soll auch nicht so verstanden werden. In Relation zum Rest ist das aber einfach hoher Aufwand für einen begrenzten Erfolg. Wer rein will, nutzt viel einfachere Lücken.

Nur wenn sie da sind. Um auf Dein sudo-Beispiel einzugehen:

Code:
> sudo su
-bash: sudo: command not found

Und von Exchange sind wir sowieso nicht betroffen. Von Spectre aber schon.

In welcher Relation dazu steht deiner Ansicht nach das CPU Thema?? Für mich in keiner wirklich greifbaren...

Es nuetzt die sicherste Software nichts, wenn Hardware-Luecken wie Spectre oder Rowhammer nicht gefixt werden. Du gehst davon aus, dass Du sowieso unsichere Software verwendest, daher kaufst Du gerne auch lueckenhafte Hardware. Ich nicht.
 
Zurück
Oben