W Netfilter, podsystemie jądra Linux, używanym do filtrowania i modyfikacji pakietów sieciowych, zidentyfikowano lukę (CVE-2022-25636), umożliwiającą uruchomienie kodu na poziomie jądra. Zgłoszono przygotowanie przykładu exploita, który pozwala lokalnemu użytkownikowi na podniesienie swoich uprawnień w Ubuntu 21.10 z wyłączonym mechanizmem ochrony KASLR. Problem występuje od wersji jądra 5.4. Poprawka jest na razie dostępna w postaci łatki (nie stworzono jeszcze odpowiednich wydań jądra). Śledzić publikacje aktualizacji pakietów w dystrybucjach można na stronach: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.
Luka została spowodowana błędem w obliczaniu 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 prowadzić do zapisu kontrolowanych przez atakującego danych w obszarze pamięci poza przydzielonym buforem. Błąd występuje przy konfiguracji reguł „dup” i „fwd” w łańcuchach, dla których stosuje się sprzętowe przyspieszenie przetwarzania pakietów (offload). Ponieważ przepełnienie występuje na etapie przed stworzeniem reguły filtrowania pakietów i sprawdzeniem wsparcia dla offload, luka ta dotyczy również urządzeń sieciowych, które nie wspierają sprzętowego przyspieszenia, takich jak interfejs loopback.
Zauważono, że problem jest dość prosty do wykorzystania, ponieważ wartości wychodzące poza bufor mogą nadpisać wskaźnik do struktury net_device, a dane o nadpisanej wartości wracają do przestrzeni użytkownika, co umożliwia poznanie adresów w pamięci potrzebnych do przeprowadzenia ataku. Aby wykorzystać lukę, konieczne jest stworzenie określonych reguł w nftables, co jest możliwe tylko przy posiadaniu uprawnień CAP_NET_ADMIN, które mogą być zdobyte przez nieuprzywilejowanego użytkownika w odrębnej przestrzeni nazw (network namespaces). Luka ta może być również wykorzystana do ataków na systemy izolacji kontenerów.
Źródło: opennet.ru
