Bad Epoll: w systemach Linux i Android odkryto lukę, która umożliwia uzyskanie dostępu roota.


1

W jądrze Linux odkryto podatność Zły Epoll, zarejestrowana jako CVE-2026-46242. Umożliwia to zwykłemu lokalnemu użytkownikowi bez specjalnych uprawnień podniesienie przywilejów do roota. Według badań autora, Jaeona Chona, problem dotyczy nie tylko desktopów i serwerów Linux, ale także części urządzeń z Androidem na nowych wersjach jądra — to jest szczególnie podkreślone w opisie Złego Epoll.

Błąd znajduje się w podsystemie epoll — standardowym mechanizmie Linux do monitorowania wielu deskryptorów plików, połączeń sieciowych i zdarzeń wejścia-wyjścia. Tego rodzaju mechanizmy są aktywnie wykorzystywane przez serwery, przeglądarki i usługi sieciowe, więc po prostu wyłączenie epoll nie jest możliwe. W analizie technicznej wrażliwość została opisana jako wyścig, prowadzący do use-after-free: przy równoczesnym zamykaniu powiązanych obiektów epoll, jeden wątek zwalnia wewnętrzne struktury, a drugi nadal się do nich odnosi.

Mówiąc dokładniej, problem objawia się w sytuacji, gdy jeden deskryptor epoll monitoruje inny, a oba deskryptory są zamykane równocześnie. Po wywołaniu __ep_remove() pole file->f_ep tymczasowo jest zerowane, a konkurencyjny __fput() może zdecydować, że dodatkowe czyszczenie już nie jest potrzebne. W rezultacie obiekt struct eventpoll lub powiązany z nim struct file jest zwalniany zbyt wcześnie, ale kod nadal pracuje z wskaźnikami na już zwolnioną pamięć. To właśnie daje atakującemu możliwość uszkodzenia pamięci jądra.

Do przeprowadzenia ataku nie są wymagane dodatkowe uprawnienia ani namespace'y użytkowników — wystarczy posiadanie CONFIG_EPOLL, co czyni problem szczególnie dotkliwym dla zwykłych systemów Linux. Zgodnie z pierwotnym raportem badacza, błąd został wprowadzony do jądra committem 58c9b016e128 w 2023 roku, a naprawiony committem a6dc643c693.

Pomimo bardzo wąskiego okna wyścigu, badacz przygotował działający exploit dla Google kernelCTF. W opisie eksploatacji pokazano, jak błąd przekształca się w 8-bajtowy zapis w zwolnionej strukturze, a następnie w wyciek pamięci jądra przez /proc/self/fdinfo, przechwycenie file->f_op->poll oraz łańcucha ROP w celu uzyskania dostępu do roota. Dla celu lts-6.12.67 zadeklarowano niezawodność na poziomie około 99%, dla COS — około 98%; exploit na Androida, według autora, jest wciąż w opracowaniu.

Na celowniku znajdują się jądra oparte na gałęzi 6.4 i nowszych, jeśli nie zostało w nich wdrożone poprawki. Stare urządzenia z Androidem na jądrach 6.1, w tym Pixel 8 i podobne modele, autor uważa za odporne. Użytkownicy i administratorzy mają tylko jedną normalną opcję zabezpieczenia — zainstalować aktualizację jądra od swojego dystrybucji lub dostawcy urządzenia.

Źródło: linux.org.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster