Luka CIFSwitch w jądrze Linuxa: 19-letnia podatność na eskalację uprawnień
W jądrze Linuxa odkryto podatność CIFSwitch, która przez 19 lat umożliwiała eskalację uprawnień do roota. Problem dotyczy podsystemu CIFS i pakietu cifs-utils. Producent wydał już łatki.
W jądrze Linuxa odkryto podatność, która pozostawała niewykryta przez 19 lat. Oznaczona jako CIFSwitch luka pozwala użytkownikowi z niskimi uprawnieniami uzyskać dostęp do poziomu roota w wielu popularnych dystrybucjach. Problem dotyczy podsystemu CIFS (Common Internet File System) i narzędzia cifs-utils. Na szczęście główne dystrybucje już opublikowały łatki.
Czym jest podatność CIFSwitch?
CIFS to składnik jądra Linuxa odpowiedzialny za obsługę protokołu sieciowego SMB, używanego m.in. do montowania udziałów sieciowych. Gdy system autoryzuje montowanie, podsystem wysyła żądanie do przestrzeni użytkownika, które obsługuje program cifs.upcall uruchamiany z uprawnieniami roota. Jak wyjaśnia inżynier SpaceX Asim Viladi Oglu Manizada, który odkrył lukę, jądro nie sprawdza źródła żądania ani opisu klucza. Atakujący może bezpośrednio wywołać funkcję request_key, podstawiając własny opis klucza i tym samym omijając mechanizmy kontroli dostępu.
Ponieważ cifs.upcall działa jako root, podczas przetwarzania przełącza się na przestrzeń nazw (namespace) wskazaną w zmodyfikowanym opisie. To daje napastnikowi uprawnienia roota. Co więcej, zanim uprawnienia zostaną opuszczone, narzędzie wykonuje wyszukiwanie kont przez mechanizm Name Service Switch (NSS). Atakujący może umieścić w swojej przestrzeni nazw fałszywy plik konfiguracyjny NSS i własny moduł NSS, co zmusza program do załadowania kontrolowanego przez napastnika kodu z uprawnieniami administratora.
Które dystrybucje są zagrożone?
Według analizy Manizady podatność dotyczy dystrybucji, które domyślnie instalują pakiet cifs-utils. Należą do nich między innymi Linux Mint, CentOS, Rocky Linux, Kali Linux, AlmaLinux oraz SLES SAP. Część systemów jest podatna tylko wtedy, gdy pakiet został ręcznie doinstalowany. Badacz zaznacza, że wiele dystrybucji – takich jak Ubuntu, Fedora, CentOS, Rocky Linux, AlmaLinux, Oracle Linux, openSUSE i SLES – domyślnie blokuje ścieżkę wykonania ataku. Amazon Linux 2 KVM oraz Kali Linux w wersjach 2019.4 i 2020.4 w ogóle nie są podatne.
Warto podkreślić, że skala zagrożenia zależy od konfiguracji. W systemach, w których cifs-utils nie jest zainstalowane, luka nie stanowi bezpośredniego ryzyka. Administratorzy powinni jednak sprawdzić, czy ich dystrybucja znajduje się na liście podatnych.
Jak się zabezpieczyć?
Główne dystrybucje Linuxa wypuściły już aktualizacje jądra i pakietu cifs-utils eliminujące podatność. Priorytetem powinno być niezwłoczne zastosowanie tych łat. Do czasu aktualizacji można też rozważyć tymczasowe usunięcie pakietu cifs-utils na systemach, które go nie potrzebują. Jeśli korzystanie z CIFS jest niezbędne, warto ograniczyć dostęp do usługi tylko do zaufanych hostów.
Inżynier Manizada opublikował kod proof-of-concept (PoC), który – jak sam tłumaczy – ma pomóc obrońcom w walidacji poprawek, zabezpieczeń, mechanizmów detekcji i oceny narażenia. Nie należy interpretować tego jako zaproszenia do testów ofensywnych, ale jako narzędzie dla zespołów bezpieczeństwa do weryfikacji, czy ich systemy są rzeczywiście chronione.
Co dalej?
Podatność CIFSwitch przypomina, jak długo mogą utrzymywać się luki w kluczowych komponentach infrastruktury. Nawet jeśli system wydaje się stabilny, warto regularnie przeglądać aktualizacje bezpieczeństwa producenta dystrybucji. W przypadku Linuxa szczególnie istotne jest śledzenie biuletynów dotyczących jądra i pakietów przestrzeni użytkownika. W dłuższej perspektywie eksperci rekomendują również stosowanie mechanizmów ograniczających uprawnienia, takich jak SELinux czy AppArmor, oraz monitorowanie wywołań funkcji request_key pod kątem nietypowej aktywności.


