Další díra v CPU Intel. Chyby Foreshadow prolamují virtualizaci, SMM a ochranu paměti

15. 8. 2018

Sdílet

 Autor: Cnews

Tento rok už se provalilo docela hodně bezpečnostních chyb v procesorech, což byl proces spuštěný odhalením chyb Meltdown a Spectre začátkem roku. Zejména exploit Spectre totiž vedl k prozkoumání dalších podobně zranitelných spekulativních mechanismů v procesorech a odhalení dalších možností, jak je zneužít k neautorizovanému přístupu k citlivým datům. Konec tomu asi zdaleka není a nyní se u Intelu provalila další návazná chyba s přezdívkou Foreshadow. Bohužel proti ní nefungují předchozí ochrany a bohužel je také poněkud nebezpečnější než některé předchozí, která byly relativně méně rizikové.

Chyba prolamující ochranu virtuální paměti

Chyba Foreshadow má vlastní stránku (což je trochu marnivé, ale zase lze tím pádem dobře nalézt informace), jinak na ni ale můžete narazit také pod označením L1 Terminal Fault. Ve skutečnosti jde o bezpečnostní chyby tři s označeními CVE-2018-3615, CVE-2018-3620, CVE-2018-3646. Jejich příčina je ale společná. První útok byl nezávisle objeven už v lednu výzkumníky z univerzit KU Leuven a Michigan a Adelaide plus firem Technion a CSIRO Data61. Druhé dva útoky („Foreshadow-NG“) odhalil přímo Intel při studování odhaleného slabého místa.

Chyba je opět útokem na spekulativní vykonávání instrukcí v procesoru spojená s timing útokem coby metodou, jak z CPU vyčíst spekulativně načtená data. První varianta chyby představuje útok na bezpečnostní rozšíření SGX, které Intel zavedl s procesory Skylake. SGX vytváří v počítači bezpečnou enklávu v paměti, ke které CPU dovolí přístup jen autorizovanému (podepsanému) kódu a žádnému jinému. SGX je tedy užitečné pro aplikace, které pracují s velmi citlivými daty typu šifrovacích klíčů, certifikátů, ale třeba i pro DRM. První varianta Foreshadow údajně zcela rozbíjí tuto ochranu a skrze spekulativní útok na L1 cache dokáže přečíst data z enklávy chráněné SGX. Tím je účinnost této technologie prolomena, obzvláště například v případě DRM systémů, kde šifrovací klíč jednou uniklý z jediného počítače kompromituje celý ekosystém.

chyba-foreshadow-logo

Problém i pro SMM a virtualizaci

Chyba ale nakonec není problémem jen ve vztahu k SGX. Druhá varianta analyzovaná Intelem (CVE-2018-3620) stejný útok rozšiřují obecně – útočící kód může tímto útokem přečíst jakoukoliv část operační paměti, a to pozor – fyzické RAM. Chyby Foreshadow-NG tedy rozbíjí ochrannou abstrakci virtuální paměti. To znamená, že útočník se dokáže dostat nejen k obsahu paměti, kterou používá jádro operačního systému (který má být z uživatelského prostoru nedostupný), ale dokonce i k sekcím, do kterých ani operační systém nevidí – k paměti rezervované BIOSem desky pro takzvaný System Management Mode (SMM), což je hodně citlivá oblast. Kód BIOSu běžící v SMM je podobně jako Intel ME jakýmsi kompletním správcem počítače s přístupem k celému hardwaru. Pokud útok dovolí získat obsah jeho paměti, může to usnadnit útoky na tento kód, které by pak mohly vést k jeho ovládnutí.

Třetí varianta chyby (CVE-2018-3646) rozšiřuje problém i na virtualizaci, přičemž zde budou asi potíže největší. Tímto mechanismem se totiž mohou k fyzické RAM dostat i operační systémy a aplikace nad nimi běžící virtualizovaně. Chyba jim umožňuje přečíst data v operační paměti, která patří jinému „sousednímu“ hostovanému virtuálnímu stroji, který by virtualizace správně měla izolovat. To znamená, že na takto zranitelných systémech může uživatel třeba cloudové služby číst data z paměti jiných klientů, kteří mají virtuální server na stejném stroji.

intel-chyba-foreshadowBug v práci s PTE

Útok spočívá v tom, že procesor dovolí neprivilegovanému kódu spekulativně načíst data z L1 cache (ke kterým nemá mít přístup), pokud v tabulce stránek (PTE) je bit Present vynulován nebo jsou nastavené některé jiné rezervovaná bity. Nulový bit Present znamená, že k této virtuální stránce nepřísluší stránka ve fyzické RAM. Spekulativní načtení chybně ignoruje tento stav PTE a dojde si do L1 cache pro předchozí data, která k dané stránce PTE patřila předtím, než se stala neplatnou, v dobré víře, že tím uspíší běh programu. Zneužití je možné tak, že útočník změní stav PTE, ale dokáže pak rychle přečíst zakázaná data z L1 cache, než je stav PTE pořádně reflektován. Tento stav nakonec skončí chybou page fault a vše je vráceno zpět. Ale útočník mezitím může s načtenými daty operovat a uložit si je jinam, čímž je únik dat hotov. Podrobný popis je v referátu zde, pro Foreshadow-NG pak zde.

Riziko krádeže citlivých dat

