Chris Evans blogján jelent meg egy érdekes bejegyzés egy csendben javított glibc hibáról, melyre a Chromium böngésző hibakövető rendszerébe küldött egyik hibajegy terelte rá a figyelmet.
A probléma a stack méretét állítgató alloca() függvényben volt, amelyet természeténél fogva leginkább a könyvtár és a gcc fordító belső eljárásaiban használnak. Az fnmatch() függvénynek kellően hosszú UTF-8 stringet átadva, a string hosszának négyszerese kerül átadásra az alloca()-nak, ami az előjelbit átfordulásával a stack méretének csökkenéséhez vezet. Mindez pedig kódfuttatásra is jó lehet akkor, ha sikerül úgy beállítanunk az új méretet, hogy a processzor az EIP tárolt értéke helyett valamilyen általunk beállított címet olvasson vissza, ráadásul ebben az esetben a stack sütik illetve az ASLR sem nyújtanak hatékony védelmet, bár a DEP segíthet.
A glibc reakciójából sajnos nem derül ki, hogy melyik verzióban került javításra ez a probléma, Maksymilian Arciemowicz azonban megjegyezte, hogy a ProFTPd 1.3.3d verziója a jelek szerint sebezhető változattal lett forgatva - és ezzel feltehetően nincs egyedül. A történet pozitív szála, hogy a hibát a Chromium csapatának jelentő bugvadász megkapta a súlyos biztonsági hibákért járó 1337$-t, bár a probléma nem a böngészővel volt.
Koshinae 2011.05.08. 20:46:02
buherator · http://buhera.blog.hu 2011.05.08. 21:17:51