Paketin osana toimitetussa e2fsck-apuohjelmassa
Haavoittuvuus johtuu virheestä rehash.c-tiedoston mutate_name()-funktiossa, jota käytetään hakemistoon liittyvien hajautustaulukoiden uudelleenrakentamisen yhteydessä varmistaen, että kaikki hakemiston tiedostot täsmäävät hakemistoon. Hakemistoon liittyvän hash_entry-rakenteen vioittuminen voi johtaa siihen, että hyökkääjä kirjoittaa tietoja varatun puskurin ulkopuolelle. Jos useat samannimiset tiedostot tunnistetaan hajautustaulukossa linkitetyiksi hakemistoon, e2fsck-apuohjelma nimeää kaksoistiedostot uudelleen lisäämällä nimeen ~0, ~1 jne.. Uuden nimen tallentamiseksi väliaikaisesti tällaisen uudelleennimeämisen aikana pinoon varataan puskuri, jonka koko on 256 tavua.
Kopioitavien tietojen koko määräytyy lausekkeella "entry->name_len & 0xff", mutta merkintä->nimi_len arvo ladataan levyllä olevasta rakenteesta sen sijaan, että se laskettaisiin nimen todellisesta koosta. Jos koko on nolla, taulukkoindeksi saa arvon -1 ja luodaan ehdot kokonaislukujen ylivuodolle puskurin alarajan läpi (kokonaisluvun alivuoto) ja pinon muiden tietojen päällekirjoittamiseen arvolla "~0". 64-bittisissä järjestelmissä haavoittuvuuden hyödyntäminen arvioidaan epätodennäköiseksi, eikä se vaadi pinon koon rajoituksia (ulimit -s unlimited). 32-bittisissä järjestelmissä hyväksikäyttöä pidetään mahdollisena, mutta tulos riippuu suuresti siitä, kuinka kääntäjä käänsi suoritettavan tiedoston.
Suorittaakseen hyökkäyksen hyökkääjän on korruptoitava tiedot tietyllä tavalla osiossa ext2-, ext3- tai ext4-tiedostojärjestelmällä. Koska tämä toiminto edellyttää pääkäyttäjän oikeuksia, haavoittuvuus muodostaa uhan, kun e2fsck-apuohjelma skannaa ulkoisia asemia tai ulkoisesti vastaanotettuja FS-tiedostoja.
Lähde: opennet.ru