Tweets by @buherablog
profile for buherator at IT Security Stack Exchange, Q&A for IT security professionals

A BitBetyár Blog

Túljártál a nagyokosok eszén? Küldd be a mutatványodat! (e-mail a buherator gmailkomra jöhet)

Full-Disclosure / Névjegy / Coming out


Promó

H.A.C.K.

Címkék

0day (110) adobe (87) adobe reader (21) anonymous (26) apple (60) az olvasó ír (49) blackhat (20) botnet (22) bug (200) buherablog (44) buhera sörözés (39) bukta (49) deface (38) dns (22) dos (29) esemény (82) facebook (26) firefox (64) flash (33) gondolat (31) google (59) google chrome (36) hacktivity (37) hírek (117) incidens (224) internet explorer (88) iphone (35) java (50) jog (22) kína (21) kriptográfia (68) kultúra (21) linux (24) malware (43) microsoft (142) móka (48) mozilla (23) office (26) oracle (40) os x (43) patch (197) php (20) politika (31) privacy (58) programozás (22) safari (34) sql injection (62) windows (85) xss (77) Címkefelhő

Licensz

Creative Commons Licenc

Helyi jogosultságkiterjesztés Linuxra

2010.12.08. 18:28 | buherator | 5 komment

Már több helyen megjelent a hír, hogy Dan Rosenberg helyi jogosultságkiterjesztésre alkalmas exploitot publikált a Full-Disclosure listán. A szerzemény igen érdekes, ugyanis három különböző hiba összekapcsolásával éri el a root állapotot:

Az exploit alapjául a CVE-2010-4258 jelű probléma szolgál: clone()-al bizonyos módon létrehozott szálak egy NULL szót írnak a felhasználó által meghatározott helyre a memóriában kilépéskor. Ez az írás természetesen csak a felhasználó számára kijelölt, userspace memóriaterületen történhet...elvileg. Ha ugyanis a kernel kiterjeszti a folyamat adatszegmensét egy kernel módból induló rendszerhívás végrehajtásához, de ezután egy oops miatt a szál elhasal, az adatszegmens nem kerül visszaállításra, így a kernelspace-be is lehet írni.

Namármost, ehhez kell valamilyen bug, ami oopsra futtat egy szálat, miután megtörtént az adatszegmens kiterjesztése. Erre jó a CVE-2010-3849 jelű Econet driver NULL pointer dereferencia, szépséghibája, hogy Econet interfészeket manapság senki sem konfigurál a rendszerén, márpedig a hiba triggereléséhez ez kell. A CVE-2010-3850 jelet kiérdemelt probléma lényege viszont éppen az, hogy egy átlag júzer is képes Econet interfészt konfigurálni, ezzel pedig a kör bezárult (vagy mi).

Látható, hogy a szálkezeléssel kapcsolatos hiba fölé elméletileg bármilyen alkalmas exploit felhúzható, erre a kétlépcsős econetes virtuózkodásra valószínűleg csak azért volt szükség, hogy Rosenberg ne unja magát halálra kódolás közben (meg persze az is szép, hogy mindhárom kihasznált hibát Nelson Elhage fedezte fel) :)

A nagyobb disztrók közül a Slackware, a Debian és az Ubuntu tartalmazza az Econet drivereket, az exploitban használt kernel szimbólumok csak Ubuntun elérhetőek, de az ezt érintő hibákat már ott is javították. Ezen kívül bekerült némi "script-kiddie védelem" is a kódba, szóval ne ész nélkül használjátok!

Címkék: linux econet

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

kutyacica 2010.12.08. 22:59:22

Rosenberg a kiraly.

Az merul fel kerdeskent h fel lehet-e huzni a min_mmap_address-t 0x01000000-ig. (ha 0x00 MSB cimet sem lehet mmap-olni, akkor meg egy byte kinullazasa sem eleg arra hogy userlandban mmap-olhato cimre tudd atirni a fuggveny mutatot).

Felteszem az messze tul pazarlo volna?

axt · http://axtaxt.wordpress.com/ 2010.12.09. 08:24:37

@kutyacica: Default setting nem hiszem, hogy lesz belőle, de a lehetőséged megvan, hogy átállítsd. Buksz 16 mega memóriát, de van egy extra "ascii-armored" protectionod. Mondjuk a 4096-os mmap_min_addr már megvéd a null pointer dereferenciáktól, ha meg van egy arbitrary null write bug, akkor rossz esetben a task_struct uid mezőjét írod át nullára és nem egy függvénypointert. [Bevallom nemtudom, hogy az új prepare/commit cred-es rendszerben ez ugyanúgy működik-e, de feltételezem, hogy valahol el van tárolva az uid.] Persze ez ellen is lehetne védekezni ...

synapse · http://www.synsecblog.com 2010.12.11. 10:23:01

@kutyacica: Persze, hogy fel lehet huzni de ehhez az exploithoz semmi koze nincs.

axt · http://axtaxt.wordpress.com/ 2010.12.11. 12:05:42

@synapse: A Rosenberg féle exploitot speciel megfogná az mmap_min_addr megemelése. Az econet_ops.ioctl legfelső (MSB) byteját kinullázza, és az így kapott "új címre" mappeli a payloadot (getroot). Valószínűleg enélkül is ki lehetne használni a hibát, csak némiképp nehezebb lenne.