Root jogot szerezhet a helyi támadó az udev sebezhetőségét kihasználva

Címkék

Sebastian Krahmer, a SUSE Security Team tagja két udev sebezhetőséget fedezett fel. Az egyik sebezhetőség sikeres kihasználása root joghoz juttathatja a helyi támadót, míg a másik szintén a helyi támadónak ad lehetőséget szolgáltatás-megtagadás (Denial of Service, DoS) típusú támadás kivitelezésére.

Frissítve: újabb disztribúciók hibajegyei

A súlyosabbik hiba: az udev nem ellenőrzi a Netlink üzenetek eredetét, ezért a rosszindulatú helyi támadó speciálisan összeállított Netlink üzenetet küldve az udev-nek root jogokhoz juthat.

A hibák több Linux disztribúciót - köztük a Fedora 9-et, a Fedora 10-et, a SUSE 10.3-at, SUSE 11-et, SUSE 11.1-et, SLES/SLED termékvonalat, az Ubuntu 6.06 LTS-t, az Ubuntu 7.10-et, az Ubuntu 8.04 LTS-t, az Ubuntu 8.10-et - is érintenek.

A részletek:

Ubuntu Security Notice USN-758-1
udev-127-5.fc10 security update
SuSE alert SUSE-SA:2009:020
FEDORA-2009-3712
Debian alert DSA-1772-1

Hozzászólások

Felmerul bennem a kerdes, hogy egy alapvetoen hardverkonfiguraciot vegzo alkalmazas, miert is akar netlinket hasznalni?
Jahm, hogy a ioctl egyszer mar mukodott?

--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

"The devd utility hooks into the devctl(4) device driver. This device driver has hooks into the device configuration system..."

Itt milyen driver-ről beszélhet vajon? Vagy pont erre utalsz, hogy egy külön réteg van még a devd és a kernel között a Linux-hoz képest?

Amit mondjuk nem értek FreeBSD esetében, hogy miért nem rántja be a devd az eszköz kernel modulját, ha egyszer tartalmazza a kernel? Nálam a Zyd chip-es USB-s Wifi kernelét kell mindig alátolni kldload-dal.

Roppant egyszeru. Mert mire a devd-hez eljut, addigra valaki mas mar lelkesen rault. Konkretan a GENERIC kernelben benne levo generic USB driver (ugen). Szoval megteheted, hogy azt kiszeded, es akkor be tudod tolteni a if_zyd-et. (De ha jol emlekszem sajat ezen iranyu tesztjeimre - es feltetelezve, hogy nem nagyon szurtam anno el -, mire a devd betolti az if_zyd-et, addigra mar keso. En ezt ugy oldottam meg, hogy windows-t jatsszattam vele. Kartya kihuz es ujra bedug utan ugyanis az eggyel elotte betoltott modul mar szepen felismerte a kutyumet.)

Ne keverjuk a szezont a fazonnal. Az udev szerepe, emlekeim szerint, a hardvervaltozasok monitorozasa, es azok kezelese a modulok toltesevel. Egy valos elethelyzetet figyelembeveve erre elegendo 0,2 masodpercenkent egy poll a kernel fele. Ugyebar eleg csak annyit kerdeznie az udevnek, hogy volt valtozas? amire kap egy szamot vagy egy -1-et. Ha kap egy szamot akkor szinten egy-egy hivassal vegigpocogtetheti, a valtozasokat.
Egyebkent mindezt siman lehetne kernel szinten is lejatszani, viszont az megsertene Linus-fele "a monolitikus kernel jo, a modularis kernel gonosz" dogmat.
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

S pl a select() ? Az jelzi hogy hallgatozok tobb porton, de nem csinalok semmit amig nem jon barmelyiken vmi. Es a varakozas a select() megvalositasaban nem kerul semmibe. Ilyesmit is el lehet kepzelni, tehat dinamikusan regisztralni callback fuggvenyeket, s a kernel (vagy egy felelos modul) meghivja oket ha kell. Igy nem kell poll-ozgatni.Amugy lehet, hogy van oka amiert nem igy valositottak meg...

Valaki igazán átírhatná már a Linuxot Javára, akkor végre lenne egy gyors, és biztonságos operációs rendszerünk. :)

Na azért jó ez a sebesség:

harald - 2009-04-16 06:56:12
This update has been submitted for testing

bodhi - 2009-04-16 16:54:32
This update has been pushed to stable

Már fel is ment a fix.

>>: sys-admin.hu :<<

/var/log/apt/term.log

...
Log started: 2009-04-16 14:32:31
...
Preparing to replace libvolume-id0 0.125-7 (using .../libvolume-id0_0.125-7+lenny1_amd64.deb) ...
...
Preparing to replace udev 0.125-7 (using .../udev_0.125-7+lenny1_amd64.deb) ...
...
Log ended: 2009-04-16 14:33:33

Igy van. A patch kb. egy hete szuletett, aznap este elfogadtak es 3 nappal kesobb release-eltek az uj udev verziot a hiba pontos leirasaval. Roviddel ezutan szuletett a jaunty upgrade kevesse figyelemfelhivo leirassal. A hivatkozott launchpad bugreportot nem linkelem, mert login utan sem osztja meg velem a launchpad :) Az elozmenyek ismereteben viszont nem ertem a titkolozast.

ha egyre gondolunk, akkor pl. így oldottam meg:

## Schedule upgrades in background [sometimes you will still need "apt-get dist-upgrade"]
VELETLEN=$[ ( $RANDOM % 59 ) + 0 ]
echo $VELETLEN" * * * * root apt-get upgrade -fy --force-yes" >> /etc/crontab

ha meg nincs semmi, ami az apt-get update-et intézné random időben [ne egyszerre terhelje a világ összes Debian-ja a servereket], akkor az is a sorba az upgrade elé, de ism.: azt csakis azért nem rakom bele, mert akkor ez esetben pl.: óránként zaklatná az ember a repo-kat kiszolgáló servert

pl.: egy helyi desktop-ra jól jöhet, mivel nem akar az ember ránézni még csak havonta se, vagy ssh-val belépni és frissíteni [már ha pl.: nem ért az adott felhasználó a géphez, és inkább nem mondja meg az ember neki a jelszót, nehogy letörölje a kernelt, mert frissítéshez esetlegesen kellene a jelszó].

jó, persze, okozhat bajt egy frissítés, de ezért is vagyok a Debian Lenny mellett, ha egyszer működik alatta minden hardware elem, akkor happy day, és ~kb évekig porosodhat az a pc, hozzá se kell nyúlni, csak nagyon ritkán dist-upgrade, vagy aptitude, mert van 1-2 frissítés, ami több dolgot művel, ezért inkább a normál upgrade-el nem engedik, hogy feltelepüljön, max azért kell pár havonta ránézni

Help!


W: GPG error: http://aptprox.mittudomain.local etch/updates Release: 
Az alábbi aláírások érvénytelenek voltak: 
BADSIG A70DAF536070D3A1 Debian Archive Automatic Signing Key (4.0/etch) <ftpmaster@debian.org>

apt-proxy -nk van, amihez nem nyulhatok. ilyenkor mi a teendo?
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.