LoadLibrary, прошарок для завантаження Windows DLL в Linux-програми

Тевіс Орманді (Тавіс Орманді), дослідник безпеки з Google, розвиває проект LoadLibrary, орієнтований на портування зібраних для Windows DLL-бібліотек для їх використання в додатках для Linux. Проектом надається бібліотека-прошарка, за допомогою якої можна завантажити DLL-файл у форматі PE/COFF і викликати певні функції. Завантажувач PE/COFF заснований на коді розгортка. Код проекту поширюється ліцензія 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

Додати коментар або відгук