Spectre — AMD-Microcodeupdate-Chaos seit über einem Jahr

Anfang 2018 wur­den diver­se Hard­ware-Sicher­heits­lü­cken in Pro­zes­so­ren welt­be­kannt und erhiel­ten die Namen Melt­down und Spect­re. Wäh­rend Melt­down aus­schließ­lich und bei­de Vari­an­ten von Spect­re die Intel-CPUs vie­ler Jah­re betref­fen, hat­te AMD zumin­dest bei einer Spect­re-Vari­an­te Handlungsbedarf.

Bei­de gro­ße Unter­neh­men lös­ten die Pro­ble­me der alten Pro­zes­so­ren mit­tels Micro­co­de­up­dates und plan­ten Hard­ware­lö­sun­gen für neue, noch nicht fer­ti­ge Pro­zes­so­ren ein. AMD hat im Janu­ar 2018 und Febru­ar 2018 die erfor­der­li­chen Micro­co­de­up­dates nach Tests für CPUs und APUs der Fami­ly 15h (Bull­do­zer und Abkömm­lin­ge), Fami­ly 16h (Kabi­ni und Abkömm­lin­ge) sowie Fami­ly 17h (Zen und Abkömm­lin­ge) frei­ge­ge­ben. Damit die­se Micro­co­de­up­dates aber über­haupt auf die Ziel­com­pu­ter gelan­gen kön­nen, ist ein Update erfor­der­lich, sodass die­se auch ange­wandt wer­den können.

Mög­lich­keit Nr. 1 — die Inte­gra­ti­on in ein BIOS-/UE­FI-Update:

Wäh­rend für eini­ger­ma­ßen aktu­el­le Sys­te­me BIOS-Updates ver­füg­bar sind, gibt es in der Regel für Sys­te­me, die älter als 4 Jah­re sind, oft kei­nen Sup­port, sprich Updates. Bei Main­boards ist es noch schlim­mer. Ein Bei­spiel: das ASRock FM2A68M-DG3+ — die­ses Board hat am 05.03.2019 ein BIOS-Update erhal­ten, dar­in ist das erfor­der­li­che Micro­co­de­up­date für Car­ri­zo und Bris­tol Ridge, jedoch kei­nes der Updates für die ande­ren FM2- sowie FM2+-Prozessoren. Lei­der wie­der­holt sich dies bei ande­ren Boards und Her­stel­lern. Sofern es über­haupt noch Updates für Sockel FM2- oder FM2+-Boards gibt, ist maxi­mal das Micro­co­de­up­date für die letz­te Gene­ra­ti­on der Bull­do­zer — AMD Car­ri­zo — enthalten.

Mög­lich­keit Nr. 2 — die Inte­gra­ti­on in einen Bootloader:

Eine wei­te­re Opti­on ist ein prä­pa­rier­ter Boot­loa­der, der die Micro­co­de­up­dates vor dem Betriebs­sys­tem (und des­sen eige­nem Boot­loa­der) lädt. Pro­blem ist hier nur, es ver­stößt gegen den UEFI Secu­re­Boot und kann so nicht von Unter­neh­men genutzt werden.

Mög­lich­keit Nr. 3 — die Inte­gra­ti­on in den OS-Kernel:

Die drit­te und letz­te funk­tio­nie­ren­de Vari­an­te ist die Inte­gra­ti­on der Micro­co­de­up­dates in die jewei­li­gen Ker­nels des Betriebssystems.
Beim Win­dows-Ker­nel (ntoskrnl.exe) sind die Micro­co­de­up­dates ab Win­dows 7 in 2 Datei­en des Sys­te­m32-Ord­ners enthalten:

  • mcupdate_AuthenticAMD.dll für AMD-CPUs
  • mcupdate_GenuineIntel.dll für Intel-CPUs

Wäh­rend für Intel-CPUs gleich meh­re­re Win­dows-Updates mit aktua­li­sier­ter mcupdate_GenuineIntel.dll ver­füg­bar sind und auch an alle der­zeit noch im Sup­port befind­li­chen Win­dows-Ver­sio­nen ver­teilt wur­den, sieht es bzgl. Updates mit aktua­li­sier­ter mcupdate_AuthenticAMD.dll noch immer düs­ter aus.

Wer jetzt denkt, dies sei ein rei­nes Win­dows-Pro­blem und bei Linux gäbe es so etwas nicht, hat durch­aus Recht, denn dort sieht es noch düs­te­rer aus! Linux benö­tigt da nur die jewei­li­gen Fam-Bins – aber auch wenn es da neue­re Datei­en gab, feh­len bei Linux die meis­ten Updates.

