Tech

Krytyczna luka „Copy Fail” w jądrze Linuksa umożliwia eskalację uprawnień do roota w większości dystrybucji od 2017 roku

Prosty, 732-bajtowy skrypt w Pythonie wykorzystuje błąd logiczny w szablonie kryptograficznym authencesn, pozwalając na przejęcie kontroli nad systemem bez potrzeby wyścigu.

4 min
Krytyczna luka „Copy Fail” w jądrze Linuksa umożliwia eskalację uprawnień do roota w większości dystrybucji od 2017 roku
Prosty, 732-bajtowy skrypt w Pythonie wykorzystuje błąd logiczny w szablonie kryptograficznym authencesn, pozwalając na Credit · The Register

Fakty

  • Luka CVE-2026-31431, nazwana „Copy Fail”, dotyczy jądra Linuksa od wersji 4.14 (2017).
  • Exploit to 10-liniowy, 732-bajtowy skrypt w Pythonie, działający na wszystkich testowanych dystrybucjach i architekturach.
  • Błąd umożliwia zapis 4 kontrolowanych bajtów do pamięci podręcznej stron (page cache) dowolnego czytelnego pliku.
  • Luka nie wymaga wygrania wyścigu – jest to prosty błąd logiczny w szablonie authencesn.
  • Podatność została odkryta przez badacza Taeyanga Lee z Theori, a pełny łańcuch exploitów opracował zespół Xint Code Research Team przy użyciu analizy wspomaganej AI.
  • Łatki zostały wydane przez dystrybucje Debian, Ubuntu, SUSE oraz Fedorę.
  • Luka może być wykorzystana do ucieczki z kontenera (container escape) na platformach Kubernetes.

Nowa luka w jądrze Linuksa zagraża bezpieczeństwu systemów

W środowisku cyberbezpieczeństwa pojawiła się poważna luka w jądrze Linuksa, oznaczona jako CVE-2026-31431 i nazwana „Copy Fail”. Umożliwia ona każdemu nieuprzywilejowanemu użytkownikowi lokalnemu uzyskanie dostępu root na praktycznie każdej głównej dystrybucji Linuksa wydanej od 2017 roku. Podatność została publicznie ujawniona, a dowód koncepcji exploit jest dostępny w postaci zaledwie 732-bajtowego skryptu w Pythonie, który wykorzystuje standardowe biblioteki. Eksperci ostrzegają, że luka może być szczególnie niebezpieczna w środowiskach wielodostępnych, kontenerach współdzielących jądro oraz systemach CI/CD wykonujących niezaufany kod.

Mechanizm działania i pochodzenie błędu

„Copy Fail” wynika z błędu logicznego w szablonie kryptograficznym authencesn jądra Linuksa, dostępnym przez interfejs gniazda AF_ALG w połączeniu z wywołaniem systemowym splice. Błąd został wprowadzony w 2017 roku wraz z optymalizacją in-place w pliku algif_aead.c (commit 72548b093ee3). Gdy użytkownik łączy plik z potokiem i przekazuje go do gniazda AF_ALG, lista rozproszenia wejściowego AEAD zawiera bezpośrednie odniesienia do fizycznych stron pamięci podręcznej pliku – a nie ich kopii. W przypadku operacji deszyfrowania AEAD, zarówno źródło, jak i cel wskazują na tę samą połączoną listę rozproszenia, co umieszcza strony pamięci podręcznej w zapisywalnej liście docelowej. Algorytm authencesn, używany przez IPsec do obsługi 64-bitowych rozszerzonych numerów sekwencyjnych (ESN), wykorzystuje bufor docelowy jako obszar roboczy do przestawiania bajtów ESN, zapisując 4 bajty poza zadeklarowaną granicą wyjścia, bezpośrednio w połączonych stronach pamięci podręcznej.

Porównanie z wcześniejszymi lukami i zasięg podatności

„Copy Fail” jest porównywany do wcześniejszych luk LPE, takich jak Dirty Cow (CVE-2016-5195) i Dirty Pipe (CVE-2022-0847), ale jego odkrywcy podkreślają, że nie wymaga on wygrania warunku wyścigu i jest bardziej uniwersalny. Exploit działa deterministycznie na każdej testowanej dystrybucji i architekturze, bez potrzeby znajomości wersji jądra, rekompilacji czy gotowych ładunków. Luka dotyczy wszystkich dystrybucji Linuksa opartych na jądrze 4.14 i nowszych, czyli praktycznie każdej wydanej od 2017 roku. Trzy niezależne, pozornie rozsądne zmiany w kodzie z lat 2011, 2015 i 2017 zbiegły się, tworząc ten warunek exploitable, ale nikt nie połączył ich ze sobą przez prawie dekadę.

