Hlavní navigace

Děravé jádro: chyba v klíčence umožňuje spustit cizí kód

Roman Bořánek

Po nedávno odhalené chybě v OpenSSH tu máme další nepříjemnou zranitelnost– tentokrát přímo v linuxovém jádru. Chyba se vyskytuje ve verzi 3.8 a novějších a umožňuje útočníkovi spustit kód jako superuživatel. V ohrožení jsou nejen desktopy, ale samozřejmě i servery a velká část zařízení s Androidem.

Doba čtení: 2 minuty

Závažná 0-day chyba CVE-2016–0728 byla objevena výzkumníky společnosti Perception Point, kteří o ní brzy informovali bezpečnostní tým Linuxu. Výzkumníci rovněž vyvinuli funkční exploit. Dobrou zprávu je, že zatím nemáme žádné informace o tom, že by chyba byla zneužívána v praxi. To se ale brzy po odhalení změní a je třeba rychle aplikovat záplaty. Alespoň tam, kde je to možné prostřednictvím standardního systému aktualizací.

Chyba se vyskytuje v linuxovém jádru od verze 3.8, která vyšla před necelými třemi roky, a novějších. To znamená, že chybou trpí i cca dvě třetiny zařízení s Androidem (od verze 4.4 KitKat). U alternativních ROM se to pochopitelně může lišit – vždy záleží na použité verzi jádra, nikoliv Androidu jako takového. Záplata už byla vydána a lze očekávat, že nejpozději během několika dnů (ale spíš v rámci hodin) dorazí do populárních linuxových distribucí.

Problém je v klíčence

Chyba se nachází v klíčence jádra, což je místo, kde jsou uchovávány různé důvěrné informace (hlavně klíče apod.) a odkud jsou zpřístupňovány dalším procesům. Zprvu si raději hned vyjasněme, že tyto důvěrné informace nejsou v nebezpečí! Problém spočívá v tom, že chyba útočníkovi umožňuje do dříve použitého objektu klíčenky vložit vlastní kód a spustit ho tak s právy superuživatele. Naštěstí tak lze učinit pouze lokálně, vzdálený útok není možný.

Toto vysvětlení je samozřejmě zjednodušené a ve skutečnosti je potřeba provést několik přesných úkonů. Podrobně je to popsáno na webu společnosti Perception Point. Zde citujme alespoň sekvenci kroků, které je třeba vykonat:

  1. Držet (legitimní) referenci na objekt klíče.
  2. Způsobit přetečení pole usage tohoto objektu.
  3. Nechat objekt uvolnit.
  4. Alokovat jiný objekt z uživatelského prostoru, jehož obsah je kontrolován uživatelem, na místo v paměti předtím užívané objektem klíče.
  5. Použít referenci na starý objekt klíče a spustit kód.

Provedení exploitu na současných desktopových procesorech zabere cca 30 minut. Na mobilech by to tedy bylo ještě pomalejší, avšak tady delší doba provedení útočníkovi nijak zvlášť nevadí.

MIF 2018 tip v článku Mikulenka

V největším ohrožení jsou Androidy

Vzhledem k tomu, že chybu lze zneužít pouze při lokálním přístupu, nejsou servery ve velkém ohrožení. Zde navíc můžeme očekávat rychlé záplatování. Podobně je tomu u desktopových uživatelů linuxových distribucí. Horší to bude u projektů, které aktualizace řeší po svém. Řeč je samozřejmě hlavně o Androidu. Uživatelé si na opravu počkají nejméně několik týdnů, někteří se jí možná nedočkají vůbec. Základní obrana je jasná – neinstalovat software z neověřených zdrojů. Ale kolik uživatelů se tím skutečně řídí?

Na druhou stranu výzkumníci zmiňují, že přítomnost rozšíření jako SELinux nebo SMEP & SMAP činí zneužití chyby výrazně obtížnější. A právě SELinux je používán i v Androidu. Výzkumníci už ale neupřesnili, co to zvýšení obtížnosti exploitu přesně znamená. Dá se předpokládat, že v následujících dnech se do zkoumání chyby zapojí další odborníci a zjistíme tak, jak moc je zneužití reálné.

Našli jste v článku chybu?