Luka w jądrze Linuksa umożliwia ominięcie izolacji piaskownicy Chrome

Badacze bezpieczeństwa z Google zidentyfikowali lukę w zabezpieczeniach (CVE-2025-38236) w jądrze Linuksa, która umożliwia eskalację uprawnień. Luka ta umożliwia między innymi ominięcie mechanizmu izolacji sandbox używanego w Google Chrome i wykonanie kodu na poziomie jądra podczas wykonywania kodu w kontekście izolowanego procesu renderowania Chrome (na przykład podczas wykorzystywania innej luki w zabezpieczeniach Chrome). Problem ten pojawia się od jądra Linuksa w wersji 6.9 i został naprawiony w aktualizacjach jądra Linuksa 6.1.143, 6.6.96, 6.12.36 i 6.15.5. Prototyp exploita jest dostępny do pobrania.

Luka w zabezpieczeniach wynika z błędu implementacji flagi MSG_OOB, którą można ustawić dla gniazd AF_UNIX. Flaga MSG_OOB („out-of-band”) umożliwia dołączenie dodatkowego bajtu do wysyłanych danych, który odbiorca może odczytać przed odebraniem pozostałych danych. Flaga ta została dodana w jądrze Linux 5.15 na prośbę Oracle i zaproponowano jej wycofanie w zeszłym roku, ponieważ nie była powszechnie używana.

Implementacja sandbox przeglądarki Chrome zezwalała na operacje na gniazdach UNIX oraz wywołania systemowe send()/recv(), gdzie flaga MSG_OOB była dozwolona wraz z innymi opcjami i nie była oddzielnie filtrowana. Błąd w implementacji MSG_OOB powodował wystąpienie warunku użycia po zwolnieniu po wykonaniu określonej sekwencji wywołań systemowych: char dummy; int socks[2]; socketpair(AF_UNIX, SOCK_STREAM, 0, socks); send(socks[1], "A", 1, MSG_OOB); recv(socks[0], &dummy, 1, MSG_OOB); send(socks[1], "A", 1, MSG_OOB); recv(socks[0], &dummy, 1, MSG_OOB); send(socks[1], "A", 1, MSG_OOB); recv(socks[0], &dummy, 1, MSG_OOB); recv(socks[0], &dummy, 0, MSG_OOB);

Źródło: opennet.ru

Dodaj komentarz