Masz serwer z jądrem Linux? To lepiej go załataj póki czas

dodał 21 października 2016 o 10:49 w kategorii Błędy  z tagami:
Masz serwer z jądrem Linux? To lepiej go załataj póki czas

(źródło: fastjack)

Jeśli nie chcesz, by Twój serwer padł ofiarą trywialnego ataku, lepiej zainstaluj najnowsze aktualizacje. Błąd co prawda umożliwia „tylko” podniesienie uprawnień, ale jest bardzo łatwy do wykorzystania i dotyka chyba każdej dystrybucji.

Błędy podniesienia uprawnień z reguły przyciągają mniejszą uwagę mediów, ponieważ scenariusze ich wykorzystania stają się automatycznie bardziej skomplikowane – najpierw trzeba mieć dostęp do serwera. W tym wypadku nie jest inaczej, jednak uniwersalność tego błędu powoduje, że zapewne będzie on często wykorzystywany w atakach (znaleziony został na zhakowanym serwerze), zatem warto napisać kilka słów by ostrzec administratorów.

Kto, co, gdzie, jak

Błąd o numerze CVE 2016-5195 otrzymał nazwę marketingową Dirty COW. Ma oczywiście swoją stronę internetową, logo a nawet sklepik z gadżetami, lecz niech te fakty nie przyćmią prawdziwej wagi problemu. Błąd ten ma kilka cech, które czynią go prawdopodobnie ulubionym narzędziem włamywaczy i pentesterów w najbliższych miesiącach, jeśli nie latach:

  • jest bardzo prosty w wykorzystaniu, działa zawsze,
  • jest uniwersalny, działa na wielu dystrybucjach,
  • nie zostawia śladów.

Choć daleko nam do technicznych ekspertów, to spróbujemy opisać jego działanie (tu znajdziecie profesjonalnie opisane szczegóły podatności). Problem znajduje się w sposobie, w jaki Linux obsługuje technikę kopiowania pamięci zwaną kopiowanie przy zapisie (copy on write, stąd skrót COW w nazwie błędu). Technika polega na wstrzymaniu się z kopiowaniem danych, dopóki nie zostaną one zmodyfikowane – wcześniej wykorzystywany jest wskaźnik do lokalizacji tych danych, by nie kopiować ich niepotrzebnie. Niestety błąd w kodzie jądra powoduje, że możliwa staje się tzw. sytuacja wyścigu, gdzie inny proces dokonuje zmian w obszarze pamięci zanim zostanie on skopiowany. Dzięki temu zwykły użytkownik, który teoretycznie nie ma uprawnień zapisu do chronionego obszaru pamięci, może taki dostęp uzyskać i zmodyfikować kluczowe dane, w szczególności nadając sobie uprawnienia administratora.

Prześledzenie historii kodu jądra Linux wskazuje, że błąd istniał już w roku 2007. Nie wiadomo, czy był wykorzystywany we wcześniejszych atakach. Na jego ślad trafił dopiero Phil Oester, który kilka lat temu wpadł na ciekawy pomysł i zaczął na swoich serwerach zapisywać do pliku pełną treść przychodzących pakietów w ramach protokołu HTTP. Gdy jeden z jego serwerów został zhakowany, Phil prześledził działania włamywacza, odzyskał z kopii ruchu treść exploita użytego do podniesienia uprawnień i znalazł opisywany powyżej błąd.

Warto podkreślić, że wykorzystanie błędu wymaga wcześniejszego uzyskania dostępu do atakowanego serwera. Choć zdobycie shella sprawia, że atak jest wygodniejszy do przeprowadzenia, to nie jest konieczne – wystarczy użycie dowolnego błędu np. w aplikacji WWW umożliwiającego zdalne wykonanie własnego kodu na serwerze. Ten rodzaj ataku może stać się bardzo popularny w najbliższych dniach – włamywacze, którzy wykorzystali np. błędy typu SQLi prowadzące do RCE będą mogli skorzystać ze skutecznej metody podniesienia uprawnień na zaatakowanej maszynie. Oprócz aktualizacji jądra może warto także pomyśleć o szkoleniu z bezpieczeństwa aplikacji WWW.

W sieci dostępny jest kod exploita. Możecie przetestować na swoich maszynach – podobno działa niezawodnie.