W jądrze Linux naprawiono lukę, otrzymującą nieoficjalną nazwę ssh-keysign-pwn. Problem umożliwia lokalnemu użytkownikowi bez uprawnień odczyt plików, które powinny być dostępne tylko dla roota, w tym prywatnych kluczy hosta SSH oraz, w niektórych scenariuszach, /etc/shadow. W momencie publikacji nie przypisano jeszcze osobnego CVE dla tego problemu.
Pomimo nazwy, chodzi tu nie o błąd w OpenSSH jako serwerze sieciowym sshd, a o defekt w logice jądra Linux, związanym z kontrolami ptrace oraz dostępem do deskryptorów plików innego procesu przez pidfd_getfd(2). Narzędzie OpenSSH ssh-keysign okazało się jednym z wygodnych przykładów wykorzystania, ponieważ działa z prywatnymi kluczami hosta, które zwykle należą do roota i są niedostępne dla zwykłych użytkowników.
Istota błędu polega na tym, że funkcja __ptrace_may_access() nieprawidłowo obsługiwała stan procesu, którego struktura pamięci mm już zniknęła, ale wciąż istniały otwarte deskryptory plików. Podczas zakończenia procesu jądro wywołuje exit_mm() wcześniej, niż zamyka pliki przez exit_files(). W tym krótkim okresie czasowym proces wygląda już na pozbawiony zwykłej przestrzeni adresowej użytkownika, ale jego otwarte pliki wciąż istnieją. Z tego powodu kontrola stanu „dumpable” mogła być ominięta, a pidfd_getfd() - uzyskać dostęp do cudzego deskryptora pliku przy pasującym UID.
Praktyczny scenariusz oparty jest na programach setuid, które najpierw otwierają wrażliwy plik z prawami roota, następnie zrzucają uprawnienia i kończą, wciąż mając otwarty deskryptor. W opublikowanym opisie jako przykład podano ssh-keysign: otwiera on /etc/ssh/ssh_host_{ecdsa,ed25519,rsa}_key, następnie zrzuca uprawnienia i może zakończyć się, jeśli EnableSSHKeysign jest wyłączony. Te klucze powinny być dostępne tylko dla roota, ponieważ są używane do autoryzacji opartej na hoście.
Drugi przykład to chage, który może otwierać /etc/shadow, następnie zrzucać efektywne prawa i kończyć. W rezultacie atak niekoniecznie od razu daje powłokę z prawami roota, ale pozwala uzyskać zawartość plików, która zwykle uważana jest za krytycznie poufną. Wycieki /etc/shadow są niebezpieczne z powodu możliwości późniejszego ataku metodą offline na hasła, a wycieki prywatnych kluczy hosta SSH niosą ryzyko podmienienia hosta lub przeprowadzenia ataków na zaufane scenariusze SSH.
Poprawka została już przyjęta do głównej gałęzi Linuksa. Commit 31e62c2ebbfd z tytułem ptrace: nieco bardziej sensowna logika ‘get_dumpable()’ zmienia zachowanie weryfikacji dumpowalności: jądro teraz zachowuje stan user_dumpable przy zniknięciu mm i wymaga poprawnej weryfikacji CAP_SYS_PTRACE do obejścia. Łata dotyczy include/linux/sched.h, kernel/exit.c i kernel/ptrace.c.
Vulnerability została zgłoszona przez Qualys i naprawiona przez Linusa Torvaldsa 14 maja 2026 roku. Phoronix zauważa, że w momencie publikacji problem dotyczył wszystkich wydań jądra Linuksa aż do aktualnego stanu gałęzi głównej przed wprowadzeniem poprawki. Autor PoC wskazuje również, że podatne są jądra przed commitem 31e62c2ebbfd, w tym stabilne gałęzie na dzień 14 maja.
Szczególnie istotne jest to, że do wykorzystania nie jest wymagane ładowanie specyficznych modułów jądra, jak w przypadku wielu ostatnich podatności LPE. Wystarczy lokalny, nieuprzywilejowany dostęp do systemu oraz odpowiedni uprzywilejowany proces pomocniczy. Programista Debian, Daniel Bauman, zauważył, że problem ten powinien być rozwiązany poprzez aktualizację jądra i późniejsze ponowne uruchomienie do poprawionego jądra.
W opublikowanym repozytorium z demonstracją zgłoszono weryfikację w Raspberry Pi OS Bookworm z jądrem 6.12.75, Debian 13, Ubuntu 22.04, Ubuntu 24.04, Ubuntu 26.04, Arch i CentOS 9. Do tej listy należy podchodzić jako do danych autora PoC, a nie jako do wyczerpującej listy: ponieważ błąd znajduje się w ogólnej logice jądra, faktyczny zasięg zależy od wersji jądra i dostępności backportowej poprawki w danym dystrybucji.
Dla administratorów główna rekomendacja jest prosta: zainstalować zaktualizowany pakiet jądra od swojego dystrybucji i ponownie uruchomić system. Jeśli istnieją podstawy, by sądzić, że na maszynie był już lokalny, nieuprzywilejowany dostęp intruza, po aktualizacji warto dodatkowo rozważyć rotację kluczy hosta SSH oraz sprawdzenie /etc/shadow/kont, ponieważ sama podatność jest związana z odczytem wrażliwych plików, a nie tylko z abstrakcyjnym obejściem weryfikacji dostępu.
W Debianie już rozpoczęto prace nad przeniesieniem poprawki: Bauman poinformował o cherry-pick upstream-commicie w trixie-fastforward-backports i wysłaniu prośby o scalanie dla Debian sid. W prośbie o scalanie wyraźnie zaznaczono, że przenoszony jest commit 31e62c2 w celu poprawy logiki ptrace dumpability, umożliwiającej odczyt root-plików przez nieuprzywilejowanego użytkownika.
Źródło: linux.org.ru
