Właśnie opublikowano kod exploita Proof-of-Concept (PoC) dla luki CIFSwitch, która umożliwia użytkownikom o niskich uprawnieniach uzyskanie dostępu root w podatnych systemach Linux.

Luka w zabezpieczeniach jądra Linuksa istniała przez 19 lat. Umożliwia użytkownikom o niskich uprawnieniach uzyskanie uprawnień roota. Problem dotyczy wielu dystrybucji. Szczegóły poniżej.

Na czym polega atak CIFSwitch?

Problem, nazwany CIFSwitch, wpływa na podsystem CIFS jądra Linuksa oraz narzędzie pomocnicze przestrzeni użytkownika cifs-utils, którego używa on do obsługi uwierzytelniania. CIFS obsługuje części protokołu sieciowego systemu plików SMB, takie jak montowanie udziałów, operacje odczytu/zapisu oraz komunikację SMB z serwerem.

Podczas uwierzytelniania podsystem wysyła wywołanie request_key w celu uzyskania klucza cifs.spnego. Żądanie sprawdza klucz w przestrzeni użytkownika i wywołuje cifs.upcall jako użytkownik root w celu przeanalizowania opisu klucza, zawierającego pola takie jak UID, PID, pamięć podręczna poświadczeń i przestrzeń nazw.

Według inżyniera bezpieczeństwa SpaceX, Asima Viladiego Oglu Manizady, jądro nie sprawdza pochodzenia żądania ani opisu klucza, co pozwala atakującemu na bezpośrednie wywołanie funkcji request_key i podanie własnych pól opisu klucza, omijając pochodzenie CIFS.

Ponieważ funkcja cifs.upcall jest wywoływana jako użytkownik root, pomocnik przełącza się na przestrzenie nazw identyfikatora PID podanego w zmodyfikowanym opisie klucza, zapewniając atakującemu dostęp z uprawnieniami roota.

Co więcej, podczas operacji, przed utratą uprawnień proces ten przeprowadza również wyszukiwanie kont, które przechodzi przez Name Service Switch (NSS) i umożliwia ładowanie modułów NSS.

Atakujący może wykorzystać tę możliwość, umieszczając fałszywy plik konfiguracyjny NSS i moduł NSS w swojej przestrzeni nazw, co powoduje, że proces pomocniczy ładuje kontrolowany przez atakującego kod jako użytkownik root – informuje Manizada.

Według inżyniera lukę można usunąć, uznając opisy kluczy za prawidłowe tylko wtedy, gdy CIFS używa swojego prywatnego spnego_cred, oraz wdrażając zabezpieczenie przestrzeni użytkownika w celu sprawdzenia, czy opis klucza został rzeczywiście wygenerowany przez jądro.

Niektóre dystrybucje Linux Mint, CentOS, Rocky Linux, Kali Linux, AlmaLinux i SLES SAP, które mają domyślnie zainstalowany pakiet cifs-utils, są podatne na atak. Według badacza niektóre dystrybucje są podatne tylko wtedy, gdy pakiet cifs-utils został zainstalowany ręcznie.

Wiele dystrybucji Ubuntu, Fedora, CentOS, Rocky Linux, AlmaLinux, Oracle Linux, openSUSE i SLES domyślnie blokuje ścieżkę wykonywania. Amazon Linux 2 KVM i Kali Linux 2019.4/2020.4 nie są zagrożone.

Główne dystrybucje Linuksa wdrożyły poprawki luki bezpieczeństwa na początku maja. Manizada opublikował kod koncepcyjny (PoC), który ma pomóc obrońcom w sprawdzaniu poprawności poprawek i możliwości implementacji środków zaradczych.

Coraz częściej piszemy o podatnościach w środowisku Linuksa. Uznawany kiedyś za bezpieczniejszy system operacyjny jednak wymaga przemyślanej polityki zabezpieczenia i monitorowania.