Intel: Bezpečnostní bug se týká procesorů všech výrobců. AMD a ARM: Nás ani ne…
Zmatek trochu souvisí i s tím, že při popisech problémů používá každý výrobce trochu odlišnou terminologii a navíc i fakt, že diskutované slabiny jsou ve skutečnosti tři a nikoli jedna. Když poté jeden z výrobců prohlásí „tento problém se nás netýká“ a jiný „tento problém se týká všech“, může ve skutečnosti každý hovořit o něčem trochu jiném a mít tedy svůj kus pravdy, byť by se mohlo zdát, že se vyjádření různých stran vzájemně vylučují.
Úvodem nebude na škodu, pokud se velmi stručně podíváme, kde se vzala nejzásadnější část problému. Moderní procesory, aby byly rychlé, používají tzv. spekulativní provádění instrukcí. Odhadují, co po nich bude v následujících taktech žádáno a to provedou s předstihem. Pokud se ukáže, že byl odhad správný, výsledek se použije (nebo ve výpočtu pokračuje) a úloha je hotová dříve = procesor je výkonnější. Pokud je odhad chybný, výsledek se zahodí.
To se samo o sobě nezdá být nějak zneužitelné, ale lze na tom dále stavět. Pokud je totiž uživatelem vyžádáno provedení kódu, ke kterému je vyžadována vyšší úroveň oprávnění, pak je při provedení první instrukce, u které je zjištěn přístup k datům s vyšší úrovní autorizace, kód zablokován a zahozen. Jenže na úrovni spekulativního provádění mohl kód běžet dál, provést ještě další instrukci (či instrukce) a pozůstatky po těchto úkonech zůstávají ležet v cache procesoru, dokud nejsou přepsány. Protože cache nižší úrovně nebo operační paměť funguje pomaleji než cache vyšší úrovně, existuje určitý čas, po který lze k těmto datům (ke kterým neměl mít uživatel přístup) přistupovat a případně si je zkopírovat a dál je využít.
Stručně řečeno, obecné využití této myšlenky je označováno jako Spectre (po onom datovém reziduu v cache) a zcela konkrétní způsob využití, který můžeme chápat jako konkrétní prvek množiny Spectre, jehož možnost využití (respektive zneužití) byla prokázána a v praxi vyzkoušena, je označován jako Meltdown.
Protože spekulativní provádění instrukcí podporují všechny moderní procesory, je otázka Spectre relevantní ve vztahu ke všem moderním procesorům. Konkrétní bezpečností slabina v podobě Meltdown ovšem byla prokázána pouze u procesorů Intel.
Proto Intel může oprávněně tvrdit, že „Podle aktuálních analýz je mnoho typů výpočetních zařízeních s procesory mnoha různých výrobců […] citlivých k těmto způsobům zneužití.“ a zároveň AMD může oprávněně prohlásit: „Nulová zranitelnost procesorů AMD z důvodu odlišné architektury procesorů AMD.“
Vždy je třeba důsledně vyhodnotit kontext. AMD (podle rozdělení zavedeného Googlem) vysvětluje, jak to je s jednotlivými typy bezpečnostních slabin, které zjistil a dokumentuje Google v rámci svého projektu Zero, během něhož došlo k jejich odhalení.
- Bounds Check Bypass - (Vy)řešeno aktualizacemi softwaru a operačních systémů. Výkonnostní dopad těchto řešení je zanedbatelný. [Tento bod, který lze chápat spíše jako slabinu v softwaru než jako slabinu hardwarů, mohl být využit (zneužit) na veškerém moderním hardwaru (AMD, ARM, Intel), ale byl již vyřešen a nemá citelný dopad na výkon.] /Spectre/
- Branch Target Injection - Odlišnost architektury AMD znamená téměř nulové riziko zneužitelnosti tohoto postupu. Doposud se nepodařilo demonstrovat, že by varianta 2 byla využitelná (zneužitelná) na procesorech AMD. /Spectre/
- Rogue Data Cache Load - Nulová zneužitelnost na hardwaru AMD z důvodu odlišné architektury. [Slabina Meltdown, která se týká Intelu.] /Meltdown/
Toto rozdělení mimo jiné vysvětluje, proč se zároveň objevují zprávy, které ve vztahu k hardwaru Intelu hovoří o zcela minimálním výkonnostním dopadu záplat stejně jako o možných výkonnostních propadů dosahujících v krajních případech i nižších desítek procent. Obojí se totiž týká řešení jiného bodu.
První bod, jak je uvedeno, je už v řadě operačních systémů zazáplatován; došlo k tomu ještě před zveřejněním informace o možném zneužití této slabiny, aby nebyla využita nějakými protispolečensky smýšlejícími živly.
Body dva a tři si bude muset pořešit především Intel a v případě bodu dva je otázkou také ARM. Bod tři je podle dosavadních informací skutečně jen specialitou Intelu a je otázkou, jak jej zvládne Intel zazáplatovat, tedy především s ohledem na to, jaký výkonnostní dopad záplata přinese.
Samotná ARM se vyjádřila velmi stručně: „Tato metoda vyžaduje lokální běh škodlivého kódu a může vyústit v přístup k datům v privilegované paměti. Našich Cortex-M procesorů, které převažují v úsporných IoT zařízeních, se to netýká.“ Nezodpovězena zůstává otázka: „A co ostatních řad?“
Co se týče způsobu distribuce záplat, očekává se, že u všech tří bodů bude řešení zahrnuto do aktualizací operačního systému, přičemž u bodu dva bude nutný i zásah do firmwaru.
Pokud jde o názvosloví, je v případě popsaných slabin obtížné najít takovou terminologii, která by byla krátká a navíc zcela korektní. Výstižnější než „bug procesoru“ je totiž označení „postup, kterým lze zneužít moderní architektonický prvek procesorů“. Nelze totiž naprosto jednoznačně říct ani to, že jde o bug procesoru, ani to, že jde o bug operačního systému. Každý má svůj podíl. Jako názorné srovnání můžeme brát kapesní krádeže v městské hromadné dopravě. Když MHD neexistovala, neexistovaly ani krádeže v MHD. Můžeme ale jen proto tvrdit, že krádeže MHD jsou „bug MHD“? Opět jde o záležitost, která je částečně o MHD, ale částečně také o systému. Lze ji řešit na úrovni jednoho (řidič každého cestující po nástupu sváže), lze ji vyřešit druhým (vyhlásí se zákaz vstupu do MHD s čímkoli odcizitelným), ale optimální bude řešení, na kterém se budou podílet obě strany takovým způsobem, který nepřinese příliš citelné zásahy do efektivity a komfortu fungování.
Kritičtěji by ovšem bylo možné hodnotit konkrétní slabinu procesorů Intelu (Rogue Data Cache Load), k níž se poměrně ostře vyjádřil Linus Torvalds. Konstatoval, že kompetentní procesorový inženýr by zajistil, aby se spekulativní provádění isntrukcí nemohlo odehrávat napříč ochrannými doménami a tím by byl problém vyřešen. Nelichotivě se také vyjádřil k přístupu Intelu, který jedná ve stylu „není to problém jen našich procesorů“, přestože nejzásadnější a experimentálně prokázaná slabina se týká právě jich.
Z materiálů Intelu
Pokud jde o možné dopady řešení ve vztahu ke stávajícímu hardwaru, objevují se různá čísla i různé názory. Prozatím nemá smysl předjímat, jak situace dopadne. Konkrétně ve vztahu k procesorům Intelu panuje podle zdrojů webu The Verge názor, že procesory Intelu starší než Skylake budou co do výkonu penalizovány výrazněji; Skylake a novější zanedbatelně.
Protože tato bezpečností slabina je podle dosavadních zjištění zneužitelná jen lokálně (nikoli po síti) a riziko spočívá v možném získání šifrovacích klíčů a hesel, je otázkou, zda záplaty pro starší procesory, kde by mohlo dojít k vyššímu výkonnostnímu propadu, budou plošné, nebo se rozhodnutí ponechá na libovůli uživatele. Běžného domácího uživatele s Haswellem či Broadwellem asi hypotetické riziko místního útoku bude trápit méně, než jistý výkonnostní propad ve hrách a aplikacích.