Luka sprzed ponad 15 lat w Netfilter pozwoliła na eskalację uprawnień

Kilka dni temu pojawiła się wiadomość, że zidentyfikowano podatność w Netfilter (podsystem jądra Linux używany do filtrowania i modyfikowania pakietów sieciowych), który network umożliwia lokalnemu użytkownikowi uzyskanie uprawnień administratora w systemienawet w izolowanym pojemniku.

Luka CVE-2021-22555 jest to problem, który istnieje od jądra 2.6.19, uruchomiona 15 lat temu i jest spowodowane błędem w sterownikach IPT_SO_SET_REPLACE i IP6T_SO_SET_REPLACE, co powoduje przepełnienie bufora podczas wysyłania specjalnie zdobionych parametrów za pomocą wywołania setsockopt w trybie zgodności.

Być może wielu w tym momencie będzie się zastanawiać, jak to możliwe, że luka w jądrze Linuksa mogła pozostać niezauważona przez tak długi czas, a odpowiedzią na to jest to, że chociaż błąd, który był obecny od Linuksa 2.6.19, luka została wykryta przez kod audytu, mimo że kod C nie był odtwarzalny, więc nie można go było wykorzystać, ponieważ nie znaleziono wówczas niezbędnych zasobów do eskalacji uprawnień.

Na przykład wsparcie dla nieuprzywilejowanych przestrzeni nazw użytkowników jest w jądrze 3.8. Ponadto niektóre dystrybucje mają łatkę, która dodaje sysctl, aby wyłączyć nieuprzywilejowane przestrzenie nazw użytkowników.

W normalnych okolicznościach tylko użytkownik root może wywołać compat_setsockopt(), ale niezbędne uprawnienia wykonać atak może je również uzyskać nieuprzywilejowany użytkownik w systemach z włączonymi przestrzeniami nazw użytkowników.

CVE-2021-22555 to 15-letnia luka w zabezpieczeniach stosu podczas zapisu bez stosu w Linux Netfilter, która jest wystarczająco potężna, aby ominąć wszystkie współczesne zabezpieczenia i zapewnić wykonanie kodu jądra.

W związku z tym opisano, że lokalny użytkownik może utworzyć kontener z osobnym użytkownikiem root i stamtąd wykorzystać lukęi. Na przykład "przestrzenie nazw użytkowników" są domyślnie zawarte w Ubuntu i Fedorze, ale nie w Debianie i RHEL.

Tę lukę można wykorzystać poprzez częściowe nadpisanie m_list->nextwskaźnik msg_msgstruktury i uzyskania wolnego po użyciu. Jest to wystarczająco potężne, aby uruchomić kod jądra z pominięciem KASLR, SMAP i SMEP.

Problem pojawia się również w funkcji xt_compat_target_from_user() z powodu nieprawidłowego obliczenia rozmiaru pamięci podczas zapisywania struktur jądra po konwersji z reprezentacji 32-bitowej na 64-bitową.

W związku z tym jest o tym mowa błąd pozwala na zapisanie czterech „zerowych” bajtów w dowolnej pozycji poza buforem przypisane, ograniczone przez offset 0x4C. Z tego powodu wspomina się, że ta funkcja okazała się wystarczająca do stworzenia exploita co pozwala na uzyskanie uprawnień roota: usuwając m_list-> kolejny wskaźnik w strukturze msg_msg, tworzone były warunki dostępu do danych po zwolnieniu pamięci (use-after-free), które następnie służyły do ​​uzyskiwania informacji o adresach i zmianach do innych struktur, manipulując wywołaniem systemowym msgsnd().

Jeśli chodzi o raport o błędach, jak każda wykryta luka, dotyczy to procesu i raportu, który został przekazany programistom jądra w kwietniu, a następnie został poprawiony w ciągu kilku dni oraz łatki, która jest zawarta we wszystkich obsługiwanych dystrybucjach, aby informacje o błędzie można opublikować później.

Projekty Debian, Arch Linux i Fedora wygenerowały już aktualizacje pakietów. Począwszy od Ubuntu trwają prace nad aktualizacjami RHEL i SUSE. Ponieważ błąd jest poważny, możliwy do wykorzystania w praktyce i pozwala na ucieczkę z kontenera, Google oszacował jego odkrycie na 10,000 XNUMX USD i podwoił nagrodę badaczowi, który zidentyfikował lukę w zabezpieczeniach oraz za zidentyfikowanie metody pozwalającej uniknąć izolacji kontenerów Kubernetes w klastrze kCTF.

Do testów przygotowano działający prototyp exploita który omija mechanizmy ochronne KASLR, SMAP i SMEP.

W końcu jeśli chcesz dowiedzieć się więcej na ten temat, możesz sprawdzić szczegóły W poniższym linku.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.