W narzędziu e2fsck, dostarczanym w ramach pakietu , (), które pozwala na wykonanie kodu przez napastnika podczas sprawdzania systemu plików zawierającego specjalnie przygotowane katalogi. Obecność luki bezpieczeństwa potwierdzono w wydaniach od 1.43.3 do 1.45.4. Luka została usunięta w aktualizacji . W dystrybucjach problem wciąż pozostaje nieskalibrowany (, , , , ).
Luka wynika z błędu w funkcji mutate_name() z pliku rehash.c, stosowanej przy rekonstrukcji powiązanych z katalogiem tabeli haszującej, które zapewniają odwzorowanie katalogu wszystkich znajdujących się w nim plików. Uszkodzenie powiązanej z katalogiem struktury hash_entry może prowadzić do zapisu danych napastnika w obszarze poza przydzielonym buforem. W przypadku wykrycia w tabeli haszującej powiązania z katalogiem kilku plików o tej samej nazwie, narzędzie e2fsck zmienia nazwy powtarzających się plików, dodając do nazwy ~0, ~1 itd. Do tymczasowego przechowywania nowej nazwy przy takim renomowaniu w stosie przydzielany jest bufor o rozmiarze 256 bajtów.
Rozmiar kopiowanych danych określany jest wyrażeniem "entry->name_len & 0xff", ale wartość entry->name_len jest ładowana z struktury na dysku, a nie obliczana na podstawie rzeczywistego rozmiaru nazwy. Jeśli rozmiar wynosi zero, indeks tablicy przyjmuje wartość -1 i tworzy warunki do przepełnienia całkowitego przez dolną granicę bufora (integer underflow) i nadpisania innych danych w stosie wartością "~0". Dla systemów 64-bitowych wykorzystanie luki oceniane jest jako mało prawdopodobne i wymaga braku ograniczeń na rozmiar stosu (ulimit -s unlimited). Dla systemów 32-bitowych wykorzystanie uznawane jest za możliwe, ale wynik bardzo zależy od tego, jak plik wykonywalny był kompilowany przez kompilator.
Aby przeprowadzić atak, napastnik musi w odpowiedni sposób uszkodzić dane w partycji z systemem plików ext2, ext3 lub ext4. Ponieważ operacja ta wymaga uprawnień superużytkownika, luka stanowi zagrożenie podczas sprawdzania przez narzędzie e2fsck zewnętrznych nośników lub otrzymanych obrazów systemu plików.
Źródło: opennet.ru
