A csomag részeként kapott e2fsck segédprogramban
A sérülékenységet a rehash.c fájl mute_name() függvényének hibája okozza, amelyet a könyvtárhoz társított hash táblák újraépítésekor használnak, biztosítva, hogy a könyvtárban lévő összes fájl megfeleljen a könyvtárnak. A címtárhoz társított hash_entry struktúra megsértése azt eredményezheti, hogy a támadó a lefoglalt pufferen kívüli területre ír adatokat. Ha a hash-táblázatban több azonos nevű fájl egy könyvtárhoz kapcsolódik, akkor az e2fsck segédprogram átnevezi a duplikált fájlokat a névhez ~0, ~1 stb. hozzáadásával. Az új név átmeneti tárolására az átnevezés során egy 256 bájt méretű puffer van lefoglalva a veremben.
A másolandó adatok méretét az "entry->name_len & 0xff" kifejezés határozza meg, de az entry->name_len értékét a rendszer a lemezen lévő struktúrából tölti be, nem pedig a név tényleges méretéből számítja ki. Ha a méret nulla, akkor a tömbindex -1 értéket vesz fel, és létrejönnek a feltételek az egész számok túlcsordulásához a puffer alsó határán (egész szám alulcsordulás), és a veremben lévő egyéb adatok „~0” értékkel felülírásához. A 64 bites rendszerek esetében a sérülékenység kihasználása valószínűtlen, és nem igényel korlátozást a verem méretét illetően (ulimit -s unlimited). A 32 bites rendszerek esetében a kiaknázás lehetségesnek tekinthető, de az eredmény nagymértékben függ attól, hogy a fordító hogyan fordította le a végrehajtható fájlt.
A támadás végrehajtásához a támadónak bizonyos módon meg kell rontania az adatokat az ext2, ext3 vagy ext4 fájlrendszerű partíción. Mivel ez a művelet szuperfelhasználói jogosultságokat igényel, a biztonsági rés fenyegetést jelent, amikor az e2fsck segédprogram külső meghajtókat vagy külsőleg fogadott FS-képfájlokat vizsgál.
Forrás: opennet.ru