Zagrożenie w OverlayFS, które pozwala na podniesienie swoich przywilejów

W jądrze Linux w implementacji systemu plików OverlayFS wykryto lukę (CVE-2023-0386), którą można wykorzystać do uzyskania dostępu root w systemach, w których zainstalowana jest podsystem FUSE i umożliwione jest montowanie partycji OverlayFS przez użytkownika bez uprawnień (począwszy od jądra Linux 5.11 z włączonymi nieuprzywilejowanymi przestrzeniami nazw użytkownika). Problem został usunięty 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 przeprowadzany jest poprzez kopiowanie plików z flagami setgid/setuid z partycji zamontowanej w trybie nosuid do partycji OverlayFS, która ma warstwę powiązaną z partycją umożliwiającą wykonywanie plików suid. Luka jest zbliżona do problemu CVE-2021-3847, wykrytego w 2021 roku, ale różni się niższymi wymaganiami dotyczącymi wykorzystania — w starym problemie wymagana była manipulacja xattrs, które są ograniczone przy użyciu przestrzeni nazw identyfikatorów użytkowników (user namespace), a w nowym problemie używane są bity setgid/setuid, które nie są specjalnie obsługiwane w user namespace.

Algorytm przeprowadzenia ataku:

  • Za pomocą podsystemu FUSE montowany jest system plików, w którym znajdują się pliki wykonywalne należące do użytkownika root z flagami setuid/setgid, dostępne dla wszystkich użytkowników do zapisu. Podczas montowania FUSE ustawia tryb „nosuid”.
  • Anulowane są (unshare) przestrzenie nazw użytkowników i punktów montowania (user/mount namespace).
  • Montowany jest OverlayFS z wcześniej utworzoną w FUSE FS jako warstwą dolną i warstwą górną na bazie katalogu umożliwiającego zapis. Katalog warstwy górnej musi znajdować się w FS, podczas montowania którego nie używa się flagi „nosuid”.
  • Dla pliku suid w FUSE-partcji, za pomocą narzędzia touch zmieniane jest czas modyfikacji, co prowadzi do jego skopiowania do warstwy górnej OverlayFS.
  • Podczas kopiowania jądro nie usuwa flag setgid/setuid, co powoduje, że plik pojawia się w partycji, która umożliwia przetwarzanie setgid/setuid.
  • Aby uzyskać prawa root, wystarczy uruchomić plik z flagami setgid/setuid z katalogu przypiętego do warstwy górnej OverlayFS.

Dodatkowo można zauważyć 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 Linux 5.15, ale nie zostały przeniesione do pakietów z jądrem RHEL 8.x/9.x i CentOS Stream 9.

  • CVE-2023-1252 — dostęp do już zwolnionego obszaru pamięci w strukturze ovl_aio_req przy jednoczesnym wykonywaniu kilku operacji w OverlayFS, zainstalowanym na systemie plików Ext4. Potencjalna luka pozwala na podniesienie swoich uprawnień w systemie.
  • CVE-2023-0590 — dostęp do już zwolnionego obszaru pamięci w funkcji qdisc_graft(). Zakłada się, że wykorzystanie tej luki ogranicza się do awaryjnego zakończenia.
  • CVE-2023-1249 — dostęp do już zwolnionego obszaru pamięci w kodzie zapisu coredump, wynikający z pominięcia wywołania mmap_lock w file_files_note. Zakłada się, że wykorzystanie tej luki ogranicza się do awaryjnego zakończenia.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster