Хакер Kingcope памятен многим по рождественской акции, когда он опубликовал целую пачку эксплойтов для MySQL и не только. Сейчас Kingcope он снова дал знать о себе и опубликовал описание простого и эффективного способа обхода защиты ASLR в Windows 7 и Windows 8.
Защита памяти путём рандомизации адресного пространства (ASLR, Address Space Layout Randomization) предполагает изменение случайным образом адресов в памяти образа исполняемого файла, подгружаемых библиотек, кучи и стека. За счёт этого затрудняется выполнение эксплойтов. Даже если при помощи переполнения буфера или другим методом атакующий получит возможность передать управление по произвольному адресу, ему нужно будет угадать, куда же он может поместить шелл-код.
Метод обхода ASLR сам его автор описывает немецкой пословицей “Was nicht passt wird passend gemacht”, что в переводе означает «Если не влазит, бери молоток побольше». Kingcope демонстрирует, что если истощить адресное пространство в системе до минимума, и тогда система загружает DLL по известному адресу.
Истощение памяти происходит просто. Скрипт занимает память случайными байтами до тех пор, пока не получает сообщение об ошибке, после этого он освобождает немножко памяти. Неприятный побочный эффект применения данного эксплойта — система начинает сильно тормозить и плохо реагировать не действия пользователя. Другими словами, пользователь может заподозрить неладное.
Эту технику можно использовать для выполнения вредоносного кода, доставленного через браузер. При этом автор подчёркивает, что метод работает не очень надёжно и нуждается в улучшении, хотя довольно часто и помогает обойти ASLR-защиту Windows 7 и, ещё чаще, ASLR-защиту Windows 8.
Kingcope также опубликовал код PoC, который предлагает проверить всем желающим. Этот конкретный код работает в 32-битной системе через браузер Internet Explorer 8 или Internet Explorer 9 (с небольшими модификациями), используя недавно закрытую уязвимость CVE-2012-4969 в браузере IE. Так что если вы будете проверять его, нужнот откатить патч, закрывающий эту уязвимость.
Обход ASLR в Windows возможен и через запуск кода с использованием других уязвимостей, в том числе в других браузерах, а также просто из клиентского приложения Windows. Автор предполагает, что примерно таким методом можно обходить рандомизацию адресного пространства даже в других операционных системах, а не только в Windows. Но это предположение ещё никто не проверял.