Potencjalne scenariusze ataku i znaczenie dla bezpieczeństwa

Choć luka sama w sobie nie jest zdalnie exploitable (stąd klasyfikacja LPE), może być łańcuchowana z innymi podatnościami, takimi jak zdalne wykonanie kodu (RCE) w aplikacji webowej, złośliwy runner CI czy kompromitacja SSH, co czyni ją istotną dla zewnętrznego atakującego. Co więcej, „Copy Fail” stanowi potencjalną prymitywę ucieczki z kontenera, która może wpływać na węzły Kubernetes, ponieważ pamięć podręczna stron jest współdzielona między hostem a kontenerami. Atakujący może zmodyfikować binarny setuid w pamięci, nie naruszając pliku na dysku, co powoduje, że standardowe narzędzia do sprawdzania integralności plików oparte na sumach kontrolnych nie wykrywają modyfikacji. Po wykonaniu zmodyfikowanego pliku setuid, atakujący uzyskuje powłokę root.

Reakcja dystrybucji i dostępność łat

Główne dystrybucje Linuksa, w tym Debian, Ubuntu, SUSE oraz Fedora, wydały już łatki naprawiające podatność. Również inne dystrybucje pracują nad wdrożeniem poprawek. Administratorzy systemów są zaleceni do jak najszybszego zastosowania aktualizacji, szczególnie w środowiskach wielodostępnych i kontenerowych. Odkrywcy luki z Theori oraz zespół Xint Code Research Team, który opracował pełny łańcuch exploitów przy użyciu analizy wspomaganej AI, podkreślają, że łatki są już dostępne i należy je pilnie wdrożyć.

Implikacje dla przyszłości bezpieczeństwa Linuksa

„Copy Fail” pokazuje, jak złożone interakcje między pozornie nieszkodliwymi optymalizacjami mogą prowadzić do poważnych luk bezpieczeństwa. Fakt, że błąd pozostawał niewykryty przez prawie dekadę, budzi obawy o inne potencjalne podatności w jądrze. Eksperci podkreślają, że luka ta jest łatwa do wykorzystania, ale pozostawia ślady w logach systemowych – demon PackageKit ulega awarii asercji, co może służyć jako wskaźnik kompromitacji. Mimo to, łatwość i szybkość exploitacji (w ciągu sekund) czyni ją poważnym zagrożeniem. Społeczność Linuksa stoi przed wyzwaniem zapewnienia, że podobne błędy nie pojawią się w przyszłości, szczególnie w kontekście rosnącego wykorzystania kontenerów i środowisk chmurowych.

Podsumowanie

  • Luka CVE-2026-31431 („Copy Fail”) umożliwia lokalną eskalację uprawnień do roota w większości dystrybucji Linuksa od 2017 roku.
  • Exploit to prosty skrypt w Pythonie (732 bajty), działający bez wyścigu i bez kompilacji.
  • Błąd wynika z optymalizacji w szablonie kryptograficznym authencesn, wprowadzonej w 2017 roku.
  • Luka może być wykorzystana do ucieczki z kontenera, stanowiąc zagrożenie dla Kubernetes.
  • Łatki są już dostępne w głównych dystrybucjach; zaleca się pilną aktualizację.
  • Podatność pozostawała niewykryta przez prawie dekadę, co podkreśla potrzebę dokładniejszego audytu kodu jądra.
Galerie
Krytyczna luka „Copy Fail” w jądrze Linuksa umożliwia eskalację uprawnień do roota w większości dystrybucji od 2017 roku — image 1Krytyczna luka „Copy Fail” w jądrze Linuksa umożliwia eskalację uprawnień do roota w większości dystrybucji od 2017 roku — image 2Krytyczna luka „Copy Fail” w jądrze Linuksa umożliwia eskalację uprawnień do roota w większości dystrybucji od 2017 roku — image 3Krytyczna luka „Copy Fail” w jądrze Linuksa umożliwia eskalację uprawnień do roota w większości dystrybucji od 2017 roku — image 4
Więcej na ten temat