Jądro Linuksa 5.4 otrzymało poprawki ograniczające dostęp roota do wewnętrznych elementów jądra

Linus Torvalds przyjęty w nadchodzącej wersji jądra Linux 5.4 zawarty jest zestaw poprawek”blokowania", proponowane David Howells (Czerwony Kapelusz) i Matthew Garrett (Mateusz Garrett, pracuje w Google), aby ograniczyć dostęp użytkownika root do jądra. Funkcjonalność związana z blokowaniem jest zawarta w opcjonalnie ładowanym module LSM (Moduł bezpieczeństwa systemu Linux), co tworzy barierę pomiędzy UID 0 a jądrem, ograniczając pewne funkcjonalności niskiego poziomu.

Jeśli atakujący wykona kod z uprawnieniami roota, może wykonać swój kod na poziomie jądra, na przykład poprzez wymianę jądra za pomocą kexec lub odczyt/zapis pamięci poprzez /dev/kmem. Najbardziej oczywistą konsekwencją takiego działania może być objazd UEFI Secure Boot lub pobieranie wrażliwych danych przechowywanych na poziomie jądra.

Początkowo funkcje ograniczeń rootowania opracowywano w kontekście wzmocnienia ochrony zweryfikowanego rozruchu, a dystrybucje od dłuższego czasu korzystają z poprawek innych firm, aby blokować obejście UEFI Secure Boot. Jednocześnie takie ograniczenia nie zostały uwzględnione w głównym składzie jądra ze względu na nieporozumienia w ich wdrażaniu oraz obawę przed zakłóceniami w istniejących systemach. Moduł „lockdown” pochłonął łatki stosowane już w dystrybucjach, które zostały przeprojektowane w postaci osobnego podsystemu niezwiązanego z UEFI Secure Boot.

Tryb blokady ogranicza dostęp do /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, kprobes mode debug, mmiotrace, tracifs, BPF, PCMCIA CIS (struktura informacji o karcie), niektórych interfejsów ACPI i procesora Rejestry MSR, wywołania kexec_file i kexec_load są blokowane, tryb uśpienia jest zabroniony, użycie DMA dla urządzeń PCI jest ograniczone, import kodu ACPI ze zmiennych EFI jest zabroniony,
Niedozwolone są manipulacje na portach I/O, w tym zmiana numeru przerwania i portu I/O dla portu szeregowego.

Domyślnie moduł blokujący nie jest aktywny, jest budowany, gdy w kconfig określono opcję SECURITY_LOCKDOWN_LSM i jest aktywowany poprzez parametr jądra „lockdown=”, plik kontrolny „/sys/kernel/security/lockdown” lub opcje montażu LOCK_DOWN_KERNEL_FORCE_*, które mogą przyjmować wartości „integralność” i „poufność”. W pierwszym przypadku blokowane są funkcje umożliwiające wprowadzanie zmian w działającym jądrze z przestrzeni użytkownika, w drugim przypadku wyłączona jest także funkcjonalność pozwalająca na wyodrębnienie wrażliwych informacji z jądra.

Warto zaznaczyć, że lockdown ogranicza jedynie standardowy dostęp do jądra, ale nie chroni przed modyfikacjami w wyniku wykorzystania luk. Aby zablokować zmiany w działającym jądrze, gdy projekt Openwall wykorzystuje exploity rozwija się osobny moduł LKRG (Ochrona środowiska wykonawczego jądra Linux).

Źródło: opennet.ru

Dodaj komentarz