Błąd w Kernelach serii 2.2.x

Na liście bugtraq pojawiła się informacja Michała Zalewskiego na temat istniejącego błędu we wszystkich jądrach serii 2.2.x do 2.2.23 włącznie, pozwalający dowolnemu użytkownikowi na zawieszenie systemu.

Interfejs /proc/< pid >/mem został zaprojektowany, aby, w pewnych okolicznościach, zapewnić dostęp aplikacji do pamięci innej aplikacji w wygodny sposób. Jest to bardzo użyteczna cecha dla programistów i administratorów, którzy chcą zdebugować lub zanalizowac programy, które działają na ich systemie. Jednym ze sposobów dostępu do pamięci jest bezpośrednie mapowanie stron przy użyciu mmap().

Luka tkwi w sposobie, w jaki sprawdzane są uprawnienia procesu do wykonania tej operacji. Użytkownik może wykonać mmap(), aby dostać dostęp do stron pamięci, do której nie ma dostępu (prawa do odczytu) nawet śledzony proces. Dodatkowo użytkownik może przekazać parametr PROT_READ, aby dostać prawo do odczytu zmmapowanego kawałka pamięci. Ponieważ weryfikacja uprawnień jest nieprawidłowa, użytkownik otrzyma dostęp do tych stron pamięci. Od tej chwili, użytkownik może zażądać, aby jego instancja tych stron była odczytana przez jądro. Zaowocuje do padem systemu.

Zalecana jest jak najszybsza zmiana jądra na nowsze np.: 2.2.24-rc1 które posiada poprawiony błąd – patch można pobrać stąd (jest to jeszcze wersja testowa jądra).