В нашем посте, посвященном усовершенствованиям ASLR в последних версиях Windows, приводилась таблица со списком уязвимостей Remote Code Execution, которые использовали атакующие для удаленной установки вредоносного кода в систему (drive-by download). Более половины из этих уязвимостей относятся к типу т. н. use-after-free (UAF). UAF можно охарактеризовать как удобный для атакующих способ передачи управления на свой код. В такой схеме легитимный исполняемый код, например, браузера Internet Explorer, должен содержать неправильную логику работы с памятью, которая заключается в том, что на каком-то этапе фрагмент кода обращается по указателю на тот блок памяти кучи, который уже был освобожден ранее.
Очевидно, что такая ошибка при работе с памятью может просто вызвать аварийное завершение браузера, поскольку произойдет обращение по недействительному указателю. Однако, в случае с эксплойтом, атакующие используют ее в своих целях таким образом, чтобы заставить уязвимый код передать управление по нужному адресу. Как правило, для этого используется heap-spray, что способствует резервированию большого количества блоков памяти по предсказуемому адресу в куче с заполнением их необходимыми злоумышленнику инструкциями. В июньском и июльском куммулятивных обновлениях для браузера Internet Explorer 11 Microsoft ввела дополнительные технологии смягчения эксплуатации в виде изолированной кучи при выделении памяти для объектов и отложенного высвобождения блоков памяти. Такой подход обезопасит код браузера, который все еще может содержать ошибки при работе с памятью, от действий эксплойтов.
Читать полностью »