W systemd znaleziono lukę, która została już opisana w (CVE-2019-6454), co pozwala na zablokowanie procesu inicjalizacji sterowania (PID1) podczas wysyłania specjalnie spreparowanej wiadomości do nieuprzywilejowanego użytkownika przez D-Bus.
L Deweloperzy Red Hat nie wykluczają również możliwości wykorzystania luki do zorganizowania wykonania kodu z uprawnieniami roota., ale ostateczna możliwość takiego ataku nie została jeszcze określona.
O systemd
Dla tych, którzy nie znają Systemd Mogę ci to powiedzieć jest to system inicjalizacji Linuksa i menedżer usług który obejmuje funkcje, takie jak uruchamianie demona na żądanie, automatyczne podłączanie i konserwacja punktu podłączenia, obsługa migawek i śledzenie procesów przy użyciu grup kontrolnych systemu Linux.
Systemd udostępnia demona rejestru oraz inne narzędzia i programy narzędziowe pomagające w wykonywaniu typowych zadań administracyjnych systemu. Lennart Poettering i Kay Sievers napisali SystemD, zainspirowany macOS launchd i Upstart, mając na celu stworzenie nowoczesnego i dynamicznego systemu.
W szczególności systemd zapewnia agresywne możliwości zrównoleglania i logikę kontroli usług opartą na zależnościach, umożliwiając równoległe uruchamianie usług i prowadząc do krótszych czasów uruchamiania. Te dwa aspekty były obecne w Upstart, ale zostały wzmocnione przez systemd.
Systemd to domyślny system startowy dla głównych dystrybucji Linuksa, ale jest wstecznie kompatybilny ze skryptami startowymi SysV.
SysVinit to system inicjalizacji, który poprzedza systemd i wykorzystuje uproszczone podejście do uruchamiania usługi. Systemd nie tylko zarządza inicjalizacją systemu, ale także dostarcza alternatywy dla innych dobrze znanych narzędzi, takich jak cron i syslog.
O nowej luce w zabezpieczeniach systemd
Manipulując rozmiarem wiadomości wysyłanej przez D-Bus, atakujący może przesunąć wskaźnik poza granice pamięci przydzielonej dla stosu, omijając ochronę „stosu strony ochronnej”, która jest oparta na podstawieniu strony pamięci na krawędzi, która wywołuje wyjątek (błąd strony).
Udany atak jest zademonstrowany na Ubuntu 18.10 z systemd 239 i CentOS 7.6 z systemd 219.
Aby obejść ten problem, kompilacja może być używana w GCC z opcją „-fstack-clash-protection”, która jest używana domyślnie w Fedorze 28 i 29.
Należy zauważyć, że w 2014 roku autor biblioteki systemu MUSL wskazał na główne problemy architektoniczne systemu obsługi nadmiernej inflacji PID1 i zakwestionował możliwość wdrożenia interfejsu API kontrolera poziomu PID1 dla Link to the Bus, ponieważ jest to poważny wektor ataków i może niekorzystnie wpłynąć na niezawodność całego systemu
Według badacza bezpieczeństwa, który ujawnił lukę, zmiana wskaźnika stosu jest możliwa tylko dla nieużywanych stron pamięci (nieprzypisane), co nie pozwala na organizację wykonania kodu w kontekście procesu PID1, ale pozwala atakującemu na zainicjowanie blokady PID1 z późniejszym przejściem jądra Linuksa w stan „paniki” (w przypadku awaria regulatora PID 1, zawieszenie całego systemu).
W systemd jest zainstalowany program obsługi sygnału, który próbuje przechwycić błędy procesu PID1 (błąd segmentacji) i uruchamia powłokę w celu przywrócenia.
Ale ponieważ nieuplikowane (nieprzydzielone) strony pamięci są wywoływane podczas ataku, jądro nie może wywołać tego programu obsługi sygnału i po prostu kończy proces z PID 1, co z kolei robi Nie można kontynuować pracy i przejść w stan „paniki”, dlatego wymagane jest ponowne uruchomienie systemu.
Jest już rozwiązanie problemu
Podobnie jak w przypadku każdego już opisanego i zgłoszonego problemu związanego z bezpieczeństwem, jego publikacja nie może zostać dokonana, dopóki problem nie zostanie rozwiązany i aktualizacje poprawek dla SUSE / openSUSE, Fedora zostały już wydane, także dla Ubuntu i częściowo dla Debiana (Tylko Debian Stretch).
Chociaż problem pozostaje nieskorygowany w RHEL.