DirtyClone (CVE-2026-43503): root bez śladu na dysku
Po sieci krąży kolejny „Dirty", tym razem DirtyClone. To podatność typu local privilege escalation w jądrze Linuksa, oznaczona jako CVE-2026-43503 z oceną CVSS 8.8. Pozwala zwykłemu, nieuprzywilejowanemu użytkownikowi zostać rootem, a robi to wyjątkowo cicho: nadpisuje zaufany plik binarny w pamięci, nie dotykając go na dysku. Publiczny opis exploita opublikował 25 czerwca zespół JFrog Security Research.
Na czym polega błąd
Sercem problemu jest jedna funkcja jądra, __pskb_copy_fclone(). Podczas klonowania pakietu sieciowego (struktura sk_buff) gubi ona flagę SKBFL_SHARED_FRAG. Ta flaga to mechanizm bezpieczeństwa: oznacza, że fragmenty bufora wskazują na współdzielone strony z page cache, czyli na pamięć podpiętą do pliku na dysku. Kiedy flaga jest ustawiona, IPsec przed deszyfrowaniem robi kopię, zamiast pisać w oryginalne strony.
Gubiąc flagę podczas klonowania, jądro zaczyna traktować strony podpięte do pliku jako zwykłą, bezpiecznie zapisywalną pamięć pakietu. To otwiera prymityw zapisu w cudzą, plikową pamięć.
Jak wygląda atak
Łańcuch jest sprytny i składa się z kilku kroków:
- Atakujący ładuje do pamięci uprzywilejowany plik, na przykład
/usr/bin/su, tak żeby jego strony znalazły się w page cache. - Podpina te strony jako fragmenty do pakietu sieciowego.
- Wymusza sklonowanie pakietu przez netfilterowy target TEE, który wewnętrznie woła
nf_dup_ipv4(), a ten__pskb_copy_fclone(). W tym momencie ginie flagaSKBFL_SHARED_FRAG. - Przepuszcza pakiet przez kontrolowany przez siebie tunel IPsec. Deszyfrowanie ESP działa w miejscu (in-place) i wpisuje kontrolowane bajty prosto w strony page cache należące do
/usr/bin/su. - Nadpisane zostają instrukcje sprawdzające uprawnienia w
su. Od tej pory uruchomieniesudaje roota.
Żeby to wszystko ustawić (reguła TEE, tunel IPsec, CAP_NET_ADMIN), atakujący korzysta z nieuprzywilejowanych przestrzeni nazw użytkownika.
Dlaczego to takie groźne
Modyfikacja żyje wyłącznie w pamięci jądra. Plik /usr/bin/su na dysku ani drgnie, więc:
- narzędzia do kontroli integralności plików (AIDE, Tripwire, sumy kontrolne) niczego nie wykryją, bo na dysku nic się nie zmieniło,
- atak nie zostawia wpisów w logach jądra ani śladu w audycie,
- po restarcie systemu oryginalny plik wraca z dysku, więc dowód znika sam.
To dokładnie ten rodzaj podatności, który wymyka się klasycznemu monitoringowi.
Rodzina DirtyFrag
DirtyClone nie jest osamotniony. To czwarty błąd z tej samej rodziny, wszystkie mają wspólny korzeń: pamięć podpięta do pliku bywa traktowana jak dane pakietu, a operacja sieciowa pisze w miejscu tam, gdzie powinna zrobić kopię.
- CVE-2026-43284 i CVE-2026-43500 (pierwotny DirtyFrag)
- CVE-2026-46300 (Fragnesia)
- CVE-2026-43503 (DirtyClone)
Kogo to dotyczy
Podatne są popularne dystrybucje z włączonymi nieuprzywilejowanymi przestrzeniami nazw użytkownika: Debian, Fedora i Ubuntu, o ile ich jądro nie ma pełnego łańcucha poprawek. Szczególnie narażone są środowiska wielodostępne: serwery z wieloma użytkownikami, runnery CI, hosty kontenerów i klastry Kubernetes, gdzie niezaufani użytkownicy mogą tworzyć przestrzenie nazw.
Jak się bronić
Najważniejsze: zaktualizuj jądro. Poprawka trafiła do mainline 21 maja (commit 48f6a5356a33) i pierwszy raz pojawiła się w Linux v7.1-rc5. Backporty do gałęzi stable weszły w kolejnych dniach, więc świeże jądro z dystrybucji załatwia problem.
Zanim zaktualizujesz, doraźnie:
- Wyłącz nieuprzywilejowane przestrzenie nazw. Na Debianie i Ubuntu odcina to drogę do
CAP_NET_ADMIN:
sysctl -w kernel.unprivileged_userns_clone=0
- Zablokuj moduły dostarczające prymityw deszyfrowania in-place. To wyłącza IPsec i AFS, więc rób to świadomie:
echo -e "blacklist esp4\nblacklist esp6\nblacklist rxrpc" > /etc/modprobe.d/dirtyclone.conf
Warto też mieć na maszynie coś, co wykrywa manipulację poświadczeniami w czasie działania. Moduł LKRG potrafi zauważyć nagłą, nieautoryzowaną zmianę uprawnień procesu, czyli dokładnie efekt końcowy tego exploita.
Kalendarium
- 19 maja 2026: JFrog zgłasza błąd maintainerom jądra
- 21 maja: poprawka scalona do mainline (commit
48f6a5356a33), v7.1-rc5 - 23 maja: opublikowane CVE-2026-43503
- ok. 24 maja: backporty do stable
- 25 czerwca: JFrog publikuje szczegółową analizę z działającym exploitem
Wniosek
DirtyClone dobrze pokazuje, że granica między stosem sieciowym a pamięcią plikową bywa cieńsza, niż się wydaje. Jedna zgubiona flaga zamienia niewinne klonowanie pakietu w zapis do cudzego, zaufanego pliku. Jeśli zarządzasz maszyną wielodostępną, potraktuj to priorytetowo: zaktualizuj jądro, a do czasu aktualizacji ogranicz nieuprzywilejowane przestrzenie nazw.
Źródła: JFrog Security Research, The Hacker News, SecurityWeek, Sansec