W jądrze Linuksa wykryto możliwe do wykorzystania luki w nf_tables, watch_queue i IPsec

W jądrze Linuksa zidentyfikowano kilka niebezpiecznych luk, które pozwalają lokalnemu użytkownikowi zwiększyć swoje uprawnienia w systemie. Dla wszystkich rozważanych problemów przygotowano działające prototypy exploitów.

  • Luka (CVE-2022-0995) w podsystemie śledzenia zdarzeń watch_queue umożliwia zapisywanie danych w buforze poza granicami w pamięci jądra. Atak może zostać przeprowadzony przez dowolnego nieuprzywilejowanego użytkownika i spowodować, że jego kod będzie działał z uprawnieniami jądra. Podatność występuje w funkcji watch_queue_set_size() i jest związana z próbą wyczyszczenia wszystkich wskaźników na liście, nawet jeśli nie została dla nich przydzielona pamięć. Problem pojawia się podczas budowania jądra z opcją „CONFIG_WATCH_QUEUE=y”, która jest używana w większości dystrybucji Linuksa.

    Luka została usunięta w zmianie jądra dodanej 11 marca. Publikacje aktualizacji pakietów w dystrybucjach możesz śledzić na stronach: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Prototyp exploita jest już publicznie dostępny i pozwala uzyskać dostęp do roota podczas pracy na Ubuntu 21.10 z jądrem 5.13.0-37.

    W jądrze Linuksa wykryto możliwe do wykorzystania luki w nf_tables, watch_queue i IPsec

  • Luka (CVE-2022-27666) w modułach jądra esp4 i esp6 związana z implementacją transformacji ESP (Encapsulated Security Payload) dla IPsec, wykorzystywana podczas korzystania z IPv4 i IPv6. Luka umożliwia lokalnemu użytkownikowi z normalnymi uprawnieniami nadpisywanie obiektów w pamięci jądra i zwiększanie ich uprawnień w systemie. Problem wynika z braku zgodności pomiędzy przydzieloną wielkością pamięci i faktycznie odebranymi danymi, biorąc pod uwagę, że maksymalny rozmiar wiadomości może przekroczyć maksymalny rozmiar pamięci przydzielony dla struktury skb_page_frag_refill.

    Luka została naprawiona w jądrze 7 marca (naprawiona w wersjach 5.17, 5.16.15 itd.). Publikacje aktualizacji pakietów w dystrybucjach możesz śledzić na stronach: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Działający prototyp exploita, który pozwala zwykłemu użytkownikowi uzyskać dostęp roota do Ubuntu Desktop 21.10 w domyślnej konfiguracji, został już opublikowany na GitHubie. Twierdzi się, że po niewielkich zmianach exploit będzie działał również w Fedorze i Debianie. Warto zaznaczyć, że exploit był pierwotnie przygotowany na potrzeby konkursu pwn2own 2022, jednak twórcy jądra zidentyfikowali i poprawili związany z nim błąd, dlatego zdecydowano się ujawnić szczegóły luki.

  • Dwie luki (CVE-2022-1015, CVE-2022-1016) w podsystemie netfilter w module nf_tables, które zapewniają działanie filtra pakietów nftables. Pierwszy problem umożliwia lokalnemu nieuprzywilejowanemu użytkownikowi dokonanie zapisu poza granicami do przydzielonego bufora na stosie. Przepełnienie występuje podczas przetwarzania wyrażeń nftables, które są sformatowane w określony sposób i są przetwarzane podczas fazy sprawdzania indeksów określonych przez użytkownika mającego dostęp do reguł nftables.

    Luka wynika z faktu, że twórcy zasugerowali, że wartość „enum nft_registers reg” jest jednobajtowa, gdy przy włączeniu pewnych optymalizacji kompilator, zgodnie ze specyfikacją C89, mógł użyć dla niej wartości 32-bitowej . Dzięki tej funkcji rozmiar używany podczas sprawdzania i alokacji pamięci nie odpowiada rzeczywistemu rozmiarowi danych w strukturze, co prowadzi do nakładania się ogona struktury ze wskaźnikami na stosie.

    Problem można wykorzystać do wykonania kodu na poziomie jądra, ale udany atak wymaga dostępu do nftables, który można uzyskać w osobnej sieciowej przestrzeni nazw z uprawnieniami CLONE_NEWUSER lub CLONE_NEWNET (na przykład, jeśli możesz uruchomić izolowany kontener). Podatność jest również ściśle powiązana z optymalizacjami stosowanymi przez kompilator, które włączają się np. podczas budowania w trybie „CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y”. Wykorzystanie luki jest możliwe począwszy od jądra Linuksa 5.12.

    Druga luka w netfilter jest spowodowana dostępem do już zwolnionego obszaru pamięci (use-after-free) w procedurze obsługi nft_do_chain i może prowadzić do wycieku niezainicjowanych obszarów pamięci jądra, które można odczytać poprzez manipulacje wyrażeniami nftables i wykorzystać, na przykład w celu określenia adresów wskaźników podczas opracowywania exploitów dla innych luk w zabezpieczeniach. Wykorzystanie luki jest możliwe począwszy od jądra Linuksa 5.13.

    Luki są usuwane w dzisiejszych łatkach jądra 5.17.1, 5.16.18, 5.15.32, 5.10.109, 5.4.188, 4.19.237, 4.14.274 i 4.9.309. Publikacje aktualizacji pakietów w dystrybucjach możesz śledzić na stronach: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Badacz, który zidentyfikował problemy, zapowiedział przygotowanie działających exploitów dla obu luk, które mają zostać opublikowane w ciągu kilku dni, po wydaniu przez dystrybucje aktualizacji pakietów jądra.

Źródło: opennet.ru

Dodaj komentarz