Lokální zranitelnost procesorů Intel umožňuje ovládnutí systému

0

Procesory Intel obsahují slabé místo, které může způsobit zranitelnost běžícího operačního systému. Bezpečnostní díra se nachází ve vykonávání instrukce SYSRET (obsluhuje v programech návrat ze systémových volání). Zneužití je možné pouze při běhu v 64bitovém režimu, přičemž postiženy jsou například systémy Windows, varianty BSD, jakož i některé virtualizační platformy. Procesory AMD neduhem podle všeho netrpí.

Chyba dovoluje procesu běžícímu v uživatelském prostoru s běžnými oprávněními spustit kód v jaderném prostoru. Útočník tak může získat oprávnění příslušející privilegovanému režimu, což znamená faktické ovládnutí počítače. Stejný útok lze však také použít pro ovládnutí hypervizora z prostředí hostovaného operačního systému. Pro zneužití chyby je nicméně nutné mít běžná uživatelská práva k systému, jde tedy o lokální zranitelnost.

Detailní popis problému přinesl na blogu virtualizačního nástroje Xen George Dunlap. Rozšíření AMD64, které pro architekturu x86 přidává 64bitový režim, vyžaduje používání tzv. kanonické formy adresy, která má vždy bity 48–63 shodné s bitem 47. Instrukce SYSRET proto při návratu ze systémového volání do programu kontroluje, zda má návratová adresa kanonickou formu. Pokud tomu tak není, procesor vrátí obecnou chybu ochrany (general protection fault). Při návratu ze systémového volání je zároveň třeba snížit třídu oprávnění (neboť dochází k návratu z privilegovaného jádra do neprivilegovaného programového kódu).

Schéma adresního prostoru architektury x86-64 (Zdroj: Wikipedia)

Zatímco procesory AMD podle všeho nejprve změní oprávnění a poté kontrolují adresu (a případně skončí chybou), procesory Intel mají pořadí obrácené. Pokud je jim tedy podstrčena nekanonická adresa, vygenerují chybu ještě v privilegovaném režimu. Útočník má možnost předem zvolit adresu, odkud se po chybě začne vykonávat kód (stále s plnými právy). Tato situace každopádně umožňuje útočníkovi přepsání paměti jádra (či hypervizora), a tedy získání kontroly nad systémem. Pokud vás zajímá podrobný popis, doporučuji si přečíst celý blogpost.

 

Zranitelnost lze naštěstí opravit v rámci jádra operačního systému. Ten musí sám zkontrolovat platnost návratové adresy, čímž se předejde výše popsanému scénáři a chyba umožňující útok nenastane. Opravu již podle všeho uvolnil například Microsoft, v Linuxu pak bylo toto slabé místo shodou okolností ošetřeno již před několika lety.

Procesory architektury Ivy Bridge

Postižené procesory se zřejmě chovají zcela v souladu se specifikací EM64T, tedy Intelovou verzí rozšíření AMD64. Potíž zřejmě vznikla buďto nepřesnou interpretací původní specifikace od AMD, nebo vinou nejasné formulace v ní. Intel navíc vedle instrukce SYSRET podporuje i vlastní alternativu SYSEXIT, která zřejmě postižena není, a operační systémy ji mohou použít místo problematické „zelené“ instrukce. Nejspíš se tak nedočkáme opravy přímo na úrovni procesoru. Ošetření prostřednictvím operačního systému také asi přináší nižší riziko problémů s kompatibilitou staršího softwaru.

Na závěr bych chtěl podotknout, že není třeba situaci dramatizovat. Po aktualizaci operačního systému se problému nemusíte obávat. Zbavovat se procesorů Intel rozhodně nemusí ani ti nejparanoidnější uživatelé.

Zdroje: US-CERT, blog.xen.org