Reklama

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

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.

Reklama

 

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

Oblíbené Tisk E-mail
Reklama

Komentáře

Lze tedy diky popsane chybe ovladnout i jine Guest OS, pokud utocnik ve svem Guest Machine pouzije neopraveny OS? Pokud ano pak nelze brat situaci na lehkou vahu.

Pokud tomu rozumím, tak útočník se dostane do hypervizora, ne tedy nutně přímo do jádra hostujícího systému. V případě toho Xenu se útočník dostane do Xenu, ovšem Xen sám byl zranitlený.

V případě zranitelného OS a bezpečného virtualizátoru by asi útočník ovládl maximálně hostovaný OS, virtualizaci by neměl překonat. Případně je zde ještě možnost, že zabezpečený virtualizátor situaci sám předejde (bude kontrolovat správnost těch adres, aby ochránil sám sebe).

...

Nevidím do toho dostatečně, abych vám řekl, jaké jsou v případě zranitelného virtualizačního programu běžícího nad jiným OSem možnosti útočníka. Minimálně by do hostujícího OS měl "vidět" jako běžný uživatel, podle toho, jaká má ten virtualizační program práva. Jeho možnosti na napadení hosta samotného už asi závisí na konkrétní situaci... Ale nebezpečné to určitě je, účelem virtualizace je, aby se z hostovaného systému nealo dostat ven, že.

Reklama
Reklama