r   e   k   l   a   m   a
r   e   k   l   a   m   a

18-letnia luka w jądrze Windowsa pozwala malware ukryć się przed antywirusami

Strona główna AktualnościBEZPIECZEŃSTWO

Procedura PsSetLoadImageNotifyRoutine wykorzystywana jest w jądrze Windowsów do zarejestrowania dostarczonego przez sterownik wywołania zwrotnego, które następnie jest powiadamiane przy każdej operacji załadowania modułu. Powszechnie korzystają z niej programy antywirusowe do sprawdzania, które moduły zostały załadowane podczas uruchomienia. Niestety jednak ten niskopoziomowy mechanizm kernela od 18 lat zawiera błąd, pozwalający twórcom malware na łatwe oszukanie programów antywirusowych. No cóż, dla jednych błąd, dla innych niekoniecznie – Microsoft już uznał, że nie ma tu czego naprawiać.

18 lat kopiowania kodu

Omri Misgav, badacz z izraelskiej firmy enSilo, pracował ostatnio nad analizą kernela systemów Windows, i właśnie podczas tej analizy odkrył problem w PsSetLoadImageNotifyRoutine, mechanizmowi powiadomień, który od czasów Windowsa 2000 pozwala na powiadamianie programu o nowo zarejestrowanych sterownikach. Jako że pozwala on też na wykrycie załadowania obrazu PE (formatu plików uruchamialnych Windowsa) do pamięci wirtualnej, zaczęto go wykorzystywać w oprogramowaniu antywirusowym do wykrycia aktywności złośliwego oprogramowania.

Okazuje się jednak, że po zarejestrowaniu procedury powiadomień dla załadowanych obrazów PE w kernelu, wywołanie zwrotne może otrzymać niepoprawne nazwy obrazów. W opisie tego odkrycia, badacze z enSilo wyjaśniają, że o ile dla systemowych bibliotek DLL zwracane są pełne ścieżki plików i stałe wartości, to dla dynamicznie ładowanych obrazów PE ścieżki pozbawione są nazw wolumenów, a czasem kompletnie zniekształcone, mogą wskazywać nawet na inne pliki, a nawet takie, które w ogóle nie istnieją.

r   e   k   l   a   m   a

W rezultacie w wielu wypadkach system operacyjny nie zwraca producentowi oprogramowania antywirusowego prawdziwych informacji o pliku. Oznacza to, że antywirus nie może przeskanować właściwego pliku, albo skanuje coś innego niż powinien. Zachowanie takie nigdy nie zostało udokumentowane w Microsoft Developer Network, lecz jak wynika ze śledztwa izraelskich badaczy, Microsoft wiedział o tym problemie już 10 lat temu.

Wykorzystanie tego osobliwego zachowania mechanizmu kernela NT docenią twórcy szkodników typu Advanced Persistent Threat, czyli tych, które próbują pozostać w systemie niezauważone, na długi czas. Napastnik po zdobyciu przyczółka na atakowanej maszynie musi zmusić system do przejawienia wspomnianego błędu. Jest to możliwe za pomocą takich technik wstrzyknięć danych jak Process Hollowing czy AtomBombing. Odpowiednio spreparowany złośliwy plik może wówczas ukryć swoją aktywność przed antywirusem poprzez doprowadzenie do sytuacji w której PsSetLoadImageNotifyRoutine zwraca fałszywe dane o jego lokalizacji.

Jest dobrze jak jest, nie ma się czego obawiać

Na taki atak podatne są wszystkie systemy Microsoftu z jądrem NT, od czasów Windowsa 2000 – najwyraźniej przez 18 lat nikt nie ruszał tego fragmentu kodu. Dziś też Microsoft nie chce go ruszać. Omri Misgav skontaktował się z Microsoft Security Response Center, gdzie powiedziano mu, że to nie jest bug zagrażający bezpieczeństwu, i że nie ma żadnych planów naprawienia kodu kernela. Jest tak, ponieważ już wcześniej zabezpieczenia exploitowanej przez PsSetLoadImageNotifyRoutine maszyny muszą być złamane przez napastnika.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.