Luka w implementacji gniazda AF_PACKET jądra Linux

Trzy lata po fali luk w zabezpieczeniach (1, 2, 3, 4, 5) w podsystemie AF_PACKET jądra Linuksa zidentyfikowane jeszcze jeden problem (CVE-2020-14386), umożliwiając lokalnemu nieuprzywilejowanemu użytkownikowi wykonanie kodu jako root lub wyjście z izolowanych kontenerów, jeśli ma dostęp do konta root.

Utworzenie gniazda AF_PACKET i wykorzystanie luki wymaga uprawnień CAP_NET_RAW. Jednakże określone uprawnienia może uzyskać nieuprzywilejowany użytkownik w kontenerach utworzonych na systemach z włączoną obsługą przestrzeni nazw użytkowników. Na przykład przestrzenie nazw użytkowników są domyślnie włączone w Ubuntu i Fedorze, ale nie są włączone w Debianie i RHEL. W systemie Android proces serwera multimediów ma prawo tworzyć gniazda AF_PACKET, za pośrednictwem których można wykorzystać lukę.

Luka występuje w funkcji tpacket_rcv i jest spowodowana błędem w obliczeniu zmiennej netoff. Osoba atakująca może stworzyć warunki, w których zmienna netoff zostanie zapisana z wartością mniejszą niż zmienna maclen, co spowoduje przepełnienie przy obliczaniu „macoff = netoff - maclen”, a w konsekwencji nieprawidłowe ustawienie wskaźnika do bufora dla przychodzących danych. W rezultacie osoba atakująca może zainicjować zapis od 1 do 10 bajtów w obszarze poza granicą przydzielonego bufora. Należy zauważyć, że opracowywany jest exploit, który pozwala uzyskać prawa roota w systemie.

Problem występuje w jądrze od lipca 2008 r., tj. objawia się we wszystkich rzeczywistych jądrach. Poprawka jest obecnie dostępna jako skrawek. Dostępność aktualizacji pakietów w dystrybucjach możesz śledzić na następujących stronach: Ubuntu, Fedora, SUSE, Debian, RHEL, łuk.

Źródło: opennet.ru

Dodaj komentarz