LoadLibrary, a Windows DLL-ek Linux alkalmazásokba való betöltésére szolgáló réteg

Tavis Ormandy (Tavis ormandy), a Google biztonsági kutatója, aki a projektet fejleszti LoadLibrary, amelynek célja a Windows rendszerre fordított DLL-ek portolása Linux alkalmazásokhoz. A projekt egy rétegkönyvtárat biztosít, amellyel PE/COFF formátumban tölthet be egy DLL fájlt, és meghívhatja az abban definiált függvényeket. A PE/COFF rendszerbetöltő kódon alapul ndiburkoló. Projekt kód forgalmazza GPLv2 licenccel.

A LoadLibrary gondoskodik a könyvtár memóriabetöltéséről és a meglévő szimbólumok importálásáról, biztosítva a Linux alkalmazást egy dlopen stílusú API-val. A beépülő kódot a gdb, az ASAN és a Valgrind segítségével lehet hibakeresni. Lehetőség van a futtatható kód beállítására végrehajtás közben hookok csatlakoztatásával és javítások alkalmazásával (futásidejű javítás). Támogatja a C++ kivételkezelését és feloldását.

A projekt célja a DLL könyvtárak méretezhető és hatékony elosztott fuzzing tesztelésének megszervezése Linux alapú környezetben. Windows rendszeren a fuzzing és a lefedettség tesztelése nem túl hatékony, és gyakran a Windows különálló virtualizált példányának futtatását igényli, különösen akkor, ha olyan összetett termékeket próbálunk elemezni, mint például a kernelt és a felhasználói területet átfogó víruskereső szoftverek. A LoadLibrary segítségével a Google kutatói sebezhetőségeket keresnek videokodekekben, víruskeresőkben, adatkicsomagoló könyvtárakban, képdekódolókban stb.

Például a LoadLibrary segítségével át tudtuk portolni a Windows Defender víruskereső motorját, hogy Linuxon futhasson. A Windows Defender alapját képező mpengine.dll tanulmányozása lehetővé tette számos kifinomult processzor, különféle formátumokhoz, fájlrendszer-emulátorok és nyelvi tolmácsok elemzését, amelyek potenciálisan vektorokat biztosítanak lehetséges támadások.

Az azonosításhoz a LoadLibrary-t is használták távoli sebezhetőség az Avast víruskereső csomagban. Az antivírus DLL-jének tanulmányozása során kiderült, hogy a kulcsfontosságú privilegizált szkennelési folyamat egy teljes értékű JavaScript értelmezőt tartalmaz, amely harmadik fél JavaScript-kódjának végrehajtását emulálja. Ez a folyamat nem izolált homokozó környezetben, nem állítja vissza a jogosultságokat, és elemzi a fájlrendszer nem ellenőrzött külső adatait és az elfogott hálózati forgalmat. Mivel ennek az összetett és nem védett folyamatnak a sebezhetősége potenciálisan a teljes rendszer távoli feltöréséhez vezethet, a LoadLibrary alapján egy speciális shellt fejlesztettek ki. avscript az Avast víruskereső sebezhetőségeinek elemzésére Linux alapú környezetben.

Forrás: opennet.ru

Hozzászólás