Luka w podsystemie netfilter umożliwiająca wykonanie kodu na poziomie jądra Linuksa

Netfilter, podsystem jądra Linuksa służący do filtrowania i modyfikowania pakietów sieciowych, posiada lukę (CVE-2022-25636), która umożliwia wykonanie kodu na poziomie jądra. Ogłoszono, że przygotowano przykład exploita umożliwiającego lokalnemu użytkownikowi podniesienie swoich uprawnień w Ubuntu 21.10 przy wyłączonym mechanizmie ochronnym KASLR. Problem pojawia się począwszy od jądra 5.4. Poprawka jest nadal dostępna w postaci łatki (nie wygenerowano wersji korygujących jądra). Publikacje aktualizacji pakietów w dystrybucjach możesz śledzić na stronach: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.

Podatność wynika z błędu w obliczeniu rozmiaru tablicy flow->rule->action.entries w funkcji nft_fwd_dup_netdev_offload (zdefiniowanej w pliku net/netfilter/nf_dup_netdev.c), co może doprowadzić do przechwycenia danych kontrolowanych przez osobę atakującą. zapisywany w obszarze pamięci poza granicą przydzielonego bufora. Błąd pojawia się podczas konfigurowania reguł „dup” i „fwd” w łańcuchach, w których stosowane jest sprzętowe przyspieszanie przetwarzania pakietów (offload). Ponieważ przepełnienie następuje przed utworzeniem reguły filtrowania pakietów i sprawdzeniem obsługi odciążania, luka dotyczy również urządzeń sieciowych, które nie obsługują akceleracji sprzętowej, np. interfejsu pętli zwrotnej.

Należy zauważyć, że problem jest dość prosty do wykorzystania, ponieważ wartości wykraczające poza bufor mogą nadpisać wskaźnik do struktury net_device, a dane o nadpisanej wartości są zwracane do przestrzeni użytkownika, co pozwala znaleźć adresy w pamięci niezbędnej do przeprowadzenia ataku. Wykorzystanie luki wymaga utworzenia określonych reguł w nftables, co jest możliwe jedynie z uprawnieniami CAP_NET_ADMIN, które może uzyskać nieuprzywilejowany użytkownik w odrębnych przestrzeniach nazw sieciowych. Lukę można również wykorzystać do ataku na systemy izolacji kontenerów.

Źródło: opennet.ru

Dodaj komentarz