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
