LoadLibrary, một lớp để tải Windows DLL vào các ứng dụng Linux

Тэвис Орманди (Tavis ormandy), исследователь безопасности из Google, развивает проект tải thư viện, нацеленный на портирование собранных для Windows DLL-библиотек для их использования в приложениях для Linux. Проектом предоставляется библиотека-прослойка, при помощи которой можно загрузить DLL-файл в формате PE/COFF и вызвать определённые в нём функции. Загрузчик PE/COFF основан на коде trình bao bọc. Код проекта phân phối bởi được cấp phép theo 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, дало возможность проанализировать большое число усложнённых обработчиков различных форматов, эмуляторов ФС и интерпретаторов языков, потенциально предоставляющих векторы для khả thi các cuộc tấn công.

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

Nguồn: opennet.ru

Thêm một lời nhận xét