Odhalení bezpečnostních chyb Meltdown a Spectre 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
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.
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:
- Publikace BitDefenderu
- Podrobný referát (nutná registrace)
- Informace k chybě od Intelu
- Informace k chybě od AMD
- Informace pro Microsoft Windows
- Bulletin pro Red Hat
- CVE