В EMET обнаружена уязвимость
Специалисты компании FireEye обнаружили серьезную недоработку безопасности в инструменте EMET [1,2,3,4,5,6,7], которая позволяет достаточно просто отключить его механизмы защиты процессов с использованием его же встроенных функций. Уязвимость присутствует в предыдущих версиях EMET, т. е. в версиях до актуальной 5.5. Пользователям этих версий рекомендуется обновить EMET до последней версии.
Сам EMET поддерживает внутренний механизм снятия перехватов с API-функций системных библиотек в защищаемых процессах. Эта функция применяется в том случае, когда нужно оперативно отключить защиту процесса, за реализацию которой отвечает динамическая библиотека emet.dll. Полное отключение защиты реализуется обработчиком DllMain с кодом выгрузки DLL_PROCESS_DETACH. В силу того, что emet.dll не перехватывает функцию kernel32! GetModuleHandleW и не контролирует ее поведение, шелл-коду достаточно вызвать GetModuleHandleW для получения адреса загрузки DLL в памяти и вызвать DllMain, передав функции это значение и константу выгрузки.
По сути, для эксплуатации уязвимости достаточно следующего вызова.
BOOL WINAPI DllMain (GetModuleHandleW («EMET.dll»), DLL_PROCESS_DETACH, NULL);
Функция DllMain является точкой входа в библиотеку и как любая точка входа DLL обрабатывает различные события при загрузке ее в процесс и выгрузке из нее. Первым аргументом ей передается базовый адрес загрузки библиотеки, второй представляет из себя событие, а третий не используется.
В качестве демонстрации уязвимости, специалисты FireEye взяли устаревший RCE-эксплойт для уязвимости CVE-2012–1876 и добавили в него шелл-код для отключения защиты процесса с использованием вышеупомянутого вызова. Для обхода DEP эксплойт использует приемы ROP. После отключения EMET, эксплойт может спокойно исполнять свои функции.
US-CERT is aware of a vulnerability in Microsoft Enhanced Mitigation Experience Toolkit (EMET) versions prior to 5.5. Exploitation of this vulnerability may allow a remote attacker to bypass or disable EMET to take control of an affected system.
US-CERT recommends users and administrators visit the Microsoft Security TechCenter (link is external) and upgrade to EMET version 5.5. For additional information, please review the FireEye threat research blog (link is external)
www.us-cert.gov/ncas/current-activity/2016/02/23/Microsoft-Releases-Update-EMET