Tavis Ormandy (), badacz bezpieczeństwa z Google, rozwija projekt , który ma na celu portowanie zebranych dla systemu Windows bibliotek DLL do ich użycia w aplikacjach dla systemu Linux. Projekt obejmuje bibliotekę pośrednią, dzięki której można załadować plik DLL w formacie PE/COFF i wywołać określone w nim funkcje. Ładowarka PE/COFF opiera się na kodzie . Kod projektu na licencji GPLv2.
LoadLibrary przejmuje funkcje ładowania biblioteki do pamięci i importowania dostępnych symboli, zapewniając aplikacji Linux API w stylu dlopen. Podłączony kod może być debugowany za pomocą gdb, ASAN i Valgrind. Przewidziano możliwość modyfikacji wykonywanego kodu w czasie rzeczywistym poprzez podłączanie haczyków i nakładanie poprawek (runtime patching). Obsługiwane są obsługa i rozwijanie (unwinding) wyjątków dla C++.
Celem projektu jest organizacja skalowalnego i efektywnego rozproszonego testowania fuzzingowego bibliotek DLL w środowisku opartym na Linux. W systemie Windows przeprowadzanie testów fuzzingowych i pokrywania nie pozwala na osiągnięcie należytej efektywności i często wymaga uruchomienia oddzielnego zwirtualizowanego egzemplarza systemu Windows, szczególnie przy próbie analizy złożonych produktów, takich jak oprogramowanie antywirusowe, zajmujące się pracą na poziomie jądra i przestrzeni użytkownika. Dzięki LoadLibrary badacze z Google prowadzą poszukiwania luk w kodach wideo, skanerach antywirusowych, bibliotekach rozpakowywania danych, dekoderach obrazów itp.
Na przykład dzięki LoadLibrary udało się zaportować silnik antywirusowy Windows Defender do uruchomienia w Linux. Badanie mpengine.dll, będącego rdzeniem Windows Defender, umożliwiło analizę dużej liczby złożonych procesorów różnych formatów, emulatorów FS i interpreterów języków, potencjalnie dostarczających wektory do .
LoadLibrary był również używany do identyfikacji w pakiecie antywirusowym Avast. Podczas badania DLL tego antywirusa zidentyfikowano, że kluczowy proces skanowania z przywilejami obejmuje pełnoprawny interpreter JavaScript, który jest używany do emulacji wykonywania zewnętrznego kodu JavaScript. Proces ten nie jest izolowany w środowisku sandbox, nie obniża przywilejów i analizuje niezweryfikowane zewnętrzne dane z systemu plików oraz przechwyconego ruchu sieciowego. Ponieważ każda luka w tym złożonym i niechronionym procesie może potencjalnie prowadzić do zdalnej kompromentacji całego systemu, na bazie LoadLibrary stworzono specjalną nakładkę. do analizy luk w skanerze antywirusowym Avast w środowisku opartym na Linuxie.
Źródło: opennet.ru
