Utiliid e2fsck, mis on osa paketist , (), mis võimaldab kurjategijal saada koodi käivitamise õigusi, kui kontrollitakse failisüsteemi, mis sisaldab eriliselt vormistatud katalooge. Haavatavust on kinnitatud väljaannetest 1.43.3 kuni 1.45.4. Haavatavus on kõrvaldatud versioonis . Jaotustes jääb probleem siiski lahendamata (, , , , ).
Haavatavus on põhjustatud veast funktsioonis mutate_name() failis rehash.c, mida kasutatakse katalooge puudutavate hash-tabelite ümberkujundamisel, mis tagavad katalooge sisaldavate failide vastavuse. Katalooge puudutava hash_entry struktuuri kahjustamine võib viia ründaja andmete kirjutamisele väljapoole määratud bufferd. Kui hash-tabelis seondub kataloogiga mitu faili, millel on sama nimi, nimetab utiliit e2fsck korduvad failid ümber, lisades nimele ~0, ~1 jne. Selle ümbernimetamise ajal uue nime ajutiseks hoidmiseks eraldatakse virnas 256-baidine puhversülearu.
Kopeerimise andmete suurus määratakse väljendi «entry->name_len & 0xff» kaudu, kuid entry->name_len väärtus laaditakse struktuurist kettale, mitte ei arvutata nime tegeliku suuruse põhjal. Kui suurus on null, võtab massiivi indeks väärtuse -1 ja luuakse tingimused tervete arvude alavoolu (integer underflow) tekkimiseks ja teiste andmete kirjutamiseks kuhja väärtusega «~0». 64-bitistel süsteemidel hinnatakse haavatavuse ära kasutamist madalaks tõenäosuseks, mis nõuab kuhja suuruse piirangute puudumist (ulimit -s unlimited). 32-bitistel süsteemidel peetakse haavatavuse ära kasutamise võimalust, kuid tulemus sõltub suuresti sellest, kuidas täidetav fail kompilaatori poolt loodud.
Rünnaku sooritamiseks peab ründaja andmeid teatud viisil kahjustama ext2, ext3 või ext4 failisüsteemi osas. Kuna see operatsioon nõuab superkasutaja privileege, kujutab see haavatavus ohtu, kui e2fsck utiliit kontrollib välistel andmekandjatel või väljastpoolt saadud failisüsteemi pilte.
Allikas: opennet.ru
