Luki w module ksmbd jądra Linuksa, które umożliwiają zdalne wykonanie kodu

W module ksmbd oferującym implementację serwera plików opartego na protokole SMB wbudowanym w jądro Linuksa zidentyfikowano 14 podatności, z czego cztery pozwalają na zdalne wykonanie własnego kodu z uprawnieniami jądra. Atak może zostać przeprowadzony bez uwierzytelnienia, wystarczy, że w systemie zostanie aktywowany moduł ksmbd. Problemy pojawiają się począwszy od jądra 5.15, które zawierało moduł ksmbd. Luki zostały naprawione w aktualizacjach jądra 6.3.2, 6.2.15, 6.1.28 i 5.15.112. Poprawki w dystrybucjach możesz śledzić na stronach: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Gentoo, Arch.

Zidentyfikowane problemy:

  • CVE-2023-32254, CVE-2023-32250, CVE-2023-32257, CVE-2023-32258 - zdalne wykonanie kodu z uprawnieniami jądra ze względu na brak odpowiedniego blokowania obiektów podczas przetwarzania żądań zewnętrznych zawierających SMB2_TREE_DISCONNECT, SMB2_SESSION_SETUP, SMB2_LOGOFF i SMB2_CLOSE, co skutkuje możliwością wykorzystania warunku wyścigu. Atak może zostać przeprowadzony bez uwierzytelnienia.
  • CVE-2023-32256 — Wyciek zawartości obszarów pamięci jądra z powodu wyścigu podczas przetwarzania poleceń SMB2_QUERY_INFO i SMB2_LOGOFF. Atak może zostać przeprowadzony bez uwierzytelnienia.
  • CVE-2023-32252, CVE-2023-32248 — Zdalna odmowa usługi z powodu wyłuskiwania wskaźnika NULL podczas przetwarzania poleceń SMB2_LOGOFF, SMB2_TREE_CONNECT i SMB2_QUERY_INFO. Atak może zostać przeprowadzony bez uwierzytelnienia.
  • CVE-2023-32249 – Możliwość przejęcia sesji z użytkownikiem ze względu na brak odpowiedniej izolacji podczas obsługi identyfikatora sesji w trybie wielokanałowym.
  • CVE-2023-32247, CVE-2023-32255 — Odmowa usługi z powodu wycieku pamięci podczas przetwarzania polecenia SMB2_SESSION_SETUP. Atak może zostać przeprowadzony bez uwierzytelnienia.
  • CVE-2023-2593 to odmowa usługi spowodowana wyczerpaniem dostępnej pamięci, spowodowana awarią pamięci podczas przetwarzania nowych połączeń TCP. Atak może zostać przeprowadzony bez uwierzytelnienia.
  • CVE-2023-32253 Podczas przetwarzania komendy SMB2_SESSION_SETUP następuje odmowa usługi z powodu zakleszczenia. Atak może zostać przeprowadzony bez uwierzytelnienia.
  • CVE-2023-32251 – brak ochrony przed atakami brute-force.
  • CVE-2023-32246 Użytkownik systemu lokalnego z prawem do zwolnienia modułu ksmbd może wykonać kod na poziomie jądra Linuksa.

Ponadto zidentyfikowano 5 kolejnych luk w pakiecie ksmbd-tools, który zawiera narzędzia do zarządzania i pracy z ksmbd, uruchamiane w przestrzeni użytkownika. Najbardziej niebezpieczne luki (ZDI-CAN-17822, ZDI-CAN-17770, ZDI-CAN-17820, CVE jeszcze nie przypisane) pozwalają zdalnemu, nieuwierzytelnionemu atakującemu na wykonanie swojego kodu z uprawnieniami roota. Podatności spowodowane są brakiem sprawdzenia rozmiaru odebranych danych zewnętrznych przed skopiowaniem ich do bufora w kodzie usługi WKSSVC oraz w procedurach obsługi kodów operacji LSARPC_OPNUM_LOOKUP_SID2 i SAMR_OPNUM_QUERY_USER_INFO. Dwie kolejne luki (ZDI-CAN-17823, ZDI-CAN-17821) mogą prowadzić do zdalnej odmowy usługi bez uwierzytelnienia.

Ksmbd jest reklamowany jako wydajne, gotowe do wbudowania rozszerzenie Samby, które w razie potrzeby integruje się z narzędziami i bibliotekami Samby. Obsługa uruchamiania serwera SMB przy użyciu modułu ksmbd jest dostępna w pakiecie Samba od wersji 4.16.0. W przeciwieństwie do serwera SMB działającego w przestrzeni użytkownika, ksmbd jest bardziej wydajny pod względem wydajności, zużycia pamięci i integracji z zaawansowanymi możliwościami jądra. ksmbd jest kodowany przez Namjae Jeona z firmy Samsung i Hyunchula Lee z LG i utrzymywany jako część jądra Steve French z Microsoft, opiekun podsystemów CIFS/SMB2/SMB3 w jądrze Linuksa i wieloletni członek zespołu programistów Samby, wniósł znaczący wkład we wdrożenie obsługi protokołów SMB/CIFS w Sambie i Linuksa.

Dodatkowo można zauważyć dwie luki w sterowniku graficznym vmwgfx, służącym do implementacji akceleracji 3D w środowiskach VMware. Pierwsza podatność (ZDI-CAN-20292) pozwala lokalnemu użytkownikowi na eskalację swoich uprawnień w systemie. Podatność wynika z braku sprawdzenia stanu bufora przed jego zwolnieniem podczas przetwarzania obiektu vmw_buffer_object, co może skutkować podwójnym wywołaniem funkcji free. Druga podatność (ZDI-CAN-20110) prowadzi do wycieku zawartości pamięci jądra w wyniku błędów w organizacji blokowania obiektów GEM.

Źródło: opennet.ru

Dodaj komentarz