W narzędziu e2fsck dostarczanym jako część pakietu
Przyczyną luki jest błąd w funkcji mutate_name() w pliku rehash.c, która jest używana podczas odbudowy tablic skrótów powiązanych z katalogiem, zapewniając dopasowanie wszystkich plików w katalogu do katalogu. Uszkodzenie struktury hash_entry powiązanej z katalogiem może spowodować, że osoba atakująca zapisze dane w obszarze poza przydzielonym buforem. Jeśli w tabeli skrótów zostanie zidentyfikowanych kilka plików o tej samej nazwie jako połączonych z katalogiem, narzędzie e2fsck zmienia nazwę zduplikowanych plików, dodając do nazwy ~0, ~1 itd. Aby tymczasowo zapisać nową nazwę podczas takiej zmiany nazwy, na stosie przydzielany jest bufor o rozmiarze 256 bajtów.
Rozmiar danych do skopiowania jest określony przez wyrażenie „entry->name_len & 0xff”, ale wartość wpisu->name_len jest ładowana ze struktury na dysku, a nie obliczana na podstawie rzeczywistego rozmiaru nazwy. Jeżeli rozmiar wynosi zero, to indeks tablicy przyjmuje wartość -1 i tworzone są warunki przepełnienia liczby całkowitej przez dolną granicę bufora (niedomiar liczby całkowitej) i nadpisania pozostałych danych na stosie wartością „~0”. W przypadku systemów 64-bitowych wykorzystanie luki jest oceniane jako mało prawdopodobne i nie wymaga żadnych ograniczeń co do wielkości stosu (ulimit -s nieograniczone). W przypadku systemów 32-bitowych eksploatacja jest możliwa, ale wynik w dużym stopniu zależy od tego, jak plik wykonywalny został skompilowany przez kompilator.
Aby przeprowadzić atak, osoba atakująca musi w określony sposób uszkodzić dane na partycji z systemem plików ext2, ext3 lub ext4. Ponieważ operacja ta wymaga uprawnień administratora, luka stwarza zagrożenie, gdy narzędzie e2fsck skanuje dyski zewnętrzne lub odebrane zewnętrznie obrazy FS.
Źródło: opennet.ru