Intel před nedávnem dokončil vývoj a testování aktualizací mikrokódu svých procesorů, které implementují nové funkce pro ochranu před zneužitím varianty 2 chyby Spectre. Tyto aktualizace jsou součástí kombinované ochrany, která kombinuje úpravy operačního systému a volání nových funkcí upravujících chování prediktoru větvení, přes nějž útok Spectre v2 probíhá.
Publicita okolo těchto aktualizací se zatím soustředila jen na Intel, ovšem současně se také čekalo, kdy svojí obdobu těchto mikrokódů vydá AMD. To bylo dlouho potichu, nyní ale nyní tyto své vlastní aktualizace mikrokódů také publikovalo. AMD nyní vydalo na svém webu bezpečnostní update speciálně k variantě 2 chyby Spectre (Branch Target Injection, CVE-2017-5715).
Firma uvádí jako už dříve, že zranitelnost je dle jejího názoru obtížně zneužitelná kvůli architektonickým odlišnostem proti jádrům Intelu. Ovšem aplikovány na ní budou podobné opravy, takže uživatelé by neměli být ohroženi ani teoreticky. Pokud jde o Spectre variantu 1, je již z dřívějška řešena úpravami na straně softwaru (shodně pro AMD i Intel), chybou Meltdown jak známo procesory AMD netrpí.
Jinak by mělo platit, že i bez těchto nových oprav mají operační systémy určitou základní ochranu proti Spectre v2 už od lednových záplat a to i bez nových mikrokódů. Jejich využití u AMD a Intelu tuto základní ochranu rozšiřuje. AMD tyto rozšířené ochrany pomocí mikrokódu považovalo za volitelné, nakonec ale zdá se budou distribuované všem uživatelům.
„Today, AMD is providing updates regarding our recommended mitigations for Google Project Zero (GPZ) Variant 2 (Spectre) for Microsoft Windows users. These mitigations require a combination of processor microcode updates from our OEM and motherboard partners, as well as running the current and fully up-to-date version of Windows. For Linux users, AMD recommended mitigations for GPZ Variant 2 were made available to our Linux partners and have been released to distribution earlier this year.
While we believe it is difficult to exploit Variant 2 on AMD processors, we actively worked with our customers and partners to deploy the above described combination of operating system patches and microcode updates for AMD processors to further mitigate the risk.“
Funkce proti Spectre
Stejně jako Intel tedy AMD vydává aktualizace mikrokódu pro současné a nedávné procesory, které implementují ochranné funkce. Jde o IBPB (Indirect Branch Prediction Barrier), která zajišťuje, že po jejím vyvolání nebude následující kód ovlivněn předchozím stavem prediktoru, tj. jeho stav je vynulován.
Dále funkci IBRS (Indirect Branch Restricted Speculation), které brání tomu, aby byla predikce větvení pro privilegovaný jaderný kód ovlivněna (zmanipulována) běžný kódem. Třetí funkce STIBP (Single Thread Indirect Branch Predictor) dělá totéž pro dvě vlákna nad jením jádrem při SMT, tedy zamezuje tomu, aby druhé vlákno zmanipulovalo predikci větvení pro to první. Tyto funkce musí operační systém vždy ručně vyvolat zápisem do MSR registru.
Současně s těmito mikrokódy vychází také aktualizace operačního systému Windows, která zavádí jejich používání v situacích, které jsou na útok Spectre citlivé (při přepnutí z jednoho procesu do jiného, jenž je citlivý či privilegovaný). Tato aktualizace je označena jako KB4093112 a vyšla jen pro Windows 10 verze 1709 (Fall Creators Update). Zda bude časem dostupná i v jiné verzích Windows, nevíme.
Ačkoliv jsou v procesorech AMD implementovány všechny tyto tři funkce, podle whitepaperu AMD doporučuje používat jen první z nich, tedy IBPB, zatímco druhé dvě „v tuto chvíli“ nedoporučuje. Přesné důvody nejsou uvedené. Pravděpodobně jsou IBRS a STIBP považované za nepotřebné pro dosažení bezpečnosti, nebo je u nich příliš velký výkonnostní dopad za neúměrně malého přínosu.
IBPB je doporučená obrana pro operační systém Windows a v případě Linuxu je také doporučeno použít jen tuto funkci, ve spojení s již dříve dostupným čistě softwarovým opatřením Retpoline. Linux by již pro tyto funkce měl mít podporu a zdá se, že dodavatelé enterprise distribucí jako Red Hat a Suse již v lednu dodávali také aktualizaci mikrokódu pro procesory Epyc.
Aktualizovaný mikrokód bude pro Bulldozery a novější CPU
Aktualizace mikrokódu jsou podle AMD nyní vydány pro architektury počínaje jádrem Bulldozer z roku 2011 a zřejmě i všechny novější (asi by tak měl být pokrytý i Jaguar, který byl vydán v roce 2013). Podpora je tedy podobná jako u Intelu, ovšem ten nabízí aktualizaci i pro některá o něco starší CPU založená na jádrech Nehalem (byť ne pro všechna, kompletně je pokryté až Sandy Bridge také z roku 2011).
Tyto aktualizace se k vám dostanou skrze aktualizace BIOSu základní desky/počítače/notebooku, stejně jako u Intelu zde tedy budeme narážet na problém, že výrobci desek obvykle přestanou nové verze vydávat během pár let. Pro Intel začal mikrokódy distribuovat i Microsoft, ideální by bylo, kdyby si do distribuce vzal i mikrokód pro starší jádra AMD.
Operační systém umí nahrát mikrokód do CPU při každém spouštění stejně jako BIOS základní desky, takže tato řešení jsou rovnocenná (jen je třeba hlídat, aby byly po reinstalaci systému nainstalované jeho aktualizace). Linux distribuuje mikrokód běžně, takže jeho uživatelé budou krytí. Stačí, aby jim obrazy dodal v balíčku aktualizační systém distribuce.
Použití těchto funkcí by mělo mít určitý výkonnostní dopad. Jaký přesně je, zatím není známo, snad by to ale mělo být rychle otestováno v různých benchmarcích. Vzhledem k blízkosti vydání nové generace Ryzenů (má nastat 19. dubna) už to trošku vypadalo, že AMD počká s vydáním těchto oprav, aby mělo recenze ještě bez vlivu těchto patchů. Nakonec to tak ale možná nebude, podle některých uživatelů už nový mikrokód obsahuje například poslední beta BIOS desky Asus Crosshair VI Hero.