Hier eine klei­ne Übersicht:

AMD_ucodes_xls

Micro­soft lie­fert die Micro­co­de­up­dates für Spect­re bei AMD-CPUs bis­her nur für die ers­ten Bull­do­zer-CPUs (OR-B2 und OR-C0) wie auch für die ers­ten Bull­do­zer-APUs (TN-A1 und RL-A1) aus – aber auch nur für Win­dows 10 Ver­si­on 1809 sowie Ser­ver 2019 und neu­er! Älte­re Ver­sio­nen erhiel­ten nichts, auch wenn es Win­dows-10-LTSB-Vari­an­ten sind. Die kom­men­de neue Ver­si­on von Win­dows 10, bis­her als 19H1 bekannt, hat auch kei­ne wei­te­ren Microcodeupdates.

Linux, aus­ge­hend vom Ker­nel-Git lie­fert bis­her nur Micro­co­de­up­dates für die ers­ten Bull­do­zer CPUs (OR-B2 und OR-C0) in der microcode_amd_fam15h.bin. Das dar­in ent­hal­te­ne Update für TN-A1 und RL-A1 ist ver­al­tet (06001119 aus 2012). Dar­über hin­aus gibt es noch Updates für eini­ge Zen-basier­te CPUs (ZP-B2 und Pir-B2) in der microcode_amd_fam17h.bin. Da man bei Linux nur die jewei­li­gen .bin-Datei­en (microcode_amd_fam15h.bin, microcode_amd_fam16h.bin und microcode_amd_fam17h.bin) aus­tau­schen müss­te, soll­te ein Update für Linux viel schnel­ler gehen als bei Win­dows. Auch hat Linux den Vor­teil, dass die Bins für alle mög­li­chen Ker­nel genutzt wer­den könn(t)en. Aber seit Mona­ten ist es still in der lkml.org…

Eine gro­ße Unbe­kann­te bleibt jedoch wei­ter­hin Micro­soft, denn in den ers­ten Builds (ab 10.0.18836.1000) für Win­dows 10 Ver­si­on 20H1 sind alle Micro­co­de­up­dates von AMD erhal­ten, auch in älte­ren Builds als man­che vom kom­men­den Win­dows 10 “19H1”. Aus­ge­hend der bis­her übli­chen Pra­xis von Micro­soft wird jedoch hier­an bis zum fina­len Release von Win­dows 10 Ver­si­on 19H1 nichts mehr geän­dert wer­den, da Micro­soft nur noch fina­le Fein­jus­tie­run­gen macht, immer­hin ist der Start für März/April vor­ge­se­hen. War­um jedoch Micro­soft nach über einem Jahr erst anfängt, alle Micro­co­de­up­dates zu inte­grie­ren, die dann erst 2 Jah­re nach Bekannt­wer­den von Spect­re kom­men, kann nur Micro­soft selbst beantworten.

Auf bis­her vier Anfra­gen an AMD seit April 2018 hier­zu gab es bis­lang null Ant­wor­ten. Auf die bis­her drei ver­sand­ten Anfra­gen an Micro­soft gab es, Über­ra­schung, null Antworten…

Fazit:
Seit über einem Jahr gibt es Micro­co­de­up­dates, aber für die meis­ten AMD-CPUs wer­den ein­fach kei­ne ver­teilt, ein Cha­os, das für den nor­ma­len Anwen­der nicht über‑, geschwei­ge denn durch­schau­bar ist. Man kann nur hof­fen, dass dies bal­digst beho­ben wird, spä­tes­tens in einem Jahr wären dann die AMD-CPUs mit den erfor­der­li­chen Micro­co­de­up­dates über den Win­dows-Ker­nel geschützt. Bei Linux soll­ten die erfor­der­li­chen Update­da­tei­en auch lang­sam ver­teilt werden.

Links:
Pla­net 3DNow!: Micro­soft tes­tet Micro­co­de­up­dates für AMD Bull­do­zer in Win­dows 10 Build 17672
Pla­to Mavro­pou­los: Micro­code-Extra­c­tor und Micro­code Archiv
Linux Source Git — AMD µCode Updates
Pho­ro­nix: The Cur­rent Spect­re / Melt­down Miti­ga­ti­on Over­head Bench­marks On Linux 5.0