LoadLibrary, прослойка за зареждане на Windows DLL в Linux-приложения

Тэвис Орманди (Tavis Ormandy), изследователь по сигурността в Google, развива проект LoadLibrary, насочен към портироване на събрани за Windows DLL-библиотеки за използване в приложения за Linux. Проектът предлага библиотека-прослойка, чрез която може да се зареди DLL-файл във формат PE/COFF и да се извикат определени в него функции. Зареждачът PE/COFF е основан на кода ndiswrapper. Кодът на проекта разпространява под лицензия GPLv2.

LoadLibrary поема функциите за зареждане на библиотеката в паметта и импортиране на наличните символи, предоставяйки на Linux-приложението API в стил dlopen. Включеният код може да се отстранява с помощта на gdb, ASAN и Valgrind. Предвидена е възможност за корекция на изпълнявания код по време на работа чрез свързване на хукове и налагане на патчове (runtime patching). Поддържа се обработка и разгъване на изключенията (unwinding) за C++.

Целта на проекта е организирането на мащабируемо и ефективно разпределено fuzzing-тестиране на DLL-библиотеки в среда, базирана на Linux. В Windows провеждането на fuzzing и coverage-тестиране не позволява да се постигне необходимата ефективност и често изисква стартиране на отделен виртуализиран екземпляр на Windows, особено при опити за анализ на сложни продукти, като антивирусен софтуер, обхващащи работата на ниво ядро и потребителско пространство. С помощта на LoadLibrary изследователите от Google търсят уязвимости в видеокодеци, антивирусни скенери, библиотеки за разопаковане на данни, декодери на изображения и др.

Например, чрез LoadLibrary е успяло да се портне за стартиране в Linux антивирусният модул Windows Defender. Изследването на mpengine.dll, който е основата на Windows Defender, позволи анализ на голям брой сложни обработчици на различни формати, емулятори на файлови системи и интерпретатори на езици, потенциално предоставящи вектори за на възможните на атаки.

LoadLibrary също е бил използван при откритие на отдалечена уязвимост в антивирусния пакет Avast. При изследването на DLL на този антивирус беше установено, че ключовият привилегирован процес на сканиране включва пълен интерпретатор на JavaScript, използван за емулиране на изпълнението на външен JavaScript код. Този процес не е изолиран в sandbox среда, не намалява привилегиите и извършва анализ на непроверени външни данни от файловата система и прихванатия мрежови трафик. Поради факта, че всяка уязвимост в този сложен и незащитен процес потенциално може да доведе до отдалечена компрометация на цялата система, на базата на LoadLibrary бе разработена специална обвивка. avscript за анализ на уязвимости в антивирусния скенер Avast в среда на базата Linux.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster