Kernel bug in mmap.c 2.6.19.2-grsec

Nos, sikerült belefutni ebbe a kernelbugba, ami a 2.1.11-2.6.22.5-ösben (is) már kijavításra került... /az már személyes tragédiám hogy az etch már öregecske az ilyen újdonatúj kernelekhez, mindenféle nyűgök - apróbb idegesítő inkompatibilitások - merülnek fel a használatkor, úgyhogy "egyelőre" még eccerűbb volt a kernelbuggal foglalkozni, mint frissíteni. meg aztán a vanilla kernelt jobban piszkálják mint a 2.6.18os debfélét.)

El is "csórtam" PaXTeam (?) megoldását a 2.6.18as agyonpacsált kernelhez. ;-)

Igencsak extrém körülmények között sikerült reprodukálni, ami a hozzávalókból is látszik, de 20ból 20szor.

HOzzávalók: 2.6.19.2-es kernel, 2.1.10-307 (?) hivatalosan "stable" grsecurity. / Az egy más kérdés hogy nekem ez a párosítás (2.6.19+grsec) egyáltalán nem működött alapjáraton "hivatalosan" sem. Pl. mplayer és paxtest sem indult el. mplayer beüt, enter aztán nézzük egymást. paxtest is kb. közepén döglik meg. Ott is állunk és nézzük egymást.Nem fagy, meg stb. csak vár. 2 percig vártam aztán ctrl-c. ;-) / + wine (debian etch félével próbáltam) + win64 "összetevőt" tartalmazó windows futtatható jószág.

Hogy miért vagyok akkora idióta hogy egy olyan programot próbálok futtatni, ami eleve halálra ítélt (32bites linuxon 64bites windows driverprg. futtatása wine-al), nos azért mert egy maszek ügyhöz kellett a driverből a NAMSETUP.exe nevű cucc. ahhoz viszont hogy kicsomagoljam sajnos el kell indítanom. /az ötlet végül is bevált, mert összeomlás elött kicsomagolta, látszik is hogy rákérdez a felülírásra a "videón" /igen, tekintve a kissé "vicces" körülményeket naplózás kiírkálása helyett videóra vettem, / a prg. összeomlás utáni kernel bugra viszont nem számítottam. / azért vicces a naplóban hogy egy win applet akasztja meg a kernelt. ;-)

Nos ugye én 2.1.9-es grsec-et használok a 2.6.18.debian kernelhez, sajnos abban is megvolt a hiba, úgyhogy sikerült annak idején a bugot is sikeresen "backportolni" :-).

Apróság meg minden, mint a fentiekből is látszik, mert tjképpen a rendszer nem döglik meg, csak egy "kiirthatatlan folyamat" keletkezik / ami persze lehet később előfutára egy totál összeomlásnak / meg igazság szerint full pajzssal (segmexec+restrict_mprotect() elő sem jön a hiba, mert ilyenkor a wine nem indítható ;-)), mindazonáltal engem idegesített.

Itt a patch egyébként (az "agyonpacsált" 2.6.18ason is műxik): (paxtest-el megnéztem a "ficsőröket" , stb. minden műxik úgyfest ahogy kell. csak már nem kernelbugzik.


diff -Nru linux-2.6.19.2/mm/memory.c urto/linux-2.6.19.2/mm/memory.c
--- linux-2.6.19.2/mm/memory.c  2007-09-17 20:32:38.000000000 +0200
+++ urto/linux-2.6.19.2/mm/memory.c     2007-09-17 20:28:21.000000000 +0200
@@ -1052,7 +1052,7 @@
                        continue;
                }

-               if (!vma || (vma->vm_flags & (VM_IO | VM_PFNMAP))
+               if (!vma || start < vma->vm_start || (vma->vm_flags & (VM_IO | VM_PFNMAP))
                                || !(vm_flags & vma->vm_flags))
                        return i ? : -EFAULT;


Itt pedig a videó a bugról.

Annyit még morgásképpen hogy (nekem legalábbis) nem volt egyszerű megtalálni. mert egyrészt nem is az mmap.c-ben volt a hiba, ami félre is vitt egy ideig sajnos. meg aztán nem is vagyok egy "gyakorlott" bughunter vagy hogymondják.

A 2.6.22.5 meg a 2.6.19.2 között meg jócskán van már eltérés a "memory managament"-ben, ez sem egyszerűsítette éppen a hibakeresést. :-(

off: benéztem a birkaszámláló blogba is 2 hét után ~1250 (?) állt meg a számláló. no comment, az eredmény magáért beszél, de ez tényleg nem idetartozik. ;-)

Hozzászólások

Nagyon nem publikus, hogy a namsetup.exe minek kell?

Egy wxp x64es kaszni miatt "kellett", nem saját célra. Ebben van az nvidia tűzfalmicsodája. ami mint később kiderült csipszetfüggő, tehát végül is adtam a szarnak egy pofont... :(

Csak mivel "össze van drótozva" a namsetup a chipszet driverekkel, nem igazán akartam winxp alatt elindítani, - mint kiderült sajnos az összedrótozás nem véletlen :((

A csipszethez "illő" "namsetup" sajna x64-sp2 után már nem volt jó, nvidia meg abból nem adott ki újabbat / vagyis tipikus win probléma sp/hotfix után xyz nem megy gyártó meg nem ad újabbat /. (dcom hozzáférési hiba, de nem tudtam beregisztrálni mert a hivatkozott kulcs a registryben még megvolt, de az ott "említett" dcom-"kulcs" dcomcfg-ben már nem), így nem volt minek a hozzáférési jogait beállítani.)

Ennek a megoldása meg "már" nem az én szinten innentől, úgyh. mondtam a delikvensnek, upgradeljen 32bitre ;-), vagy maradjon a win beépített tűzfalánál.

SZERK: tehát gyakorlatilag teljesen "véletlenül" bukkant fel a bug. Ha kicsit tájékozottabb vagyok win+nvidia téren (namsetup csipszet függése), sosem bukkanok a "bug"-ra, mert eszembe nem jut hogy külön kicsomagoljam a telepítőből. ;-)

---------

Nem a zsömle kicsi, a pofátok nagy...