Pokud jsou všechny počítače zranitelné vůči Meltdown a Spectre, existuje nějaká technologie, která je dokáže ochránit?

V tomto blogovém příspěvku se podíváme na to, jak technologie zavedené ke zlepšení výkonu procesoru vytvořily bezpečnostní zranitelnosti, jako jsou Meltdown a Spectre.

 

Pokud vás zajímají novinky z oblasti IT, možná si vzpomenete na bezpečnostní problémy známé jako „Meltdown“ a „Spectre“, které se objevily před časem. Tyto dvě chyby jsou silnými zranitelnostmi, které umožňují krádež informací bez vědomí kohokoli, bez ohledu na typ cíle. Tradiční útočné nástroje, jako jsou viry a malware, jsou snadno detekovatelné antivirovým softwarem, protože zanechávají stopy po svých útocích. Meltdown a Spectre však mohou přistupovat k jádru počítačových programů, aniž by zanechaly jakékoli stopy. To je dáno principy, na kterých Meltdown a Spectre fungují. V tomto článku si vysvětlíme, jak fungují moderní počítače a jaké jsou principy chyby Meltdown, která tuto skutečnost zneužívá.
Nejprve se podívejme na to, jak fungují počítače. Počítače lze obecně rozdělit na CPU pro výpočty a RAM pro záznam. CPU je zkratka pro Central Processing Unit (Central Processing Unit), která je zodpovědná za celkový úkol výpočtu a zpracování dat podle instrukcí. RAM je zkratka pro Random Access Memory (Paměť s náhodným přístupem), která ukládá řadu příkazů, které musí CPU provést, a mezivýsledky výpočtů. Tyto výpočty zahrnují informace o programu, od malých položek, jako je stav hráče v aktuálně hrané hře, až po velké položky, jako jsou informace o operačním systému a jádře, které jsou klíčové pro provoz počítače.
Při použití paměti RAM zaznamenává CPU data prostřednictvím adres. Počítače nemohou volně zaznamenávat čísla a písmena jako my v notebooku. Všechny záznamy se vytvářejí v bajtech, což je posloupnost osmi nul a jedniček. Při převodu na desítkovou soustavu lze do paměti RAM ukládat pouze čísla od 0 do 1. Při zápisu znaků se každý znak převede na odpovídající číslo a uloží. Například řetězec znaků „jablko“ se převede na 0, 255, 97, 112 a 112 a uloží se do paměti RAM v daném pořadí.
Paměť RAM byla z hlediska rychlosti revoluční, když byla poprvé vyvinuta, ale s vývojem počítačů se stala nezbytnou rychlejší paměť než RAM. Typickým příkladem je mezipaměť. Mezipaměť má podobnou funkci jako RAM, ale je to paměťový prostor, který existuje na samostatném místě. Mezipaměť je v podstatě zabudována do procesoru a je mnohem rychlejší než RAM, ale má menší kapacitu. Procesor výrazně zvyšuje rychlost zpracování tím, že ukládá výsledky výpočtů, které se pravděpodobně budou často používat při zpracování instrukcí, do mezipaměti namísto do RAM.
Mezitím se s rostoucím výkonem počítačů zvyšovala i rychlost zpracování vyžadovaná programy a CPU již nedokázalo splňovat požadavky programů používajících klasickou metodu sekvenčního zpracování. Dosáhlo svých fyzických limitů. Proto kolem roku 2000 výrobci CPU zavedli novou funkci zvanou provádění mimo pořadí. Příkazy se ukládají do paměti RAM postupně, ale CPU provádí příkazy, které přijdou jako první, a ukládá výsledky. Když jsou později potřeba další příkazy, CPU rychle načte výsledky výpočtů uložené v mezipaměti, čímž se zlepší celková rychlost zpracování.
V takovém případě, pokud se později zjistí, že příkaz provedený předem je neplatný, jak CPU reaguje? Například pokud jsou požadována data hesla pro administrátorský účet uložený v paměti RAM, CPU musí provádění tohoto příkazu zastavit. Při nesekvenčním provádění se však příkaz provede bez kontroly jeho platnosti a výsledná data se uloží do mezipaměti. Pokud si program tato výsledná data vyžádá normálním způsobem, i když byl příkaz proveden předem, požadavek je odmítnut, ale v této struktuře dojde k chybě a Meltdown této slabiny zneužije.
Nyní se podívejme na strukturu programu pro útok Meltdown. Jediné, co potřebujete, jsou stopky, které změří čas potřebný ke čtení dat. Nejprve vymažte mezipaměť výpočtem její kapacity. Tím se inicializují data v mezipaměti a eliminují se případné shody. Dále získejte data z konkrétní adresy v paměti RAM, která obsahuje důležitá data, která chcete znát (nazvěme tato data α), a uložte náhodná data na stejné místo jako adresa 1000+α v paměti. Tento příkaz je odmítnut, protože se pokouší načíst data z chráněné adresy (která musí být chráněna, protože obsahuje informace o operačním systému), ale kvůli nesekvenčnímu zpracování je proveden před odmítnutím a data na adrese 1000+α jsou uložena v mezipaměti.
Útočník poté pročítá paměť a měří čas potřebný k načtení dat na každé adrese. Rychlost přístupu je obecně konstantní, ale některé adresy čtou data výrazně rychleji než jiné. Jedná se o adresy s hodnotou 1000+α, které byly právě vypočítány a uloženy. Jakmile jsou adresy uložené v mezipaměti identifikovány, lze určit hodnotu 1000+α a zjistit hodnotu α, tj. důležité systémové informace. Opakováním tohoto procesu je možné extrahovat všechny informace důležité pro zabezpečení počítače, včetně hesla k administrátorskému účtu.
Důvod, proč je Meltdown tak děsivý, spočívá v tom, že tato technika nesekvenčního provádění je technologie používaná na všech procesorech Intel, a i když se nejedná o Intel, používají ji také společnosti Qualcomm a Samsung, které vyrábějí procesory hlavně pro mobilní zařízení. Jinými slovy, téměř všechna elektronická zařízení na Zemi jsou této hrozbě vystavena. Konkurent Intelu, společnost AMD, není Meltdownu vystavena, protože při provádění mimo pořadí příkazů nejprve kontroluje příkazy, ale je vystavena Spectre, což je obtížněji řešitelná chyba, která napadá zranitelnosti ve spekulativním provádění, což není provádění mimo pořadí. V důsledku toho jsou všechny procesory vystaveny chybě Spectre-Meltdown.
Mnoho operačních systémů, včetně Windows, vydalo nouzové záplaty, které tyto chyby řeší, ale protože útoky nezanechávají žádné stopy, není možné zjistit, zda byl počítač napaden před instalací záplaty. Navíc i po instalaci záplaty, která nebyla zásadním řešením, ale pouze způsobem, jak blokovat nesekvenční provádění, se rychlost zpracování v počítači výrazně zpomalila. Vzhledem k tomu, že se jedná o problém s konstrukcí CPU, jediným řešením je výměna hardwaru.
Doposud jsme vysvětlili, jak fungují moderní počítače a jak Meltdown toho zneužívá. CPU, které je v počítačích zodpovědné za výpočetní techniku, má funkci nesekvenčního provádění, která provádí příkazy předem, ukládá je a v případě potřeby je načítá, čímž dramaticky zvyšuje rychlost zpracování. Zranitelnosti vyplývající z tohoto procesu však vedly k vážným bezpečnostním nedostatkům. Existuje také chyba s názvem Spectre, ale protože vysvětlení Spectre vyžaduje další vysvětlení spekulativního provádění a technik útoku, nebudeme ji zde vysvětlovat. Spectre je však také případem, kdy technologie zavedená ke zlepšení výkonu CPU způsobila problémy. Doufáme, že to poslouží jako precedens pro hlubší zamyšlení nad zlepšením výkonu v jiných oblastech než v počítačích a pro zhodnocení, zda nám něco důležitého neuniká.

 

O autorovi

Spisovatel

Jsem "kočičí detektiv" a pomáhám shledávat ztracené kočky s jejich rodinami.
Dobíjím energii nad šálkem café latte, ráda se procházím a cestuji a rozšiřuji si myšlenky psaním. Doufám, že jako blogerka pozoruji svět a řídím se svou intelektuální zvídavostí, a tak mohu nabídnout pomoc a útěchu ostatním.