LoadLibrary, vrstva pro načítání Windows DLL do linuxových aplikací

Tavis Ormandy (Tavis ormandy), bezpečnostní výzkumník ve společnosti Google, který projekt vyvíjí Loadlibrary, zaměřené na portování knihoven DLL zkompilovaných pro Windows pro použití v aplikacích Linux. Projekt poskytuje knihovnu vrstev, pomocí které můžete načíst soubor DLL ve formátu PE/COFF a volat funkce v něm definované. Zavaděč PE/COFF je založen na kódu ndiswrapper. Kód projektu distribuovány pod licencí GPLv2.

LoadLibrary se stará o načtení knihovny do paměti a import existujících symbolů a poskytuje linuxové aplikaci API ve stylu dlopen. Kód zásuvného modulu lze ladit pomocí gdb, ASAN a Valgrind. Je možné upravit spustitelný kód během provádění připojením háčků a aplikací patchů (runtime patching). Podporuje zpracování výjimek a uvolnění pro C++.

Cílem projektu je zorganizovat škálovatelné a efektivní distribuované fuzzing testování DLL knihoven v prostředí založeném na Linuxu. V systému Windows není fuzzing a testování pokrytí příliš efektivní a často vyžaduje spuštění samostatné virtualizované instance systému Windows, zejména při pokusu o analýzu složitých produktů, jako je antivirový software, který zahrnuje jádro a uživatelský prostor. Pomocí LoadLibrary hledají výzkumníci Google zranitelná místa ve videokodecích, antivirových skenerech, knihovnách pro dekompresi dat, dekodérech obrázků atd.

Například s pomocí LoadLibrary jsme byli schopni portovat antivirový modul Windows Defender pro běh na Linuxu. Studie mpengine.dll, která tvoří základ programu Windows Defender, umožnila analyzovat velké množství sofistikovaných procesorů pro různé formáty, emulátory souborových systémů a překladače jazyků, které potenciálně poskytují vektory pro možný útoky.

K identifikaci byla také použita LoadLibrary vzdálená zranitelnost v antivirovém balíčku Avast. Při studiu DLL z tohoto antiviru se ukázalo, že klíčový privilegovaný proces skenování zahrnuje plnohodnotný interpret JavaScriptu, který se používá k emulaci spouštění kódu JavaScript třetích stran. Tento proces není izolovaný v prostředí sandbox, neresetuje oprávnění a analyzuje neověřená externí data ze systému souborů a zachycený síťový provoz. Protože jakákoli zranitelnost v tomto složitém a nechráněném procesu by mohla potenciálně vést ke vzdálené kompromitaci celého systému, byl vyvinut speciální shell založený na LoadLibrary avscript analyzovat zranitelnosti antivirového skeneru Avast v prostředí založeném na Linuxu.

Zdroj: opennet.ru

Přidat komentář