Bezpieczeństwo kernela Linux · Maj 2026
Dwie krytyczne luki w kernelu Linux — eskalacja do roota
root. Dostępne są publiczne exploity działające na Ubuntu, RHEL, SUSE, Amazon Linux, Debianie i innych dystrybucjach. Działaj natychmiast.
1. Copy Fail — CVE-2026-31431
Na czym polega problem
Luka tkwi w module algif_aead — składniku kernela obsługującym operacje kryptograficzne AEAD przez interfejs gniazd AF_ALG. W 2017 roku wprowadzono optymalizację polegającą na wykonywaniu szyfrowania w miejscu (in-place): kernel ponownie używał bufora źródłowego jako docelowego. Ta pozornie niegroźna zmiana stworzyła nieoczekiwaną ścieżkę: przez połączenie wywołań systemowych socket(AF_ALG) i splice() nieuprawniony użytkownik może wykonać precyzyjny zapis 4-bajtowy bezpośrednio do page cache — mechanizmu przechowującego w pamięci aktywne kopie plików z dysku.
Atakujący modyfikuje w pamięci kod pliku wykonywalnego z bitem setuid (np. /usr/bin/su) — bez dotykania pliku na dysku. Gdy dowolny uprzywilejowany proces uruchomi tę skażoną kopię, atakujący otrzymuje powłokę roota. Cały exploit to 732-bajtowy skrypt Pythona korzystający wyłącznie z biblioteki standardowej. Nie wymaga warunków wyścigowych, nie zawiesza systemu i działa na wszystkich testowanych dystrybucjach bez modyfikacji. Plik na dysku pozostaje niezmieniony — systemy detekcji oparte na sumach kontrolnych nie zauważą włamania.
Dotyczy systemów
Wszystkie dystrybucje zbudowane na kernelu wydanym od 2017 roku (od ok. wersji 4.14) do wersji poprawionych. Potwierdzone: Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 10.1, SUSE 16, Debian, Fedora, Arch Linux.
Jak sprawdzić podatność
Sprawdź wersję działającego kernela i oceń, czy moduł algif_aead jest załadowany:
# Sprawdź wersję kernela uname -r # Sprawdź czy moduł jest załadowany lsmod | grep algif_aead # Sprawdź czy moduł jest dostępny w systemie find /lib/modules/$(uname -r) -name 'algif_aead*' # Sprawdź czy coś aktualnie korzysta z AF_ALG lsof | grep AF_ALG
Jeśli lsmod zwraca wynik lub find odnajduje plik modułu, system jest podatny (o ile nie ma jeszcze zaktualizowanego kernela). Wersje podatne to kernel 4.14 – 6.18.21 oraz 6.19.x przed 6.19.12.
2. Dirty Frag — CVE-2026-43284 i CVE-2026-43500
Na czym polega problem
Zaledwie tydzień po Copy Fail, badacz Hyunwoo Kim ujawnił kolejną rodzinę luk opartą na tym samym mechanizmie zapisu do page cache, ale działającą przez zupełnie inne podsystemy kernela. Dirty Frag łączy dwa niezależne błędy w jedną niezawodną ścieżkę eskalacji uprawnień.
CVE-2026-43284 dotyczy modułów esp4 i esp6 — implementacji protokołu ESP (Encapsulating Security Payload) dla IPv4 i IPv6, stanowiącego serce VPN opartych na IPsec. Optymalizacja ścieżki szybkiego odbioru z 2017 roku sprawiła, że deszyfrowanie może odbywać się na buforach stronnicowanych (paged buffers), które nie należą wyłącznie do kernela. Przez splice() lub vmsplice() nieuprawniony proces może zachować referencję do odszyfrowanego tekstu jawnego, uzyskując tym samym prymityw zapisu do page cache.
CVE-2026-43500 dotyczy modułu rxrpc implementującego protokół RxRPC, na którym opiera się rozproszony system plików AFS. Ten sam błąd in-place decryption — wprowadzony w czerwcu 2023 — tworzy identyczną ścieżkę zapisu.
Łącząc oba błędy, atakujący uzyskuje nie tylko zapis 4-bajtowy (jak w Copy Fail), lecz zapis pełnego, atakującym kontrolowanego tekstu jawnego w dowolne miejsce page cache — w jednym poleceniu. Co istotne: systemy zabezpieczone przez wyłączenie algif_aead (jako mitygacja Copy Fail) nadal są podatne na Dirty Frag.
Dotyczy systemów
Wszystkie główne dystrybucje. CVE-2026-43284 (ESP) — kernele od 2017 roku. CVE-2026-43500 (RxRPC) — kernele od połowy 2023 roku. AlmaLinux 8 jest podatny tylko na CVE-2026-43284 (brak modułu rxrpc). AlmaLinux 9 i 10 podatne na obie luki. Wyjątek: CloudLinux 7 nie jest podatny.
Jak sprawdzić podatność
# Sprawdź wersję kernela uname -r # Sprawdź załadowanie modułów ESP (CVE-2026-43284) lsmod | grep -E 'esp4|esp6' # Sprawdź moduł rxrpc (CVE-2026-43500) lsmod | grep rxrpc # Sprawdź dostępność modułów w systemie find /lib/modules/$(uname -r) -name 'esp4*' -o -name 'esp6*' -o -name 'rxrpc*' # Jeśli używasz KernelCare – sprawdź stan łatki kcarectl --patch-info | grep -i 'CVE-2026-43284\|CVE-2026-43500'
Jeżeli moduły esp4, esp6 lub rxrpc są załadowane lub dostępne w katalogu modułów, a kernel nie pochodzi z zaufanego pakietu z poprawką, system jest podatny.
3. Jak załatać — gdy brak oficjalnej aktualizacji dystrybucji
Mitygacja Copy Fail (CVE-2026-31431)
Podstawową metodą jest wyłączenie modułu algif_aead. Operacja nie wpływa na dm-crypt/LUKS, kTLS, IPsec, OpenSSL, GnuTLS, SSH — niemal żadna typowa aplikacja serwerowa nie korzysta bezpośrednio z AF_ALG.
-
Trwałe wyłączenie modułu:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif_aead.conf -
Natychmiastowe wyładowanie modułu (o ile nie jest wbudowany w kernel):
rmmod algif_aead 2>/dev/null || true -
Weryfikacja wyłączenia po restarcie:
modprobe algif_aead lsmod | grep algif_aead # Oba polecenia powinny zwrócić brak wyniku / błąd
CONFIG_CRYPTO_USER_API_AEAD=y, moduł jest wbudowany i reguły modprobe.d nie działają. Zastosuj alternatywną metodę — blacklist initcall przez GRUB:
grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init" reboot # Weryfikacja po restarcie: cat /proc/cmdline | grep algif_aead_init
Mitygacja Dirty Frag (CVE-2026-43284 i CVE-2026-43500)
Wyłącz moduły esp4, esp6 i rxrpc. Uwaga: dezaktywacja modułów ESP przerwie ruch IPsec/VPN oparty na tych modułach. Jeśli IPsec jest wymagany, rozważ alternatywną metodę (sysctl, poniżej).
-
Trwałe wyłączenie modułów + natychmiastowy efekt:
sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' \ > /etc/modprobe.d/dirtyfrag.conf rmmod esp4 esp6 rxrpc 2>/dev/null echo 3 > /proc/sys/vm/drop_caches" -
Weryfikacja:
lsmod | grep -E 'esp4|esp6|rxrpc' # Brak wyników = mitygacja aktywna
-
Alternatywa dla środowisk z wymaganym IPsec — blokada wariantu ESP przez wyłączenie unprivileged user namespaces (tylko RHEL 9/10):
echo "user.max_user_namespaces=0" > /etc/sysctl.d/dirtyfrag.conf sysctl --system⚠ Ta metoda blokuje tylko CVE-2026-43284. CVE-2026-43500 (rxrpc) wymaga osobnego wyłączenia modułu
rxrpc. Dezaktywacja user namespaces może wpłynąć na rootless containers, Flatpak i piaskownice przeglądarek. -
AWS — rozszerzona lista modułów do wyłączenia (zalecenie AWS Security Bulletin 2026-027):
printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n install xfrm_user /bin/false\ninstall ipcomp4 /bin/false\ninstall ipcomp6 /bin/false\n' \ > /etc/modprobe.d/dirtyfrag.conf rmmod xfrm_user ipcomp4 ipcomp6 esp4 esp6 rxrpc 2>/dev/null || true
rm /etc/modprobe.d/disable-algif_aead.conf # Copy Fail
rm /etc/modprobe.d/dirtyfrag.conf # Dirty Frag
4. Stan łat według dystrybucji
| Dystrybucja | Copy Fail | Dirty Frag | Polecenie aktualizacji |
|---|---|---|---|
| Ubuntu | Łata dostępna | Łata dostępna | apt-get update && apt-get upgrade |
| AlmaLinux | Łata dostępna | Łata dostępna | dnf clean metadata && dnf upgrade |
| Amazon Linux | Łata dostępna | W toku | dnf update kernel |
| Fedora / Arch | Łata dostępna | Łata dostępna | dnf upgrade / pacman -Syu |
| RHEL | Łata dostępna | W toku | dnf upgrade |
| SUSE / openSUSE | Łata dostępna | W toku | zypper update |
| Debian stable | Tylko unstable | Brak łaty | Stosuj mitygację modprobe |
| CloudLinux 7 | Nie dotyczy | Nie dotyczy | — |
Po każdej aktualizacji kernela wymagany jest restart systemu — nowa wersja kernela jest aktywna dopiero po ponownym uruchomieniu. Zweryfikuj aktywny kernel po restarcie:
uname -r # Porównaj z wersją docelową podaną przez advisory swojej dystrybucji
5. Środowiska kontenerowe i Kubernetes
Obie luki są szczególnie groźne w środowiskach wielodostępnych. Ponieważ page cache jest współdzielony między hostem a kontenerami, skompromitowany kontener może przy użyciu tych exploitów uzyskać prawa roota na hoście i uciec z izolacji — niezależnie od polityk sieciowych i RBAC. Domyślny profil seccomp Dockera blokuje AF_RXRPC, ale nie blokuje AF_KEY ani netlink XFRM.
Priorytetowe działania dla Kubernetes: zaktualizuj wszystkie węzły robocze (worker nodes) i serwery CI/CD przed serwerami bez dostępu użytkowników. Jeśli patch nie jest jeszcze dostępny, rozważ włączenie dedykowanego profilu seccomp blokującego wywołania socket(AF_ALG) i socket(AF_KEY) w każdym podzie.
6. Wykrywanie prób eksploitacji
Exploit Copy Fail można wykryć przez monitorowanie tworzenia gniazd AF_ALG SOCK_SEQPACKET przez procesy spoza normalnej listy narzędzi kryptograficznych (cryptsetup, systemd-cryptsetup, veritysetup). Exploit Dirty Frag pozostawia ślad w postaci użycia AF_KEY, netlink XFRM lub AF_RXRPC przez nieuprzywilejowane procesy.
# Monitoring gniazd AF_ALG (Copy Fail) auditctl -a always,exit -F arch=b64 -S socket -F a0=38 -k af_alg_watch # Monitoring gniazd AF_KEY (Dirty Frag) auditctl -a always,exit -F arch=b64 -S socket -F a0=15 -k af_key_watch # Podejrzana aktywność w logach auditd ausearch -k af_alg_watch | grep -v cryptsetup
📋 Lista kontrolna — wymagane działania
uname -r) na wszystkich hostach Linuxalgif_aead (Copy Fail) na systemach bez łatyesp4, esp6, rxrpc (Dirty Frag) na systemach bez łatyuname -r)/etc/modprobe.d/