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!
blackshepherd · http://suckit.blog.hu 2010.12.08. 22:31:06
kutyacica 2010.12.08. 22:59:22
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
synapse · http://www.synsecblog.com 2010.12.11. 10:23:01
axt · http://axtaxt.wordpress.com/ 2010.12.11. 12:05:42