Další bezpečnostní díra v procesorech podobná Spectre. SWAPGS je unikátní pro x86 CPU

V procesorech byla opět nalezna bezpečnostní zranitelnost přímo v hardwaru. Problém SWAPGS se řeší na straně OS, ale je endemický jen pro architekturu x86.

9

Odhalení bezpečnostních chyb MeltdownSpectre začátkem roku 2018 spustil vodopád podobných nepříjemných problémů se side-channel a timing útoky. Zlé na nich je, že ačkoliv se snad v praxi příliš nezneužívají kvůli komplexnosti (hackeři mají na výběr snazší triviálnější zranitelnosti nebo sociální inženýrství), hrozí přímo na úrovni výpočetního procesu v jádru CPU. Tím nabourávají koncept, že k zabezpečení počítače proti útokům stačí odhalovat a řešit bugy v kódu softwaru a není třeba se věnovat tomu, jak funguje architektura hardwaru, na kterém běží. Teď se k těmto problémům přidává další bezpečnostní díra podobná Spectre. Zajímavá je tím, že tentokrát není obecný a netýká se alternativních instrukčních sad, ale jen přímo procesorů architektury x86/x86-64.

Nový útok tohoto typu byl nalezen výzkumníky z BitDefenderu a pojmenován SWAPGS (CVE-2019-1125). Jméno je odvozeno od instrukce procesorů x86, která je zde zdrojem zneužitelného chování. Protože je specifická pro tuto instrukční sadu, nepostihuje třeba čipy ARM, Power nebo MIPS, čímž je svým způsobem výjimečná. Problém způsobuje spekulativní vykonávání instrukce SWAPGS, která slouží k načtení zvolené hodnoty do segmentového registru (ten značí offset pro používaný rozsah operační paměti).

Tato instrukce by měla být relativně nová, spolu se související operací FSGSBASE ji Intel přidal v jádru Ivy Bridge z roku 2012 za účelem zrychlení přepínání kontextu v určitých případech. Postižené by tedy měly být jen procesory od této generace a novější, tedy 22nm čipy jako Core i7-3770K, i5-3750K a pochopitelně i mobilní varianty.

Podle BitDefenderu exploitování této chyby dokáže způsobit stejné škody, jako Spectre nebo Meltdown. Kvůli spekulativnímu vykonávání používání těchto instrukcí v kódu může vést k tomu, že se do cache dostanou data z privilegovaných oblastí paměti patřících například jádru, jinému uživateli, nebo dokonce jinému počítači nebo hypervizoru v případě virtualizace. V případě zneužití v javascriptu by pak teoreticky mohla data z paměti počítače vycucávat i útočná webová stránka a odesílat je na svůj server. Protože jde o odlišný útok od původního Spectre, nebyl pokryt existujícími opravami.

Researchers from BitDefender published a paper entitled, “Bypassing KPTI Using the Speculative Behavior of the SWAPGS Instruction.” This information disclosure vulnerability can be used to speculatively access memory, potentially allowing a malicious actor to read privileged data across trust boundaries.

Oprava bude čistě na straně operačního systému

Podle výzkumníků není reálné tuto chybu opravit na straně hardwaru, nebo je možná nejlepší ji podobně Spectre V1 je lepší řešit na této vrstvě (použité formulace se liší podle zdroje). Bude proto řešená čistě přizpůsobením operačních systémů. Microsoft proti této chybě provedl opravy – patrně změnou kódu používajícího tyto instrukce – v záplatách, které vyšly již 9. července, tedy předem před odhalením. Tehdy ovšem problém SWAPGS nebyl zmíněn, chyba byla pod NDA. Díky tomuto zodpovědnému přístupu byly aktualizace široce distribuované před veřejným odhalením zranitelnosti.

intel procesor ivy bridge
Procesory Intel Ivy Bridge

Původní zprávy mluvily o tom, že se zneužitelnost této chyby týká jenom Windows. V Linuxu je potenciálně postižené místo údajně také (ve zpracování nemaskovatelných přerušení), ale podle BitDefenderu by údajně mělo být v praxi jen velmi obtížně zneužitelné. Nicméně Linux by i tak měl už mít pro tyto potenciální slabiny záplaty, například Red Hat má pro ni patřičný článek podpory. Tudíž ani na Linuxu nebude chyba přes snad minimální nebezpečnost nechána jen tak. Na MacOS od Apple by snad podle BitDefenderu zneužitelná být neměla.

Malý, ale asi ne nulový dopad na výkon

Oprava má podle Red Hatu minimální, ale asi měřitelný dopad na výkon. Ten nastává při přepínání mezi uživatelským a jaderným režimem vykonávání, takže v aplikacích, které provádějí větší množství takových přepnutí (přerušení, systémová volání), může být dopad horší. V Linuxu je oprava zahrnutá pod sadu ochran proti Spectre V1 a vypnout ji můžete stejným parametrem („nospectre_v1“). Podobný dopad může asi být i na Windows, nejde ale asi o nic, s čím by bylo třeba si dělat starosti. Obecně se doporučuje mít vždy operační systém plně aktualizovaný a ochrany aktivní, abyste minimalizovali rizika.

Intel má k chybě vyjádření na této stránce a uvádí, že červencová oprava ve Windows ji plně řeší. AMD píše ve své reakci, že jeho procesory neprovádí u instrukce SWAPGS spekulativní odhad toho, jaká bude nová uživatelem nahraná hodnota registru SG (což Intel zdá se provádí), takže CPU této značky jsou zdá se o něco méně náchylné. Zřejmě se jich netýká část útoku, nicméně další část ano.

Podle webu The Register má k chybě SWAPGS BitDefender popsány čtyři druhy zneužití. Podle toho, zda se SWAPGS spekulativně neprovede, když se měla provést (1), nebo zda se naopak spekulativně vykoná, když se provést neměla (2). Pro obě tyto varianty pak útočník může buď zjišťovat, zda určitá data, která se již nacházejí v cache, pocházejí z konkrétní adresy jaderného prostoru (a), nebo zjišťovat hodnotu dat na určité náhodně zvolené adrese (b). Procesorů AMD se prý týká jen varianta 2a. Záplaty nicméně jsou i tak třeba, AMD onu zranitelnou variantu doporučuje adresovat stejným způsobem, jako jako Spectre V1. Jon Masters s Red Hatu na Twitteru píše, že v jejich opravě jádra Linux jsou na procesorech AMD zřejmě aplikovány jen potřebné opravny, ne všechny nutné pro Intel. Zda to takto dělají Windows, nebo jsou v jeho případě opravy paušální, nevíme.

Další zdroje k chybě SWAPGS:

Galerie: Procesor Hygon Dhyana (čínské x86 CPU s licenčními jádry AMD Zen)


Další bezpečnostní díra v procesorech podobná Spectre. SWAPGS je unikátní pro x86 CPU
Ohodnoťte tento článek!
5 (100%) 3 hlas/ů

9 KOMENTÁŘE