Hlavní navigace

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

20. 1. 2016
Doba čtení: 2 minuty

Sdílet

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.

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í.

CS24_early

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é.

Byl pro vás článek přínosný?

Autor článku

Bývalý redaktor serveru Root.cz, dnes produktový manažer a konzultant se zaměřením na Bitcoin a kryptoměny.