Rizikem této chyby je tedy krádež či únik osobních nebo jinak citlivých dat – šifrovacích klíčů, zneužitelných certifikátů, hesel, nebo třeba přístupu k peněženkám kryptoměn (které se teď staly velmi častým cílem). Chyba je ovšem stále lokálního charakteru, což znamená, že útočník musí spustit určitý kód na počítači, nebo vy musíte spustit kód, nastražený útočníkem (například javascript na navštívené webové stránce, i když v tomto případě zatím o implementaci v javascriptu nejsou informace). V případě cloudového serveru je problém ovšem mnohem větší, neboť na tom může útočník spustit svůj kód z definice této služby.

intel-coffee-lake-core-procesor-lga-1151-1600Chybou jsou zdá se postižené jen procesory Intel. V seznamu postižených architektur je prakticky vše z rodin „velkých jader“ Core. Od 45nm a 32nm derivátů Nehalemu přes Sandy Bridge až po Skylake/Kaby Lake/Coffee Lake a Skylake-SP/X pro servery. Kromě jader Atom a Xeonů Phi tedy vlastně všechny procesory Intelu. Zranitelnost rozšíření SGX se ovšem týká jen těch CPU, která SGX podporují, což je omezený počet modelů Skylake a vyšších.

AMD už vydalo prohlášení, že dle jeho analýz nemá procesory chybami Foreshadow postižené díky tomu, jak má stránkování v CPU chráněno. Uživatelé procesorů AMD nemají tedy ani v datacentrech opravy nasazovat.

As in the case with Meltdown, we believe our processors are not susceptible to the new speculative execution attack variants called Foreshadow or Foreshadow-NG due to our hardware paging architecture protections. We are advising customers running AMD EPYC™ processors in their datacenters, including in virtualized environments, to not implement Foreshadow-related software mitigations for their AMD platforms.

K řešení jsou třeba aktualizace OS i mikrokódu procesorů

Oprava těchto zranitelností si bude vyžadovat opravy v operačních systémech, které by teď již měly vycházet (Microsoft je oznámil včera spolu s pravidelnými úterními opravami). Bohužel je však nutná také oprava na úrovni mikrokódu procesoru, takže opět bude třeba čekat na výrobce desek, až vydají aktualizace, nebo se spoléhat, že tyto mikrokódy zpřístupní Microsoft v podobně aktualizace Windows. Naštěstí se zdá, že Intel začal s distribucí předem a tyto opravy už jsou nějakou dobu v oběhu, snad by asi mohlo jít o aktualizace, které Intel vydal 22. června a psali jsme o nich zde.  To nicméně ještě nemusí znamenat, že se už tyto nové verze mikrokódu dostaly do hotových dostupných BIOSů pro desky. Každopádně pro řádnou bezpečnost bude třeba aktualizovat. Intel nyní doporučuje vždy mít jak nejnovější updaty OS, tak nejnovější BIOSy desky/počítače.

Aktualizace (28.8. 2018):

Červnové aktualizace mikrokódu přinášejí ochrany zdá se teprve proti chybám Spectre V4/Speculative Store Bypass a Spectre V3a/Rogue Register Read. Čekají nás tedy ještě další aktualizace, na něž si budeme muset počkat.

Opravy spočívají zejména ve vyprazdňování L1 cache v rizikových situacích, aby z ní pak útočící kód nemohl předchozí data dostat. Také mikrokódové opravy od Intelu spočívají v automatickém vyprazdňování cache v některých situacích, kdy se mění úroveň privilegií. Komplikovanější situace je u třetí varianty kompromitující virtualizaci. Zde totiž zdá se musí být aktualizován jak operační systém hostů, tak hypervizor. Také kód režimu SMM v BIOSech desek údajně bude potřebovat podobné opravy.

Linux v reakci na chybu poskytuje možnost vypnout HT

Opravy v rámci Linuxu jsou popisovány zde. Zajímavé je, že Linux současně s dalšími úpravami také nyní nově zpřístupnil přepínač, kterým lze deaktivovat HT (softwarově, OS druhé vlákno přestane využívat), coby součást obranných opatření. Cílem je zřejmě zabránit útoku na L1 cache jednoho vlákna z vlákna druhého. Intel nedoporučuje HT vypínat (ztráta výkonu je velká), je však doporučeno při virtualizaci neumisťovat dva různé VM na jedno fyzické jádro procesoru. Vypnutí HT ovšem zdá se může být potřeba, pokud jako operátor serveru nemáte jistotu, že hosti používají aktualizovné OS se zapnutými opravami.

ICTS24

Dopad oprav chyb Foreshadow/Foreshadow-NG na výkon je podle Intelu prakticky vždy nulový, firma na této stránce publikovala čísla z testovaní pro různé situace, kde je výkon po opravě prakticky vždy slibován 100%. Ztráta výkonu se však může objevit tehdy, pokud se ve virtualizovaných serverech vypne HT. Dopad toho je jak známo docela drastický.

Nové procesory mají mít opravu v křemíku

Ačkoliv pro běžného uživatele PC tedy asi neplyne z těchto chyb velké riziko, v operačních systémech a BIOSech si vyžádá značné změny, což je vždycky komplikace. Dobrá zpráva je alespoň to, že snad všechny tři tyto chyby mají být v budoucnu opraveny přímo na úrovni hardwaru. Podle Intelu se oprava objeví současně s hardwarovou opravou pro Meltdown, což znamená asi v serverových procesorech Cascade Lake-SP. Zda jsou opravené nové desktopové a notebookové procesory generace 9000, které se nyní chystají na trh, to nevíme.