Luka w podsystemie iSCSI jądra Linux, umożliwiająca podniesienie własnych uprawnień

W kodzie podsystemu iSCSI w jądrze Linux wykryto lukę (CVE-2021-27365), która pozwala nieuprzywilejowanemu lokalnemu użytkownikowi na wykonanie kodu w trybie jądra i uzyskanie uprawnień root w systemie. Do testów dostępny jest działający prototyp exploita. Luka została usunięta w aktualizacjach jądra Linux 5.11.4, 5.10.21, 5.4.103, 4.19.179, 4.14.224, 4.9.260 i 4.4.260. Aktualizacje pakietów z jądrem są dostępne w dystrybucjach Debian, Ubuntu, SUSE/openSUSE, Arch Linux i Fedora. Dla RHEL poprawki na razie nie zostały wydane.

Problem spowodowany jest błędem w funkcji iscsi_host_get_param() w module libiscsi, który został wprowadzony jeszcze w 2006 roku podczas rozwoju podsystemu iSCSI. Z powodu braku odpowiednich kontroli rozmiaru, niektóre atrybuty tekstowe iSCSI, takie jak hostname czy username, mogą przekraczać wartość PAGE_SIZE (4 KB). Luka może być wykorzystywana przez nieuprzywilejowanego użytkownika poprzez wysyłanie wiadomości Netlink, które ustawiają atrybuty iSCSI na wartości przekraczające PAGE_SIZE. Podczas odczytu danych tych atrybutów przez sysfs lub seqfs wywoływany jest kod, który przekazuje atrybuty do funkcji sprintf w celu skopiowania do bufora o rozmiarze równym PAGE_SIZE.

Wykorzystanie luki w dystrybucjach zależy od wsparcia dla automatycznego ładowania modułu jądra scsi_transport_iscsi podczas próby utworzenia gniazda NETLINK_ISCSI. W dystrybucjach, w których ten moduł jest ładowany automatycznie, atak może być przeprowadzony niezależnie od korzystania z funkcjonalności iSCSI. Do skutecznego zastosowania exploita konieczna jest również rejestracja co najmniej jednego transportu iSCSI. Z kolei do rejestracji transportu można wykorzystać moduł jądra ib_iser, który jest ładowany automatycznie podczas próby utworzenia gniazda NETLINK_RDMA przez nieuprzywilejowanego użytkownika.

Automatyczne ładowanie modułów potrzebnych do wykorzystania eksploitów jest obsługiwane w CentOS 8, RHEL 8 oraz Fedora podczas instalacji pakietu rdma-core, który jest zależnością dla niektórych popularnych pakietów i domyślnie instalowany w konfiguracjach dla stacji roboczych, systemów serwerowych z GUI oraz środowisk wirtualizacji. Moduł rdma-core nie jest instalowany w przypadku użycia serwerowego wydania, które działa tylko w trybie konsoli, oraz przy instalacji minimalnego obrazu systemu. Na przykład, pakiet jest częścią podstawowej wersji Fedora 31 Workstation, ale nie jest zawarty w Fedora 31 Server. Debian i Ubuntu są mniej narażone na ten problem, ponieważ pakiet rdma-core ładował potrzebne do ataku moduły jądra tylko przy posiadaniu sprzętu RDMA.

Luka w podsystemie iSCSI jądra Linux, umożliwiająca podniesienie własnych uprawnień

Jako obejście zabezpieczeń można zablokować automatyczne ładowanie modułu libiscsi: echo "install libiscsi /bin/true" >> /etc/modprobe.d/disable-libiscsi.conf

Dodatkowo, w podsystemie iSCSI usunięto jeszcze dwie mniej poważne podatności, które mogą prowadzić do wycieku danych z jądra: CVE-2021-27363 (wyciek informacji o deskryptorze transportu iSCSI przez sysfs) oraz CVE-2021-27364 (odczyt z obszaru poza granicami bufora). Wymienione podatności mogą być wykorzystywane do interakcji przez gniazdo netlink z podsystemem iSCSI bez wymaganych uprawnień. Na przykład, użytkownik bez odpowiednich uprawnień może połączyć się z iSCSI i wysłać polecenie „end a session” w celu zakończenia sesji.

Źródło: opennet.ru

Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS - ProHoster