ntdll!LdrHotPatchRoutine & DEP/ASLR bypass (MS13-063)
Вчера компания Microsoft выпустила набор security-обновлений для своих продуктов, среди которых было обновление MS13–063, которое исправляет возможность обхода таких «смягчающих» механизмов эксплуатирования как DEP & ASLR. Техника обхода этих механизмов в эксплойтах была продемонстрирована ресерчерами NSFocus Security Labs на конференции CanSecWest и VUPEN на Pwn2Own 2013. Мы уже писали про механизмы EMET v4, в котором появилась возможность противодействия к использованию метода ntdll! LdrHotPatchRoutine для загрузки кода нужной библиотеки в памяти, обходя т. о. ограничения накладываемые DEP&ASLR. LdrHotPatchRoutine используется ОС как часть «хот патчинга» (исправления компонентов без применения перезагрузки) и позволяет загружать динамические библиотеки из различных мест, включая сеть (через UNC адреса). MS13–063 вводит для ОС исправление, аналогичное по возможностям тому, что было продемонстрировано в EMET. Эксплуатирование LdrHotPatchRoutine тесно связано с обходом ASLR при использовании всем известной структуры UserSharedData (KUSER_SHARED_DATA), которая проецируется по жестко заданным адресам в режиме пользователя (0×7ffe0000) и в режиме ядра (0xffdf0000). Структура используется для быстрого доступа компонентов ОС, работающих в режиме пользователя и ядра к некоторым разделяемым служебным данным (информация отладки, таймера, версия ОС и др.). При использовании некоторых указателей на функции в UserSharedData атакующий может быстро выяснить адрес необходимой функции. В частности, 64-битные версии Windows до Windows 8 хранили в этой структуре указатели на функции 32-битной версии ntdll, которую ОС использует для WoW64.Читать дальше →