Nach und nach sickern ja doch auch informationen durch die für Laien einigermaßen verständlich machen warum sich AMD hier vs Spectre relativ sicher fühlt wenngleich auch niemand hergeht und ausschließen kann das man nicht in der Zukunft doch noch einen ANDEREN Exploit (a la Spectre) entwickeln kann der dann AMDs Mechanismen aushebelt.
Hier eine kurze Diskussion von
stackoverflow:
"The indirect branch predictor of Intel CPUs only uses the lowermost 12 bits of the source instruction, thus it is easy to poison all 2^12 possible prediction histories with user-controlled memory addresses. These can then, when the indirect jump is predicted within the kernel, be speculatively executed with kernel privileges. Using the cache-timing side-channel, you can thus leak arbitrary kernel memory."
Ich fasse das mal so zusammen - bitte verzeiht ich bin Laie, kann also sein dass ich manche Punkte nicht sehr korrekt wiedergebe:
Der vermutete Grund warum AMD soviel weniger von Spectre betroffen ist liegt in der Art und weise wie das Adressmanagement im Branch Target Buffer (BTB) durchgeführt wird.
Intel speichert hier nur einen Teil der exakten Adressposition und lässt quasi 2^12 Bit Adresspositionen pro Eintrag zu. Das führt dazu dass man relativ schnell den Adressraum "scannen" kann, was letztlich dazu führt dass man den Branch-Predictor trainieren kann, was dann letztlich den Exploit darstellt.
Meine Interpretation (auch in Zusammenschau anderer Artikel zu dem Thema)
AMD scheint hier im BTB jeweils immer nur exakte Positionen zuzulassen. Meinem Verständnis nach führt das dann dazu dass man zwar nach wie vor mit dem Exploit den Adressraum "scannen" kann - aber nur mit 2^1 Adresse pro Cyclus....das könnte dann echt ein Weilchen dauern hier relevante Sprungadresse im Adressraum zu finden.
Das deckt sich auch ziemlich mit der Beschreibung bei
Ars-Technica:
Und auch diesem
deutsschsprachigen Fachartikel von Leuten die mit ARM-CPUs zu tun haben der zu ganz ähnlichen Schlussfolgerungen bzgl. Intel kommt (AMD wir hier nicht wirklich beleuchtet, es wird nur gesagt dass es prinzipiell wohl auch anfällig sind da ja Speculative Execution auch benutzt wird).
Dies wird auch deutlich an den offengelegten "Differenzen" in der Herangehensweise an Spectre 2 - Patches.
Ein paar Details dazu hat das
Red Hat Team benannt:
"
Intel Defaults:
pti 1 ibrs 1 ibpb 1 -> fix variant#1 #2 #3
pti 1 ibrs 0 ibpb 0 -> fix variant#1 #3 (for older Intel systems with no microcode update available
AMD Defaults:
Due to the differences in underlying hardware implementation, AMD X86 systems are not vulnerable to variant #3. The correct default values will be set on AMD hardware based on dynamic checks during the boot sequence.
pti 0 ibrs 0 ibpb 2 -> fix variant #1 #2 if the microcode update is applied
pti 0 ibrs 2 ibpb 1 -> fix variant #1 #2 on older processors that can disable indirect branch prediction without microcode update
EDIT: variant #1 = Spectre 1
EDIT: variant #2 = Spectre 2
EDIT: variant #3 = Meltdown
PTI = Page-Table Isolation Patch gegen Meltdown
0 = DEAKTIVIERT
1 = AKTIVIERT
Was genau die Unterschiede jedoch in 2,1,0 für IBRS und IBPB sind muss ich komplett passen derzeit.
Es scheint aber so (erste Benchmarks @Phoronix für
Intel und
AMD) dass der Performance drop @AMD vs Spectre in den meisten Fällen doch deutlich kleiner ausfällt als bei Intel.
Dazu kommt dass nur Intel Performance Drops wegen Meltdown sieht.
Außerdem gibt es wohl noch ein Problem mit den neueren CPUs von Intel Skylake/Kabylake(/CoffeeLake(?))
Siehe Stackoverflow-Link von oben:
"Retpoline as a mitigation strategy swaps indirect branches for returns, to avoid using predictions which come from the BTB, as they can be poisoned by an attacker.
The problem with Skylake+ is that an RSB underflow falls back to using a BTB prediction, which allows the attacker to take control of speculation."
Hier muss also Retpoline + IBRS aktiviert werden was bei Spectre 2 dann wohl nochmal mehr Leistung kostet...
Es bleibt also spannend - ich hoffe es gibt bald mal Architekturübergreifend erste Benchmarks wo mal die Patches getrennt und gesammelt getestet werden....