Hlavní navigace

Pozor na logování!

Petr Baudiš

Objevil se nám v linuxovém kernelu docela zajímavý červíček. Tentokrát byl zavrtaný docela překvapivě v logu, respektive v klogd, což je démon který zajišťuje, aby bylo všem řádně na vědomí dáno, že kernelu se stalo to anebo tamto.

A tak když klogd dostane od kernelu něco zajímavého co stojí za to zalogovat, hezky odiskejpuje všechna procenta, aby se zbavil problémů s formátováním (to znamená že ‚%‘ bude nahrazeno ‚%%‘ – samotné ‚%‘ a nějakých pár znaků za ním mívá v některých řetězcích speciální význam, že se na ono místo má vložit hodnota nějaké proměnné – a když zároveň není uvedena někde i ta proměnná, jejíž hodnota se má použít, jsou z toho pak zbytečné nepříjemnosti ;). Ale v tom řetězci který se zalogovává mohou existovat speciální údaje uzavřené v ‚[<‘ a ‚>]‘. to mezi nimi bývá adresa, na které si kernel usmyslel že zavolá klogd aby něco zalogoval, a tu adresu klogd už převede na nějaké hezké symbolické jméno (třebas z c0130287 to udělá insert_inode_hash) – tak víme nejen co se kernelu stalo, ale také kde se mu to stalo.

Ale je tu problém, protože cokoliv mezi těmi závorkami unikne onomu nahrazování ‚%‘ za ‚%%‘. A tak, pokud přinutíte kernel aby vygeneroval nějaký požadavek na zalogování, který bude obsahovat něco jako ‚[<%s %s %s %s>]‘, tak klogd prostě a jednoduše vykvikne ‚Segmentation fault‘ a tvrdě dopadne do slzavého údolí zabitých procesů… To by nebyla zas až taková tragédie, ale dá se to zneužít i k získání roota, takže pozor (viz níže).

Tenhle bug byl dostatečně vykřičen hlavně díky záplavě záplat postupně vydaných všemi významnějšími distribucemi, přičemž každá uznala za vhodné zvlášť to vykřičet někde kde by to slyšelo co nejvíce lidí, takže třeba na linuxtoday.com :). Svojí distribuci si můžete najít třeba tady, kde jsou k dostání patche i na jiné bugy (třeba hezky s glintem – často instalujete RPMka jako root? zkontrolujte si předtím /tmp ;).

Šikulkové by mohli využít toho že klogd běží na roota a zabydlet se u vás… (hlavní nebezpečí je ze strany lokálních uživatelů, ti vzdálení to budou mít těžší :) – a jak, ptáte se? Lokálně třeba pomocí špatně inicializované struktury sockaddr – to vygeneruje zprávičku do logu, která obsahuje i jméno programu – jméno programu se vezme z task_struct->comm, což je 16-bitový buffřík – a jsme skoro doma… potřebné [< zaplácne dva bajty takže už máme trochu méně, ale snad si vystačíme :).
Hm, a co takhle speciální kernelové moduly které volají printk() nebo různé ovladače? Můžeme třeba využít /dev/mixer a hnedka můžeme psát do logu…
No jo, ale jak to všechno využít? Není to už zas tak jednoduché, ale možné to je – staré dobré buffer overflowy. Buffery pro sestavování těchto stringů jsou staticky alokované takže budou někde nízko v paměti – nic uživatelsky definovaného nebo do stacku strčeného. Třeba když tam umístíme %1024d, co se asi stane v funkci vsyslogd()? Ta je volána ze Syslog() a spoléhá se na něj a nic už sama nekontroluje… Takže teď už jsme v lokálním bufferku vsyslogd(), respektive kousek za ním ;). A na závěr ještě poznámečku že jde využít i knfsd, který jde donutit aby vyprintk()nul nějaké cesty – a ejhle máme tu opět exploitek :)..

Mh, já vím že už je trochu pozdě, vzhledem k tomu že se objevil tenhle bug už 13.9., ale lepší pozdě než nikdy :)…

část převzata od Securityfocusů a jouko@solutions.fi

Našli jste v článku chybu?
120na80.cz: Boreliózu nelze žádným testem prokázat

Boreliózu nelze žádným testem prokázat

DigiZone.cz: V Plzni odstartovalo Radio 1

V Plzni odstartovalo Radio 1

Vitalia.cz: 7 originálních adventních kalendářů pro mlsné

7 originálních adventních kalendářů pro mlsné

DigiZone.cz: R2B2 a Hybrid uzavřely partnerství

R2B2 a Hybrid uzavřely partnerství

Lupa.cz: Levný tarif pro Brno nebude, je to kartel

Levný tarif pro Brno nebude, je to kartel

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

120na80.cz: 5 nejčastějších mýtů o kondomech

5 nejčastějších mýtů o kondomech

Lupa.cz: Obchod budoucnosti je bez front, košíků i pokladen

Obchod budoucnosti je bez front, košíků i pokladen

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Měšec.cz: Exekuční poradna: ptejte se online

Exekuční poradna: ptejte se online

Podnikatel.cz: E-Ježíšek si zařádí: nákupy od 2 do 5 tisíc

E-Ježíšek si zařádí: nákupy od 2 do 5 tisíc

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

DigiZone.cz: Sat novinky: slovenská TV8 HD i ruský NTV Mir

Sat novinky: slovenská TV8 HD i ruský NTV Mir

Vitalia.cz: Potvrzeno: Pobyt v lese je skvělý na imunitu

Potvrzeno: Pobyt v lese je skvělý na imunitu

Vitalia.cz: Test na HIV je zdarma i za pět set

Test na HIV je zdarma i za pět set

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu