Zdalna podatność w jądrze Linux, która objawia się podczas korzystania z protokołu TIPC

W module jądra Linux, odpowiedzialnym za działanie protokołu sieciowego TIPC (Transparent Inter-process Communication), zidentyfikowano podatność (CVE-2022-0435), która potencjalnie umożliwia wykonanie własnego kodu na poziomie jądra poprzez wysłanie specjalnie sformułowanego pakietu sieciowego. Problem dotyczy jedynie systemów z załadowanym modułem jądra tipc.ko i skonfigurowanym stosem TIPC, który zazwyczaj używany jest w klastrach i domyślnie nie jest aktywowany w niespecjalistycznych dystrybucjach Linuxa.

Zauważono, że podczas kompilacji jądra w trybie „CONFIG_FORTIFY_SRC=y” (stosowanym w RHEL), który dodaje dodatkowe sprawdzenia granic w funkcji memcpy(), eksploitacja ogranicza się do awaryjnego zatrzymania pracy (jądro wpada w stan panic). Wykonywane bez dodatkowych sprawdzeń i przy ujawnieniu informacji o znacznikach kanarkowych stosowanych do ochrony stosu, problem może być użyty do zdalnego wykonania kodu z prawami jądra. Uczestniczący w badaniach naukowcy twierdzą, że technika eksploitacji jest trywialna i zostanie ujawniona po powszechnym usunięciu podatności w dystrybucjach.

Podatność jest spowodowana przepełnieniem stosu, które występuje podczas przetwarzania pakietów, gdzie wartość pola z liczbą węzłów uczestników domeny, w których przekracza 64. Do przechowywania parametrów węzłów w module tipc.ko używany jest stały zbiór „u32 members[64]”, jednak podczas przetwarzania podanego w pakiecie numeru węzła nie jest realizowana kontrola wartości „member_cnt”, co pozwala na użycie wartości większych niż 64 do kontrolowanego nadpisania danych w obszarze pamięci, następującym w stosie po strukturze „dom_bef”.

Błąd prowadzący do podatności został wprowadzony 15 czerwca 2016 roku i wszedł w skład jądra Linux 4.8. Podatność została usunięta w wydaniach jądra Linux 5.16.9, 5.15.23, 5.10.100, 5.4.179, 4.19.229, 4.14.266 oraz 4.9.301. W jądrze większości dystrybucji problem pozostaje nadal nierozwiązany: RHEL, Debian, Ubuntu, SUSE, Fedora, Gentoo, Arch Linux.

Protokoł TIPC został pierwotnie opracowany przez firmę Ericsson i służy do organizacji międzyprocesowej komunikacji w klastrze, głównie uruchamiany na węzłach klastrów. TIPC może działać zarówno na Ethernet, jak i na UDP (port sieciowy 6118). W przypadku działania na Ethernet atak może być przeprowadzony z lokalnej sieci, a przy użyciu UDP — z globalnej sieci, jeśli port nie jest chroniony przez zaporę sieciową. Atak może być również przeprowadzony przez nieuprzywilejowanego lokalnego użytkownika hosta. Aby aktywować TIPC, konieczne jest załadowanie modułu jądra tipc.ko i skonfigurowanie powiązania z interfejsem sieciowym przy użyciu netlink lub narzędzia tipc.

Źródło: opennet.ru

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