Nalezena vážná bezpečnostní díra v procesorech Intel
Téma bezpečnostního problému procesorů architektury x86 stihlo obletět svět, nikdo se však k věci zatím oficiálně nevyjádřil. Víme ale, že procesory Intel vyrobené za poslední dekádu obsahují bezpečnostní chybu na úrovni hardwaru. Ta umožňuje programům s uživatelským oprávněním (od databázových aplikací až po JavaScript v prohlížeči) přístup k paměti jádra. To je samozřejmě špatně a je potřeba takovou díru zalepit. To ale v tomto případě může pouze patch operačního systému.
AKTUALIZACE: 4. ledna ráno padlo původní déletrvající NDA, a k problému se tak vyjádřilo několik společností. Článek již připravujeme.
V čem vlastně tato chyba spočívá? Dnešní procesory (jako právě Intel Core, ale i AMD) provádějí „spekulativní” spouštění kódu. To spočívá v tom, že procesor se pokusí co nejlépe odhadnout, jaký další kód se má spustit, načte ho a spustí, přičemž ale ihned neproběhne kontrola oprávnění.
Potenciálně je možné, aby nějaký program spustil vykonávání instrukce, která by byla normálně zablokována (například čtení paměti jádra v user módu). Program se tak může dostat k datovým strukturám a kódu jádra operačního systému ve virtuální paměti.
Dveře hackerům dokořán
Tato díra může být cestou k využití dalších bezpečnostních chyb pro kdejaký malware nebo hackera. Konkrétně může dojít k narušení „KASLR” (Kernel Address Space Layout Randomization), což je bezpečnostní mechanismus různých operačních systémů pro ukládání dat kernelu do náhodných míst ve virtuální paměti.
Stejně tak ale může být chyba využita obyčejným programem nebo jen přihlášeným uživatelem. Prostor paměti jádra je z dobrých důvodů ukrytý před uživatelskými procesy a programy, jelikož může obsahovat například hesla, login klíče, soubory a jiná tajemství.
Danou chybu nelze opravit jinak, než softwarově na úrovni jádra operačního systému nebo koupí jiného CPU. Tento fix se pro Linux jmenuje „KPTI” (Kernel Page Table Isolation), a je postaven na sadě oprav nazvaných „KAISER”, jehož autoři potenciální díru objevili a navrhli řešení. KPTI pak má být backportován i do starších verzí, což je poměrně vzácný počin.
Řešení je na cestě
Na opravu se prý hodně tlačilo a pro Linux již vyšla. Opravě se však nevyhne ani Microsoft Windows nebo Apple MacOS, ve kterém se ale fix již nachází od verze 10.13.2.
Oprava spočívá v úplném oddělení prostoru paměti jádra od ostatních procesů, zatímco dosud byly mapovány společně. Výhodou byl výkon, jelikož přepnutí mezi user mode na kernel mode a zpět byl velmi rychlý právě díky tomu, že kernel byl přítomen ve všech adresních prostorách programů ve virtuální paměti.
Pokud tak program něco důležitého potřeboval (například zapisování do souboru nebo otevření síťového připojení), zavolal systém, procesor provedl operaci skrze kernel v kernel módu, následně se přepnul zpět na user mode a znovu spustil proces.
Po opravě ale kernel není jen skrytý, ale vůbec v adresních prostorách programů není. To vede ke snížení výkonu, jelikož je nutné přepínat mezi dvěma adresními prostory pro každé systémové volání nebo hardwarové přerušení. Toto přepínání se neděje instantně a nutí procesor, aby vyprázdnil data z cache, a znovu načetl informace z paměti.
Je potvrzeno, že tento fix má skutečně na výkon dopad. Největší propad výkonu tak samozřejmě poznají náročnější aplikace hodně využívající systém, obyčejní uživatelé však také nejspíš nižší výkon pocítí.
Zatímco u aplikace využívající především adresový prostor uživatele dopad na výkon není, u PostgreSQL vidíme při zapnutém KPTI znatelný propad výkonu.
Procesory společnosti AMD jsou ale podle softwarového inženýra Toma Lendackyho v pořádku, stejnou chybu jako procesory Intel neobsahují, a opravu KPTI tak nepotřebují. Mikroarchitektura AMD nepovoluje reference na paměť, které by měly přístup k datům s vyšším potřebným oprávněním, a to ani těm spekulativním.
Prozkoumání patche ale odhalilo, že fix je aktivní pro všechny x86 procesory, a to i přesto, že v dřívějších commitech do Linux kernel gitu byla pro AMD výjimka. To naznačuje, že žádosti AMD o neošetřování problému na jejich procesorech nebylo vyslyšeno, a je tak možné, že se zhoršení výkonu bude týkat i jich. Ideálně by se nyní AMD měla snažit dokázat, že bugem nejsou jejich CPU dotčeny, aby na systému s CPU AMD nebyl patch aplikován (aktivován).
Bezpečnostní chyba má velký dopad na velké cloudové poskytovatele využívající procesory Intel, jako je Amazon, Google či Microsoft. Microsoft pro cloud Azure již oznámil údržbu a následný restart, která proběhne 10. ledna 2018. Amazon Web Services zase informoval své zákazníky skrze email, že v pátek 5.1.2018 proběhne důležitý update bezpečnosti. Žádné detaily ale vyřčeny nebyly, na celou událost je uvaleno embargo, mluvčí Intelu se také nevyjádřil.