Minęły trzy lata od chwili, gdy pojawiła się fala podatności (, , , , ) w podsystemie AF_PACKET jądra Linux kolejny problem (), który pozwala lokalnemu użytkownikowi bez uprawnień na wykonanie kodu z prawami root lub wydostanie się z izolowanych kontenerów, mając w nich dostęp do root.
Aby utworzyć gniazdo AF_PACKET i wykorzystać podatność, wymagane są uprawnienia CAP_NET_RAW. Niemniej jednak, to uprawnienie może zostać przyznane nieuprzywilejowanemu użytkownikowi w kontenerach, tworzonych w systemach z włączoną obsługą przestrzeni nazw identyfikatorów użytkowników (user namespaces). Na przykład, przestrzenie nazw użytkowników są domyślnie włączone w Ubuntu i Fedory, ale nieaktywowana w Debianie i RHEL. W Androidzie prawo do tworzenia gniazd AF_PACKET ma proces mediaserver, przez który można wykorzystać podatność.
Wadliwość występuje w funkcji tpacket_rcv i jest spowodowana błędem obliczenia zmiennej netoff. Atakujący może stworzyć warunki, w których do zmiennej netoff zostanie zapisane wartość mniejsza niż zmienna maclen, co spowoduje przepełnienie przy obliczaniu "macoff = netoff - maclen" i nieprawidłowe ustawienie wskaźnika na bufor dla przychodzących danych. W rezultacie atakujący może zainicjować zapis od 1 do 10 bajtów w obszarze poza przydzielonym buforem. Zauważono, że w trakcie prac znajduje się exploit umożliwiający uzyskanie uprawnień root w systemie.
Problem występuje w jądrze od lipca 2008 roku, tj. pojawia się w wszystkich aktualnych jądrach. Łatka obecnie dostępna jest w postaci . Śledzić pojawienie się aktualizacji pakietów w dystrybucjach można na następujących stronach: , , , , , .
Źródło: opennet.ru
