Luka w zabezpieczeniach OverlayFS umożliwiająca eskalację uprawnień

W jądrze Linuksa zidentyfikowano lukę w implementacji systemu plików OverlayFS (CVE-2023-0386), która może zostać wykorzystana do uzyskania uprawnień administratora w systemach, które mają zainstalowany podsystem FUSE i umożliwiają montowanie partycji OverlayFS przez nieuprzywilejowanego user (począwszy od jądra Linuksa 5.11 z włączeniem nieuprzywilejowanej przestrzeni nazw użytkowników). Problem został rozwiązany w gałęzi jądra 6.2. Publikację aktualizacji pakietów w dystrybucjach można śledzić na stronach: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Atak polega na skopiowaniu plików z flagami setgid/setuid z partycji zamontowanej w trybie nosuid na partycję OverlayFS, która ma warstwę powiązaną z partycją, która umożliwia wykonywanie plików suid. Luka jest podobna do problemu CVE-2021-3847 zidentyfikowanego w 2021 r., ale różni się niższymi wymaganiami eksploatacyjnymi – stary problem wymagał manipulacji za pomocą xattrs, które ograniczają się do korzystania z przestrzeni nazw użytkownika (user namespace), a nowy problem wykorzystuje bity setgid /setuid, które nie są specjalnie obsługiwane w przestrzeni nazw użytkownika.

Algorytm ataku:

  • Za pomocą podsystemu FUSE montowany jest system plików, w którym znajduje się plik wykonywalny należący do użytkownika root z flagami setuid / setgid, dostępny dla wszystkich użytkowników do zapisu. Podczas montażu FUSE ustawia tryb na „nosuid”.
  • Anuluj udostępnianie przestrzeni nazw użytkownika i punktów montowania (przestrzeń nazw użytkownika/montowania).
  • OverlayFS jest montowany z FS utworzonym wcześniej w FUSE jako dolną warstwą i górną warstwą w oparciu o katalog do zapisu. Katalog górnej warstwy musi znajdować się w systemie plików, który nie używa flagi „nosuid” podczas montowania.
  • Dla pliku suid na partycji FUSE narzędzie touch zmienia czas modyfikacji, co prowadzi do jego skopiowania do górnej warstwy OverlayFS.
  • Podczas kopiowania jądro nie usuwa flag setgid/setuid, co powoduje, że plik pojawia się na partycji, która może być przetwarzana przez setgid/setuid.
  • Aby uzyskać prawa roota wystarczy uruchomić plik z flagami setgid/setuid z katalogu dołączonego do górnej warstwy OverlayFS.

Dodatkowo możemy odnotować ujawnienie przez badaczy z zespołu Google Project Zero informacji o trzech lukach, które zostały naprawione w głównej gałęzi jądra Linuksa 5.15, ale nie zostały przeniesione do pakietów jądra z RHEL 8.x/9.x i Strumień CentOS 9.

  • CVE-2023-1252 — Dostęp do już zwolnionego obszaru pamięci w strukturze ovl_aio_req podczas wykonywania kilku operacji jednocześnie w OverlayFS wdrożonym na systemie plików Ext4. Potencjalnie luka pozwala na zwiększenie uprawnień w systemie.
  • CVE-2023-0590 — Odwołanie do już zwolnionego obszaru pamięci w funkcji qdisc_graft(). Zakłada się, że operacja jest ograniczona do przerwania.
  • CVE-2023-1249 — Dostęp do już zwolnionego obszaru pamięci w kodzie wpisu coredump z powodu braku wywołania mmap_lock w file_files_note. Zakłada się, że operacja jest ograniczona do przerwania.

Źródło: opennet.ru

Dodaj komentarz