Luka w zabezpieczeniach podsystemu iSCSI jądra Linuksa, która umożliwia eskalację uprawnień

W kodzie podsystemu iSCSI jądra Linuksa zidentyfikowano lukę (CVE-2021-27365), która może umożliwić nieuprzywilejowanemu użytkownikowi lokalnemu wykonanie kodu na poziomie jądra i uzyskanie uprawnień administratora w systemie. Działający prototyp exploita jest dostępny do testów. Luka została naprawiona w aktualizacjach jądra Linuksa 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 jądra są dostępne w dystrybucjach Debian, Ubuntu, SUSE/openSUSE, Arch Linux i Fedora. Poprawki RHEL nie zostały jeszcze wydane.

Problem jest spowodowany błędem w funkcji iscsi_host_get_param() z modułu libiscsi, wprowadzonego jeszcze w 2006 roku podczas prac nad podsystemem iSCSI. Z powodu braku odpowiednich kontroli rozmiaru niektóre atrybuty ciągu iSCSI, takie jak nazwa hosta lub nazwa użytkownika, mogą przekraczać wartość PAGE_SIZE (4 KB). Luka może zostać wykorzystana przez nieuprzywilejowanego użytkownika wysyłającego wiadomości Netlink, które ustawiają atrybuty iSCSI na wartości większe niż PAGE_SIZE. Kiedy te atrybuty są odczytywane przez sysfs lub seqfs, wywoływany jest kod, który przekazuje atrybuty do funkcji sprintf w celu skopiowania do bufora o rozmiarze PAGE_SIZE.

Wykorzystanie luki w dystrybucjach polega na wsparciu 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 zostać przeprowadzony niezależnie od użycia funkcjonalności iSCSI. Jednocześnie do pomyślnego zastosowania exploita wymagana jest dodatkowo rejestracja co najmniej jednego transportu iSCSI. Z kolei możesz użyć modułu jądra ib_iser, który jest ładowany automatycznie, gdy nieuprzywilejowany użytkownik próbuje utworzyć gniazdo NETLINK_RDMA, aby zarejestrować transport.

Automatyczne ładowanie modułów wymaganych do zastosowania exploita jest obsługiwane w CentOS 8, RHEL 8 i Fedorze, gdy w systemie zainstalowany jest pakiet rdma-core, który jest zależny od niektórych popularnych pakietów i jest instalowany domyślnie w konfiguracjach dla stacji roboczych, systemy serwerowe z GUI i wirtualizacją środowisk hosta. Jednocześnie rdma-core nie jest instalowany w przypadku korzystania z kompilacji serwera, która działa tylko w trybie konsoli oraz podczas instalowania minimalnego obrazu instalacyjnego. Na przykład pakiet jest zawarty w podstawowej dystrybucji Fedory 31 Workstation, ale nie jest zawarty w Fedorze 31 Server. Debian i Ubuntu są mniej dotknięte, ponieważ pakiet rdma-core ładuje tylko moduły jądra wymagane do ataku, jeśli obecny jest sprzęt RDMA.

Luka w zabezpieczeniach podsystemu iSCSI jądra Linuksa, która umożliwia eskalację uprawnień

Aby obejść problem bezpieczeństwa, możesz wyłączyć automatyczne ładowanie modułu libiscsi: echo "install libiscsi /bin/true" >> /etc/modprobe.d/disable-libiscsi.conf

Dodatkowo w podsystemie iSCSI naprawiono dwie mniej niebezpieczne luki, które mogły doprowadzić do wycieku danych z jądra: CVE-2021-27363 (wyciek informacji o deskryptorze transportu iSCSI przez sysfs) oraz CVE-2021-27364 (odczyt z strefa buforowa poza boiskiem). Luki te mogą zostać wykorzystane do komunikacji za pośrednictwem gniazda netlink z podsystemem iSCSI bez niezbędnych uprawnień. Na przykład nieuprzywilejowany użytkownik może połączyć się z iSCSI i wysłać polecenie „zakończ sesję”, aby zakończyć sesję.

Źródło: opennet.ru

Dodaj komentarz