Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Bezpieczeństwo kernela Linux · Maj 2026

Dwie krytyczne luki w kernelu Linux — eskalacja do roota

Aktualizacja: 12 maja 2026  ·  CVE-2026-31431 (Copy Fail) & CVE-2026-43284/43500 (Dirty Frag)

⚠ PILNE: W ciągu ostatnich dwóch tygodni ujawniono dwie niezależne luki w kernelu Linux umożliwiające każdemu lokalnemu użytkownikowi bez uprawnień uzyskanie praw 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

CVE-2026-31431 Copy Fail CVSS 7.8 HIGH Ujawniona: 29 kwietnia 2026

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

CVE-2026-43284 CVE-2026-43500 Dirty Frag CVSS 8.8 HIGH Ujawniona: 7 maja 2026

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.

  1. Trwałe wyłączenie modułu:
    echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif_aead.conf
  2. Natychmiastowe wyładowanie modułu (o ile nie jest wbudowany w kernel):
    rmmod algif_aead 2>/dev/null || true
  3. Weryfikacja wyłączenia po restarcie:
    modprobe algif_aead
    lsmod | grep algif_aead
    # Oba polecenia powinny zwrócić brak wyniku / błąd
Uwaga dla RHEL-family (AlmaLinux, CloudLinux, CentOS Stream): Jeśli kernel skompilowano z 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).

  1. 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"
  2. Weryfikacja:
    lsmod | grep -E 'esp4|esp6|rxrpc'
    # Brak wyników = mitygacja aktywna
  3. 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.

  4. 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
Odwrócenie mitygacji po pojawieniu się łatki kernela: Po restarcie z nowym kernelem wystarczy usunąć plik konfiguracyjny i przeładować moduły:
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

Sprawdź wersję kernela (uname -r) na wszystkich hostach Linux
Zastosuj mitygację modprobe dla algif_aead (Copy Fail) na systemach bez łaty
Zastosuj mitygację modprobe dla esp4, esp6, rxrpc (Dirty Frag) na systemach bez łaty
Uruchom aktualizację kernela natychmiast po dostępności łaty dla swojej dystrybucji
Zrestartuj hosty po aktualizacji i zweryfikuj aktywny kernel (uname -r)
Priorytyzuj węzły Kubernetes, serwery CI/CD i hosty wielodostępne
Włącz regułę auditd do monitorowania nieoczekiwanego użycia AF_ALG i AF_KEY
Po pojawieniu się łatki: usuń pliki mitygacyjne z /etc/modprobe.d/

CVE-2026-31431 (Copy Fail) · CVE-2026-43284 · CVE-2026-43500 (Dirty Frag)

CVSS 7.8 / 8.8 · Dotyczy kerneli Linux ≥ 4.14 (2017) do wersji z poprawkami · Exploity publicznie dostępne