V utilitě e2fsck dodávané v rámci balíčku , (), která umožňuje zneužití kódu útočníka při kontrole souborového systému obsahujícího speciálně formátované adresáře. Přítomnost zranitelnosti byla potvrzena v verzích od 1.43.3 do 1.45.4. Zranitelnost byla odstraněna v aktualizaci . V distribucích zůstává problém zatím neopravený (, , , , ).
Zranitelnost je způsobena chybou ve funkci mutate_name() z souboru rehash.c, která se používá při rekonstruování hash tabulek spojených s adresářem, jež zajišťují mapování všech souborů, které se v něm nacházejí. Poškození struktury hash_entry spojené s adresářem může vést k zápisu dat útočníka do oblasti mimo přidělený buffer. V případě, že je v hash tabulce vazba na adresář s několika soubory se stejným názvem, utilita e2fsck přejmenuje duplicitní soubory přidáním k názvu ~0, ~1 atd. Pro dočasné uložení nového názvu při takovém přejmenovávání se na zásobníku vyčleňuje buffer o velikosti 256 bytů.
Velikost kopírovaných dat je určena výrazem „entry->name_len & 0xff“, avšak hodnota entry->name_len se načítá ze struktury na disku, nikoli se počítá na základě skutečné velikosti názvu. Pokud je velikost nulová, index pole nabývá hodnoty -1 a vytváří se podmínky pro celým číslem podtečení (integer underflow) a přepsání dalších dat na zásobníku hodnotou „~0“. Pro 64bitové systémy je zneužití zranitelnosti hodnoceno jako nepravděpodobné a vyžaduje absenci omezení velikosti zásobníku (ulimit -s unlimited). Pro 32bitové systémy je zneužití považováno za možné, ale výsledek silně závisí na tom, jak byl spustitelný soubor zkompilován.
Pro provedení útoku musí útočník určitým způsobem poškodit data v části s FS ext2, ext3 nebo ext4. Jelikož tato operace vyžaduje privilegium superuživatele, zranitelnost představuje hrozbu při kontrole externích jednotek nebo obrazů FS získaných z vnějších zdrojů utilitou e2fsck.
Zdroj: opennet.ru
