heise online

Wiadomości IT, artykuły i fora heise online

17 kwietnia 2009, 14:59

Nowa technika rootkitowa dla GNU/Linuksa

Linuksowy ekspert Anthony Lineberry zamierza niebawem opublikować własną bibliotekę libmemrk. Wspomniał o tym podczas odczytu "Alice in User-Land: Hijacking the Linux Kernel via /dev/mem", który wygłosił na odbywającej się właśnie w Amsterdamie konferencji bezpieczeństwa Black Hat. Libmemrk ma działać w środowiskach 32- i 64-bitowych.

Narzędzie libmemrk otworzy twórcom rootkitów nowe możliwości ukrywania plików i procesów, a także wpływania na ruch sieciowy. Sztuczka polega na wykorzystaniu urządzeniowego sterownika /dev/mem do zapisania w pamięci roboczej dowolnego kodu z poziomu użytkownika bez konieczności posiadania szerszych uprawnień. Interfejs /dev/mem pozwala na korzystanie z pamięci adresowanej fizycznie, a używają go między innymi serwer X i program DOSEmu. Poza tym przemyt rootkitów za pośrednictwem /dev/mem jest podobno trudniejszy do wykrycia niż w przypadku klasycznej metody z wykorzystaniem modułów jądra (Loadable Kernel Modules, LKM).

Zaprezentowana biblioteka ma też uwolnić autorów rootkitów od żmudnych czynności związanych z konwersją wirtualnych adresów pamięci na fizyczne oraz z wyszukiwaniem sektorów podatnych na ataki. Dopiero po znalezieniu odpowiednich – z reguły używanych przez jądro – obszarów pamięci napastnik może przystąpić do nadpisywania istniejących komórek systemu, zastępując je własnym kodem. Właściwa zawartość, a więc ta zapisywana przez kernel, zostaje wówczas umieszczona w specjalnym buforze.

Zagrożenie

Poszczególne kroki umożliwiające przeprowadzenie udanego ataku oraz czynności spoczywające na narzędziu libmemrk zostały opisane przez Lineberry'ego w dokumencie "Malicious Code Injection via /dev/mem"PDF. Ekspert zaznacza jednak, że taki atak nie powiedzie się w środowiskach wirtualnych, ponieważ hiperwizor zachowuje się inaczej niż niezwirtualizowany sprzęt. Lineberry zastrzega też, że libmemrk nie zwalnia programisty od konieczności ręcznego przygotowania całości ataku w Assemblerze. W przyszłości planowana jest możliwość wykorzystania w tym celu narzędzia libcc, aby przynajmniej zminimalizować to ograniczenie.

Ochrona

Równocześnie specjalista podał kilka wskazówek pozwalających użytkownikom GNU/Linuksa uchronić się przed tego typu rootkitami. Jego zdaniem wystarczy odpowiednia modyfikacja sterownika pamięci – chodzi o to, aby uniemożliwiał on wskaźnikowi zapisu/odczytu lseek przeszukiwanie sektorów o pojemności przekraczającej 16 kilobajtów. Pod tym względem bezpieczne fabrycznie są aktualne wersje Red Hata i Fedory, których jądro zawiera już modyfikacje wchodzące w skład pakietu SELinux.

Według Lineberry'ego odpowiednie poprawki wprowadzono już także do wersji 2.6.26 głównej linii rozwojowej kernela. Chodzi o dwie nowe funkcje: range_is_allowed() i devmem_is_allowed(). Niemniej jednak ochrona ta nie zadziała, jeśli równocześnie nie jest ustawiona flaga STRICT_DEVMEM; w takiej sytuacji devmem_is_allowed() zawsze zwraca pozytywny wynik.

Ekspert przypomina, że po skompilowaniu jądra funkcja STRICT_DEVMEM jest domyślnie wyłączona. Lineberry nie zdradził, kiedy będzie można pobrać bibliotekę libmemrk. Poinformował tylko, że jest obecnie w trakcie usuwania ostatnich niedociągnięć.

Rodowód

Warto tu zaznaczyć, że technika z wykorzystaniem interfejsu /dev/mem nie jest nowa. W 2001 roku magazyn "Phrack" opublikował artykuł zatytułowany "Linux on-the-fly kernel patching without LKM", w którym opisano podobną metodę z /dev/kmem/. Już wtedy autorzy publikacji zastanawiali się nad wykorzystaniem pliku specjalnego pozwalającego na dostęp do pamięci, zrezygnowali jednak z odpowiednich testów.

(pwi)

  • Podziel się
  • Wykop.pl
  • StumbleUpon
  • del.icio.us
  • OSnews.pl