Mega Sekurak Hacking Party w Krakowie! 20.10.2025 r. Bilety -30%
Możliwe zdalne wykonanie kodu w module ksmbd w Linuksie
W świecie usług są takie, które przewidziane są do publicznej ekspozycji oraz takie, które nie powinny być widoczne „ze świata”. Nie oznacza to jednak, że bezpieczeństwo tych drugich może umykać naszej uwadze. Na szczęście wiedział o tym badacz Nicholas Zubrisky z Trend Research, który poinformował o znalezieniu krytycznej luki w zabezpieczeniach ksmbd.
TLDR:
– Możliwy zdalne wykonanie kodu w linuksowym module kernela ksmbd
– Do ataku potrzebny jest jakikolwiek uwierzytelniony dostęp do podatnego systemu
– Atak nie wymaga jakiejkolwiek interakcji ze strony użytkownika
ksmbd, to serwer plików korzystający z protokołu SMB (znanego także jako CIFS), będący częścią linuksowego kernela. Podatność oznaczona identyfikatorem CVE-2025-38561, to problem typu race condition. O race condition mówimy w sytuacji, kiedy dwie lub więcej operacji ściga się o dostęp do danego zasobu. Może prowadzić to do niespójności danych skutkującego problemami z bezpieczeństwem.
W tym przypadku problem związany był z obsługą pola Preauth_HashValue. Z wpisu w repozytorium Git linuksowego kernela możemy dowiedzieć się, że jeśli klient wyśle jednocześnie wiele żądań utworzenia sesji SMB2 do ksmbd, dwie lub więcej sesji może próbować w tym samym momencie zaktualizować lub zwolnić tę samą pamięć. Brak prawidłowego blokowania może skutkować zwolnieniem tej pamięci w trakcie SESSION_SETUP bez właściwej synchronizacji, a w efekcie prowadzić do zdalnego wykonania kodu.
Wykorzystanie podatności skutkuje dostępem do systemu na poziomie uprawnień konta root. Daje to atakującemu pełną kontrolę nad zaatakowanym systemem. Warto nadmienić, że wykorzystanie błędu możliwe jest tylko przez uwierzytelnionych użytkowników, a udostępnianie usługi SMB poza zamknięte, wewnętrzne środowiska sieciowe nie jest zgodne z dobrymi praktykami. W skali CVSS 3.1 błąd otrzymał ocenę 8.5 (AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H). Na tak wysoką ocenę wpływa m.in. fakt, że do przeprowadzenia skutecznego ataku wystarczy dowolne, także nieuprzywilejowane konto oraz brak konieczności interakcje ze strony użytkownika. Ponadto luka może prowadzić do zewnętrznego wykonania kodu w kontekście jądra, atakujący może uzyskać pełny dostęp do pamięci, modyfikować system (I:H), ujawnić poufne dane (C:H) lub doprowadzić do wyłączenia usługi/systemu (A:H).
Nie są znane skuteczne obejścia problemu. Jedyną drogą do wyeliminowania zagrożenia generowanego przez wspomniany moduł jest aktualizacja. Nie wszystkie dystrybucje Linuksa posiadają moduł ksmbd wbudowany w oferowane przez siebie kernele. Dzięki temu jest możliwe, że używana przez nas dystrybucja nie została dotknięta problemem. Dlatego warto śledzić biuletyny wydawane przez używane przez nas systemy operacyjne. W sytuacji, kiedy używamy tzw. waniliowych kerneli powinniśmy upewnić się, że używamy wersji co najmniej:
– 6.1.148 w gałęzi 6.1
– 6.6.102 w gałęzi 6.6
– 6.12.42 w gałęzi 6.12
– 6.15.10 w gałęzi 6.15
– 6.16.1 w gałęzi 6.16
Problem nie występuje w gałęzi 6.17.
Nie są to pierwsze problemy z bezpieczeństwem ksmbd. W nieodległej przeszłości moduł ten mierzył się już z podobnymi problemami.
~pu