Microsoft znajduje lukę w desktopie Linuksa, która daje roota niezaufanym użytkownikom

Obrazy Getty

Luki wykryte niedawno przez Microsoft ułatwiają osobom, które mają kontakt z wieloma komputerowymi systemami Linux, szybkie uzyskanie praw do systemu root — najnowsza luka w podnoszeniu uprawnień, która wyszła na jaw w systemie operacyjnym typu open source.

Ponieważ systemy operacyjne w ostatnich latach zostały wzmocnione tak, aby były odporne na kompromisy, luki związane z podnoszeniem uprawnień (EoP) stały się kluczowym składnikiem większości udanych ataków hakerskich. Mogą być wykorzystywane w połączeniu z innymi podatnościami, które same w sobie są często uważane za mniej poważne, przy czym te ostatnie dają tak zwany dostęp lokalny, a te pierwsze eskalują dostęp do roota. Stamtąd przeciwnicy z dostępem fizycznym lub ograniczonymi prawami systemowymi mogą wdrażać backdoory lub wykonywać wybrany przez siebie kod.

Nimbuspwn, jak Microsoft nazwał zagrożenie EoP, to dwie luki, które znajdują się w networkd-dispatcher, składniku wielu dystrybucji Linuksa, który wysyła zmiany stanu sieci i może uruchamiać różne skrypty w odpowiedzi na nowy stan. Kiedy maszyna się uruchamia, networkd-dispatcher działa jako root.

Microsoft

Błędy, śledzone jako CVE-2022-29799 i CVE-2022-29800, łączą zagrożenia, w tym: przechodzenie katalogów, wyścig dowiązań symbolicznychoraz czas kontroli czas użytkowania (TOCTOU) warunki wyścigu. Po przejrzeniu Networkd – kod źródłowy dyspozytorabadacz Microsoft Jonathan Bar Or zauważył, że komponent znany jako „_run_hooks_for_state” implementuje następującą logikę:

  • Wykrywa listę dostępnych skryptów, wywołując metodę „get_script_list”, która wywołuje oddzielną metodę „scripts_in_path”, która ma zwrócić wszystkie pliki przechowywane w katalogu „/etc/networkd-dispatcher/.d”.
  • Sortuje listę skryptów
  • Uruchamia każdy skrypt z podprocesem procesu.Popen i dostarcza niestandardowe zmienne środowiskowe

Microsoft

Run_hooks_for_state naraża systemy Linux na lukę w przeszukiwaniu katalogów, oznaczoną jako CVE-2022-29799, ponieważ żadna z używanych przez niego funkcji nie oczyszcza odpowiednio stanów użytych do zbudowania właściwej ścieżki skryptu ze złośliwych danych wejściowych. Hakerzy mogą wykorzystać tę słabość, aby wydostać się z katalogu podstawowego „/ etc / networkd-dispatcher”.

Run-hooks_for_state zawiera osobną lukę, CVE-2022-29800, która naraża systemy na sytuację wyścigu TOCTOU, ponieważ między wykryciem skryptów a ich uruchomieniem upływa pewien czas.

Przeciwnicy mogą wykorzystać tę ostatnią lukę w celu zastąpienia skryptów, które według programu networkd-dispatcher należą do roota, złośliwymi skryptami wybranymi przez adwersarzy. Aby upewnić się, że Linux wykona złośliwy skrypt dostarczony przez hakera, a nie ten legalny, haker umieszcza wiele skryptów, aż w końcu się powiedzie.

Haker z minimalnym dostępem do podatnego na ataki pulpitu może łączyć ze sobą exploity dla tych luk, które dają pełny dostęp do roota. Przepływ exploitów wygląda tak:

  1. Przygotuj katalog ”/ tmp / nimbuspwn„I załóż dowiązanie symboliczne”/tmp/nimbuspwn/poc.d“Wskazać na”/ sbin”. ten „/Sbin” katalog został wybrany specjalnie, ponieważ zawiera wiele plików wykonywalnych należących do roota, które nie blokują się, jeśli są uruchamiane bez dodatkowych argumentów. Będzie to nadużyło wyścig dowiązań symbolicznych problem, o którym wspomnieliśmy wcześniej.
  2. Dla każdej nazwy pliku wykonywalnego w „/ sbin„Należy do roota, umieść tę samą nazwę pliku pod”/ tmp / nimbuspwn”. Na przykład, jeśli „/ sbin / bdb„Jest wykonywalny i należy do roota, umieść plik wykonywalny”/ tmp / nimbuspwn / vgs„Z pożądaną ładownością. Pomoże to atakującemu wygrać wyścig narzucony przez TOCTOU słaby punkt.
  3. Wyślij sygnał za pomocą Stan operacyjny „../../../Tmp/nimbuspwn/poc”. To nadużywa przechodzenie katalogów podatność i wydostaje się z katalogu skryptów.
  4. Program obsługi sygnału networkd-dispatcher uruchamia się i buduje listę skryptów z katalogu „/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d”który tak naprawdę jest dowiązaniem symbolicznym („/Tmp/nimbuspwn/poc.d”), co wskazuje na „/Sbin”. Dlatego tworzy listę złożoną z wielu plików wykonywalnych, których właścicielem jest root.
  5. Szybko zmień dowiązanie symboliczne/tmp/nimbuspwn/poc.d ” wskazać na „/ tmp / nimbuspwn”. To nadużywa Warunki wyścigu TOCTOU podatność — ścieżka skryptu zmienia się bez sieciowy dyspozytor być świadom.
  6. Dyspozytor rozpoczyna uruchamianie plików, które początkowo znajdowały się w „/ sbin„Ale tak naprawdę pod”/ tmp / nimbuspwn“Informator. Ponieważ dyspozytor „wierzy”, że właścicielem tych plików jest root, wykonuje je na ślepo za pomocą subprocess.Popen jako roota. Dlatego nasz atakujący z powodzeniem wykorzystał tę lukę.

Oto wizualizacja:

Microsoft

Aby uzyskać stały dostęp do konta root, badacz wykorzystał przepływ exploitów do stworzenia backdoora. Proces tego jest następujący:

  1. Kopie / kosz / sh do / tmp / sh.
  2. Zmienia nowe / tmp / sh to w Binarny zestaw UID (SUID)
  3. Działa / tmp / sh -p. Ten “-p„Flaga jest konieczna, ponieważ współczesne pociski z założenia odrzucają przywileje.

Microsoft

Exploit „proof-of-concept” działa tylko wtedy, gdy może używać nazwy magistrali „org.freedesktop.network1”. Badacz znalazł kilka środowisk, w których tak się dzieje, w tym Linux Mint, w którym systemd-networkd domyślnie nie posiada nazwy magistrali org.freedodesktop.network1 podczas rozruchu.

Badacz znalazł również kilka procesów, które działają jako użytkownik systemd-network, który może używać nazwy magistrali wymaganej do uruchamiania dowolnego kodu z lokalizacji, które można zapisać na całym świecie. Podatne procesy obejmują kilka wtyczek gpgv, które są uruchamiane podczas instalacji lub aktualizacji apt-get, oraz demona Erlang Port Mapper, który umożliwia uruchamianie dowolnego kodu w niektórych scenariuszach.

Luka została załatana w networkd-dispatcherze, chociaż nie było od razu jasne, kiedy iw jakiej wersji, a próby skontaktowania się z deweloperem nie powiodły się od razu. Osoby korzystające z podatnych wersji Linuksa powinny jak najszybciej załatać swoje systemy.

Leave a Comment