LoadLibrary, warstwa służąca do ładowania bibliotek DLL systemu Windows do aplikacji systemu Linux

Tavis Ormandy (Tavis ormandy), badacz bezpieczeństwa w Google, który rozwija projekt LoadLibrary, którego celem jest przenoszenie bibliotek DLL skompilowanych dla systemu Windows do użytku w aplikacjach systemu Linux. Projekt udostępnia bibliotekę warstw, za pomocą której można załadować plik DLL w formacie PE/COFF i wywołać zdefiniowane w nim funkcje. Program ładujący PE/COFF jest oparty na kodzie ndiswrapper. Kod projektu dystrybuowane przez licencjonowany na licencji GPLv2.

LoadLibrary zajmuje się ładowaniem biblioteki do pamięci i importowaniem istniejących symboli, udostępniając aplikacji Linux API w stylu dlopen. Kod wtyczki można debugować za pomocą gdb, ASAN i Valgrind. Możliwe jest dostosowanie kodu wykonywalnego podczas wykonywania poprzez łączenie haków i nakładanie łatek (łatanie w czasie wykonywania). Obsługuje obsługę wyjątków i odwijanie dla C++.

Celem projektu jest zorganizowanie skalowalnych i wydajnych rozproszonych testów fuzzingowych bibliotek DLL w środowisku opartym na systemie Linux. W systemie Windows testowanie fuzzingu i pokrycia nie jest zbyt wydajne i często wymaga uruchomienia osobnej, zwirtualizowanej instancji systemu Windows, szczególnie podczas próby analizy złożonych produktów, takich jak oprogramowanie antywirusowe, obejmujących jądro i przestrzeń użytkownika. Korzystając z LoadLibrary, badacze Google szukają luk w zabezpieczeniach kodeków wideo, skanerów antywirusowych, bibliotek dekompresji danych, dekoderów obrazów itp.

Na przykład za pomocą LoadLibrary mogliśmy przenieść silnik antywirusowy Windows Defender do pracy w systemie Linux. Badanie pliku mpengine.dll, który stanowi podstawę programu Windows Defender, umożliwiło przeanalizowanie dużej liczby zaawansowanych procesorów dla różnych formatów, emulatorów systemów plików i interpreterów języków, które potencjalnie udostępniają wektory dla możliwy ataki.

Do identyfikacji wykorzystano również LoadLibrary zdalna podatność w pakiecie antywirusowym Avast. Analizując bibliotekę DLL tego programu antywirusowego, odkryto, że kluczowy uprzywilejowany proces skanowania obejmuje pełnoprawny interpreter JavaScript używany do emulacji wykonywania kodu JavaScript strony trzeciej. Proces ten nie jest izolowany w środowisku piaskownicy, nie resetuje uprawnień i analizuje niezweryfikowane dane zewnętrzne z systemu plików oraz przechwytywany ruch sieciowy. Ponieważ jakakolwiek luka w tym złożonym i niechronionym procesie może potencjalnie prowadzić do zdalnego naruszenia bezpieczeństwa całego systemu, opracowano specjalną powłokę opartą na LoadLibrary avscript do analizy luk w skanerze antywirusowym Avast w środowisku opartym na systemie Linux.

Źródło: opennet.ru

Dodaj komentarz