Už je sice rok 2019 a ne 2018, ale bohužel to vypadá, že zdaleka není konec objevům bezpečnostních chyb v procesorech. Včera byly oznámené nově objevené slabiny, které jako zranitelnost Spectre dovolují škodlivému kódu krást nepozorovaně citlivá data nebo číst informace operačního systému a privilegovaného uživatele – ale i data z hypervizoru nebo dalších VM z virtualizovaného systému a dokonce chráněná data bezpečnostní enklávy SGX nebo režimu SMM. Oddechnout si můžou ale aspoň někteří z vás, vypadá to totiž, že tyto bezpečnostní díry zejí jenom v procesorech Intelu.
Zranitelnosti MDS
Tyto zranitelnosti dostaly přezdívky ZombieLoad, RIDL a Fallout, Intel je také označuje jako Microarchitectural Data Sampling (MDS) zranitelnosti. Tyto díry nezávisle objevilo několik různých výzkumných týmů, ovšem před nynějším odhalením byly skoro rok drženy v tajnosti/pod NDA (první hlášení dostal Intel loni v červnu), takže jednotliví objevitelé o sobě nevěděli a nekomunikovali spolu. Publikace nyní proto bude v několika různých verzích a pod různými jmény, které se v některých případech překrývají.
Chyby postihují procesory Intel
Tyto chyby postihují procesory Intel zřejmě už od roku 2008 až po ty nejnovější – ani bezpečnostní opravy v nejnovějších procesorech Core 9. generace proti nim bohužel nejsou účinné. Podle objevitelů se chyby nemají týkat procesorů ARM, ani x86 procesorů od AMD, mělo by tedy jít o chybu jen v architekturách Intel. Další instrukční sady (dnes je z nich asi relevantní hlavně Power) vůbec zmíněné nejsou; vzhledem ke specifičnosti pro Intel by pravděpodobně by asi obecně mohly být v suchu.
Yesterday, researchers announced three new security exploits – Fallout, Rogue In-Flight Data Load (RIDL) and “ZombieLoad Attack”. Based on our internal assessment, we believe AMD products are not impacted by these new threats. — vyjádření AMD
ZombieLoad
Slabým místem jsou u těchto útoků data nacházející se ve stádiu zpracování v procesoru, tedy v různých bufferech, frontách a podobných datových strukturách, ne ale přímo mezipamětích cache, na které se zatím útoky tohoto typu zaměřovaly dosud. ZombieLoad (CVE-2018-12130, „Microarchitectural Fill Buffer Data Sampling“) je trošku podobný útoku Meltdown – dokáže získat data z jakékoliv oblasti paměti, přičemž ho lze provést neprivilegovaným kódem, tedy buď lokálně spuštěným běžným programem, ale i třeba javascriptem na webové stránce nebo reklamním banneru.
Útok zneužívá slabinu tzv. fill bufferů při spekulativních operacích načítání (load) v procesoru. Výzkumníci zjistili, že při selhání těchto operací a jejich následnému opětovnému provedení vzniká přechodně nechráněná situace, pomocí které se lze šikovně napsaným programem dostat k datům v oblastech paměti, kam proces útočníka nemá mít přístup. Je tedy prolomena ochrana paměti ve smyslu čtení. Ne pro zápis, takže nelze například injektovat škodlivý kód, ale touto technikou se stejně jako Meltdownem nebo Spectre dají odcizit potenciálně citlivá data.
RIDL, Fallout
Také útoky označené jako RIDL a Fallout také míří na interní buffery procesoru: Line Fill Buffers, Load Porty a Store Buffery (u Falloutu). Těmi procházejí všechny data přicházející z paměti do CPU stejně jako data, která CPU ukládá do RAM. Útok je opět spekulativní: útočník se pokusí o load dat z oblasti, kam nemá přístup (a kde se nachází proces-oběť). Spekulativní vykonávání v procesoru požadovaná data dodá z bufferů procesoru (například Line Fill Bufferu), ačkoliv by nemělo. Tato neoprávněnost je zjištěna až dodatečně a CPU pak operaci revertuje. Ovšem škodlivý kód má mezitím příležitost si data přečíst a zkopírovat pro vlastní potřebu, s čímž už uklízející CPU nic neudělá.
Tyto chyby mají jinak označení CVE-2018-12126 „Microarchitectural Store Buffer Data Sampling“, CVE-2018-12127 „Microarchitectural Load Port Data Sampling“ a CVE-2019-11091 „Microarchitectural Data Sampling Uncacheable Memory“.
Úniky/krádeže citlivých dat, odposlech na serverech
Všechny tři tyto útoky dokáží získat data z paměti privilegovaných procesů, operačního systému, hypervizoru a jiných VM běžících virtualizovaně na sdíleném fyzickém serveru (to znamená že jeden klient může šmírovat další zákazníky providera) a také ze zabezpečených enkláv SGX, čímž prolamuje jejich účinnost. Autoři uvádějí, že se tímto způsobem dá získat například historie procházení z prohlížeče, klíče, hesla a obecně data, která byla nedávno procesorem zpracovávána. Například obsah webových stránek prohlížených v již zavřeném anonymním okně prohlížeče.
VUSec například demonstroval únik dat z chráněného souboru /etc/shadow na Linuxu, v němž může mít systém uložené citlivé údaje včetně hesel. Tato operace byla realizována čistě jen pokusy o autentifikování přes SSH připojení, přičemž při každém pokusu byla leaknuta malá část a celý proces trval 24 hodin. Výzkumníci ale upozorňují, že rychlost závisí na okolnostech a v některých případech by útok mohl nést ovoce v řádu minut. V jiných demech bylo demonstrováno získání hashe hesla roota a také útok RIDL z javascriptového kódu.
Obrana: v softwaru plus aktualizací mikrokódu
Intel v dokumentu k těmto chybám uvádí, že chystá hardwarové opravy těchto slabin, které budou zapracovány do budoucích procesorů. Zatím není specifikováno, kterých/kdy. Na nynějších zranitelných procesorech bude třeba chybu ošetřovat v softwaru, podobně jako Spectre. Je třeba rizikové buffery vyprázdnit vždy před rizikovým přechodem, například před přechodem z jaderného do uživatelského režimu, před přepnutím z hypervizoru do kódu hostovaného klienta, při přechodu z kódu běžícího v enklávě SGX do kódu běžícího venku – a tak podobně. Tím by se mělo zajistit, aby pokud v neprivilegovaném režimu poběží útočný kód, nebude moci získat data patřící do privilegovaných/citlivých oblastí paměti.
Funkce pro čištění těchto bufferů (MD_Clear) v těchto situacích nicméně nejsou na dnešních CPU zpřístupněné. Intel proto vydá aktualizace mikrokódu, které je přidají. Bude nutné, aby vám výrobce PC nebo desky dodal aktualizaci BIOSu, v níž bude tento mikrokód vložen. Případně by tuto aktualizaci mohl možná opět distribuovat Microsoft přes Windows Update (případně Linuxové distribuce přes své systémy), pak by se tedy dostalo i na počítače, pro které výrobce nový BIOS nevydá. Každopádně ale budete potřebovat aktualizaci nějakým způsobem získat. Jak OS, tak BIOS desky ji pak bude nahrávat při každém spouštění, aktualizovaný mikrokód je v CPU totiž volatilní a nepřežije restart nebo vypnutí (to také znamená, že aktualizace nijak CPU fyzicky nemění).
Zatím nevíme, pro které všechny CPU Intel tyto aktualizace vydá. Proti Spectre nakonec aktualizoval jen procesory Sandy Bridge a novější a jen část předchozích procesorů architektury Nehalem. Opět tedy asi dojde na situaci, kdy u části stále použitelných CPU (jako je například Core 2 Duo/Quad) nebude aktualizace dostupná.
Aktualizováno: Opravy mikrokódu budou dostupné jenom pro procesory Sandy Bridge a novější (viz tento dokument). Všechny verze Nehalemům (včetně 32nm) mají smůlu.
Naštěstí to vypadá, že existuje alternativní čistě softwarová cesta, která by dané buffery také měla vyčistit pomocí sekvence jiných instrukcí, ovšem potřebná sekvence se údajně může lišit pro různá CPU. Intel uvádí odlišnou sekvenci pro skupinu Nehalem/Westmere a Sandy/Ivy Bridge, další pro Haswell/Broadwell, opět další pro Skylake a deriváty a ještě jiné pro Atomy (Silvermont/Airmont) a Xeony Phi (Knights Landing a Knights Mill).
Aktualizujte Operační systém
Pro fungování obou způsobů této ochrany musí ovšem být aktualizovaný používaný software a operační systém, pro které by měly teď již vycházet dotyčné aktualizace. Microsoft je pro Windows vydal v rámci včerejšího záplatovacího úterý (mělo by jít o aktualizaci KB4494441). Abyste opravy těchto chyb dostali, dbejte na to, abyste udržovali systém maximálně aktualizovaný a neodkládejte instalaci oprav. Respektive, ignorujte je jenom tehdy, pokud si jste pokročilí uživatelé a jste si skutečně jistí, že případné riziko je zanedbatelné nebo irelevantní. Obecně doporučujeme raději neriskovat a mít všechny dostupné aktualizace a opravy těchto bezpečnostních rizik nainstalované a zapnuté.
Dopady těchto chyb lze asi zhruba hodnotit jako podobné, jako u Spectre a Meltdownu. Největší riziko je pro servery, zejména cloudové, kde je útok hodně nepříjemný. Pro běžné uživatele PC je expozice škodlivému kódu menší a největším nebezpečím by bylo, pokud by tyto útoky zkoušel javascript na webových stránkách. Pokud tedy máte procesor Intel v v desktopu nebo notebooku, nemusíte vyloženě panikařit nebo hardware překotně měnit; i bez oprav asi nehrozí výrazně velké riziko (ovšem nikdy asi nelze zaručit, že tyto díry nezačne něco masivně napadat). Jak opět obecně doporučujeme průběžně instalovat všechny aktualizace operačního systému a důležitých programů jako jsou internetové prohlížeče, abyste riziko minimalizovali.
Patche podle Intelu stojí jen 1 až 3 % výkonu, ale...
Tyto opravy v softwaru a patrně i flushování bufferů pomocí nové funkce MD_Clear přidané aktualizacemi mikrokódu ale asi budou mít dopad na výkon při přechodu mezi jádrem a uživatelským prostorem a v podobných situacích. Dopad by asi mohl být podobného charakteru jako u Meltdownu/Spectre – zpomalení systémových volání a snížení výkonu I/O operací, které se projeví zejména v rychlosti NVMe SSD. Je možné, že bez aktualizovaného mikrokódu bude propad výkonu horší, než při využití nového mikrokódu, případně ochrana může být méně spolehlivá – jinak by totiž asi Intel věc pomocí mikrokódu neřešil. Ale pro to, jaké by v tom případně mohly být rozdíly, zatím informace nemáme.
Podle této stránky Intelu by na desktopu propad výkonu kvůli opravím MDS chyb v řadě úloh nemusel být ani patrný, v některých nastane zpomalení o 1–3 % (měřeno na Core i9-9900K). Otázkou ovšem je, zda byly pro tato čísla zvolené úplně relevantní benchmarky. Intel totiž hned vedle udává také příklady toho, jaký dopad má vypnutí HT, a to podle něj stojí jen 7–9 % výkonu, což je myslím příliš málo. HT má v mnoha škálujících aplikacích mnohem lepší přínos, a tudíž jeho vypnutí větší ztrátu; Intel si zdá se vybral příklady tak, aby v nich tyto velké ztráty nebyly. Je tak možné, že ony 1–3 % stejně tak neukazují nejhorší možné projevy.
Jinak mimo běžné uživatelské počítače Intel uvádí nejhorší (mimo situaci s vypnutím HT) dopad ve storage serverech, kde podle něj může nastat zhoršení až o 14 % (na Xeonu Platinum 8180). Toto opět připomíná SPectre/Meltdown, lze tedy čekat, že i v PC s NVMe úložišti může být postih víc než ty tři procenta.
Hyper Threading je opět slabinou
Ve většině těchto chyb figuruje jako rizikový faktor (ale ne jediný/nezbytný) Hyper Threading/SMT. Datové struktury, na které se útok zaměřuje, jsou totiž sdílené. Jako jeden ze způsobů ochrany se proto uvádí i vypnutí HT, což má ovšem velký dopad na výkon. Místo toho by ideálně neměli dva uživatelé (dvě VM) sdílet na serveru mít přiřazená vlákna (logické procesory) patřící k jednomu fyzickému jádru.
Intel nedoporučuje vypnutí HT jako obecné řešení těchto chyb (ty jsou zneužitelné i s neaktivním HT), ale ve svých formulacích připouští, že vypnutí HT může být pro některé (serverové) uživatele žádoucím opatřením navíc k softwarovým opravám.
Aktualizováno: mnozí výrobci operačních systémů teď uvádějí, že maximální úroveň ochrany před těmito chybami vyžaduje vypnutí HT, byť to nedoporučují všem uživatelům, ale jen těm, kteří čelí vyššímu riziku nebo spouštějí nedůvěryhodný kód (takto to formuluje Apple, který také varuje, že to může snížit výkon až o 40 %). Ovšem Google je o dost radikálnější a kompletně vypne HT v Chromeboocích, respektive systému Chrome OS.
Další informace: Hyper Threading v ohrožení kvůli dírám v CPU Intel. Google ho úplně vypne, jinde váhají
Zdroje k MDS zranitelnostem:
- MDSAttacks.com (informace VUSecu)
- CPU.fail (informace Univerzity v Grazu)
- ZombieLoadattack.com
- Analýza Intelu a informace k zranitelnostem a řešením
- Stránka Intelu s benchmarky měřícími výkonnostní dopad oprav
- Seznam procesorů, které dostanou opravu mikrokódu
- Informace k MDS zranitelnostem a opravám od Microsoftu (aktualizace Windows)
- Informace a bezpečnostní doporučení pro Ubuntu Linux
- Blogpost s informacemi a vysvětlením chyb MDS od Red Hatu
- Informace k chybám MDS a ochraně v MacOS od Apple
- Referát k útoku ZombieLoad
- Referát k útoku RIDL
- Referát k útoku Fallout
Nástroje MDS Tools pro kontrolu, zda je systém zranitelný
VUSec kromě informací, zdrojového kódu exploitu a dem také publikoval nástroj, kterým můžete otestovat počítač a zjistit, zda se vás MDS zranitelnosti týkají, či zda je má váš operační systém ošetřené, případně zda mikrokód vašeho procesoru poskytuje funkci MD_Clear.