Vědci ze tří evropských univerzit odhalili nový typ útoku, který nazvali Plundervolt. Využili k němu rozhraní, skrze které je možné ovládat napětí a frekvenci procesoru. Je to vlastně stejný mechanismus, který se obvykle používá pro přetaktování procesoru a navýšení jeho výkonu.
Co se dozvíte v článku
V tomto případě ale akademici zjistili, že při správném použití je možné ovlivňovat bity v paměti SGX – Intel Software Guard Extensions. To je funkce moderních procesorů, která dovoluje citlivé informace uložit do zvlášť chráněné oblasti, do které nemá přístup běžný kód. Tedy ani ten v jádře operačního systému.
Ukázalo se ovšem, že Plundervolt umí měnit data v této paměti, čehož je možné využít například k získání šifrovacích klíčů nebo k vytvoření nových bezpečnostních mezer v software, který byl předtím bezpečný.
Data ukrytá v SGX
Intel SGX je bezpečnostní rozšíření procesorů, které vývojářům dovoluje oddělit citlivé procesy od zbytku operačního systému. Tyto procesy jsou přesunuty do samostatných oblastí nazvaných enklávy a software běžící mimo tyto oblasti nemá k těmto zabezpečeným procesům přístup.
Takto je možné vyčlenit například software, který pracuje s šifrovacími klíči. Ty jsou s ním společně uzavřeny v samostatné oblasti a ani operační systém s přístupem ke zbytku procesoru a paměti nemůže klíče přečíst. Brání to chybám nebo získání citlivých dat při úspěšném ovládnutí systému útočníkem.
Enklávy SGX obývají samostatnou paměť v malé části procesoru. Chráněny jsou jednak hardwarově pomocí oddělení této paměti, ale také softwarově pomocí šifrování přechovávaných citlivých dat.
Skupina šesti vědců z britské, belgické a rakouské univerzity přišla na postup, při kterém je možné kombinovat dříve známé útoky ke kompromitaci této chráněné oblasti. Výsledkem je získání šifrovacích klíčů, které by neměly být operačnímu systému dostupné.
Jak funguje Plundervolt
Útok Rowhammer je známý téměř pět let a umožňuje překlápět sousední bity v paměti pomocí chytré manipulace s okolními paměťovými buňkami. Druhý útok se jmenuje CLKscrew a zneužívá rozhraní Dynamic Voltage and Frequency Scaling (DVFS), které je součástí power managementu.
Plundervolt kombinuje oba mechanismy tak, aby ovlivňoval stav paměťových buněk uvnitř enkláv SGX. Jedná se o drobné změny, které však způsobují chyby v kódu a datech, která tento kód zpracovává. Podstatné totiž je, že data v SGX jsou šifrována jen při přesunu do paměti počítače, ale ne uvnitř procesoru. V paměti procesoru je tak možné je cíleně upravit. Útok sice nedokáže přímo přečíst data chráněná v SGX, ale umí ovlivňovat výstup.
Je tak možné například poškodit šifrovací algoritmus ukrytý uvnitř jinak nedostupné paměti. Výsledkem je kód, který generuje nedostatečně bezpečný výstup, který je možné úspěšně napadnout a získat z něj původní šifrovací klíč.
Útok je nebezpečný také proto, že je velmi rychlý a spolehlivý. Poškodit algoritmus AES, přečíst jeho výstup a získat klíč ze špatně zašifrovaných dat zabere jen několik minut. Při správně zvoleném postupu prý navíc Plundervolt neovlivňuje zbytek procesoru, takže pro zbytek software a operační systém nepředstavuje riziko havárie.
Ukázky útoků
Akademici zveřejnili krátká ukázková videa, na kterých vysvětlují princip a ukazují praktickou realizaci. Použité zdrojové kódy je možné stáhnout na GitHubu.
V prvním z nich je pomocí úpravy napájení poškozen jediný bit v kódu pro násobení, který je součástí implementace algoritmu AES.
Druhé video ukazuje, jak je možné takto poškozený algoritmus použít k vytvoření dvou slabě šifrovaných výstupů, z nichž je pak možné odvodit použitý klíč.
Třetí video pak ukazuje, jak je možné upravit ukazatel v kódu uvnitř SGX tak, aby funkce svá data uložila do běžného paměťového prostoru. Odtud je možné je pak snadno běžným procesem přečíst.
Nebezpečnost útoku
Útok je možné použít jen při splnění konkrétních podmínek. Útočník musí být schopen spouštět svůj kód na fyzickém hardware pod plnými právy s přístupem k procesoru. Pokud se tedy podaří útočníkovi zneužít další bezpečnostní mezery v operačním systému, je schopen ho ovládnout a získat data z chráněné oblasti. Dokončí tak své dílo a nic před ním není skryto.
Dobrá zpráva je, že útok není možné provést vzdáleně, například pomocí JavaScriptu v prohlížeči. To bylo možné u některých dříve objevených útoků a prohlížeče se tomu dnes už snaží bránit.
Plundervolt také není zneužitelný na virtualizačních platformách, protože tam kód nemůže manipulovat s rozhraním pro ovládání napájení fyzického procesoru. Hostované operační systémy jsou od hardware odděleny pomocí hypervizoru.
Přesto jde o vážný útok, který umožňuje obejít důležitý bezpečnostní mechanismus. Samotný Intel ve svém oznámení označuje riziko jako vysoké.
Jaké procesory jsou postiženy
Intel už vydal opravený mikrokód a výrobci základních desek by měli vydat aktualizaci firmware (BIOS). V konfiguraci desky by pak měla přibýt volba, která dovoluje vypnout rozhraní pro ovládání napětí procesoru. Tím by měl být útok efektivně znemožněn.
Intel v oznámení tvrdí, že chybou trpí následující řady procesorů:
- procesory Core 6., 7., 8., 9. a 10. generace
- procesory Xeon E3 v5 a v6
- procesory Xeon E-2100 a E-2200
Odkazy na další zdroje
- Plundervolt.com – domovská stránka
- ZDNet: New Plundervolt attack impacts Intel CPUs