Poważne podatności w Linuxie

Poważne podatności w Linuxie
Photo by Kevin Horvat / Unsplash

Ostatnie dwa tygodnie to wyjątkowo intensywny okres dla bezpieczeństwa jądra Linux — pojawiły się cztery poważne podatności LPE (local privilege escalation), jedna po drugiej:


1. Copy Fail — CVE-2026-31431 (29 kwietnia 2026)

CVSS 7.8. Podatność LPE w jądrze Linux, pozwalająca nieuprzywilejowanemu lokalnemu użytkownikowi uzyskać uprawnienia roota.

Błąd logiczny w ścieżce crypto: algif_aead, który po połączeniu z splice() daje nieuprzywilejowanemu użytkownikowi kontrolowany zapis 4 bajtów do strony page cache pliku czytelnego dla niego. Pozwala to modyfikować w pamięci podręcznej np. binarkę setuid i uzyskać roota, mimo że plik na dysku nie zostaje nadpisany. Problem wprowadzony commitem z 2017 roku.

Exploit to 10-liniowy skrypt Python o rozmiarze 732 bajtów, działający na niemal wszystkich dystrybucjach wydanych od 2017 r. Copy Fail jest podobny do Dirty Cow i Dirty Pipe, ale nie wymaga wygrania race condition i ma szerszy zakres zastosowania.

Szczególnie niebezpieczna w środowiskach chmurowych i klastrach Kubernetes, bo page cache jest współdzielony między kontenerami a hostem — umożliwia container escape. CISA dodała ją do katalogu KEV; agencje federalne miały czas na patching do 15 maja 2026.

Mitygacja tymczasowa: blokada tworzenia gniazd AF_ALG lub wyłączenie modułu algif_aead.

2. Dirty Frag — CVE-2026-43284 + CVE-2026-43500 (ok. 7 maja 2026)

Łańcuch dwóch podatności LPE w jądrze Linux w podsystemach ESP (IPsec) i RxRPC, pozwalający atakującym z dostępem lokalnym uzyskać uprawnienia roota. Odkryty przez Hyunwoo Kim. Opisywany jako "Copy Fail 2", ponieważ jest oparty na exploicie odtworzonym z patcha do poprzedniej podatności. Łączy dwa prymitywy zapisu do page cache — jeden w XFRM-ESP (IPsec) i drugi w RxRPC.

Exploit wymaga CAP_NET_ADMIN, co zmniejsza ryzyko w zahartowanych (hardened) środowiskach kontenerowych (np. Kubernetes z domyślnymi profilami seccomp), ale pozostaje poważnym zagrożeniem dla maszyn wirtualnych i mniej restrykcyjnych środowisk.

Mitygacja: wyłączenie modułów esp4, esp6, rxrpc.

3. Fragnesia — CVE-2026-46300 (13-14 maja 2026)

CVSS 7.8. Podatność w podsystemie XFRM ESP-in-TCP jądra Linux odkryta przez Williama Bowlinga z Zellic i zespołu V12. Pozwala nieuprzywilejowanym lokalnym atakującym modyfikować zawartość plików tylko do odczytu w page cache jądra i uzyskać roota przez deterministyczny mechanizm uszkadzania pamięci page cache.

Źródłem problemu jest błąd w skb_try_coalesce() — funkcja nie propagowała znacznika SKBFL_SHARED_FRAG podczas transferu stron między buforami, przez co jądro traciło informację o tym, że fragment jest zewnętrznie wspierany przez strony page cache. W efekcie ścieżka odbierająca ESP-in-TCP wykonywała deszyfrowanie AES-GCM in-place bezpośrednio na tych stronach, umożliwiając nieuprzywilejowanemu procesowi zapis XOR dowolnego klucza do read-only page cache.

W odróżnieniu od Dirty Frag nie wymaga uprawnień na poziomie hosta. Patche wydały AlmaLinux, Amazon Linux, Debian, Red Hat, SUSE i Ubuntu.

4. ptrace exit-race — CVE-2026-46333 (ok. 14-15 maja 2026)

Ujawniona przez Qualys. Niepowiązana z poprzednimi (nie dotyczy XFRM/ESP), ale równie poważna. Wyścig w ścieżce sprawdzania dostępu ptrace: między momentem odłączenia deskryptora pamięci zadania a zamknięciem tablicy deskryptorów plików nieuprzywilejowany proces może wywołać pidfd_getfd(2) i skopiować otwarte deskryptory z kończącego się uprzywilejowanego procesu. Celuje w binaria SUID takie jak ssh-keysign (klucze prywatne SSH hosta) i chage (baza shadow). Istnieje publiczny proof-of-concept.

To czwarta poważna luka w jądrze Linuxa wymagająca uwagi w ciągu trzech tygodni.

Podsumowanie — co zrobić

CVE Nazwa Wektor Status patchy
CVE-2026-31431 Copy Fail AF_ALG / algif_aead ✅ Dostępne (kernel 6.18.22, 6.19.12, 7.0)
CVE-2026-43284/43500 Dirty Frag ESP/IPsec + RxRPC ✅ Dostępne
CVE-2026-46300 Fragnesia XFRM ESP-in-TCP ✅ Dostępne (od 16 maja)
CVE-2026-46333 ptrace exit-race ptrace / pidfd_getfd ⚠️ Upstream fix dostępny

Dla środowisk Kubernetes/RKE2 i AKS priorytet: natychmiastowy update jądra węzłów + restart nodów. Dirty Frag i Fragnesia wymagają wyłączenia esp4/esp6 jeśli nie używasz IPsec — w większości klastrów to bezpieczna mitygacja tymczasowa.