Не так давно, а точнее в начале декабря, выяснилось информация об ошибке, обнаруженной при рекурсивной обработке CSS в разных версиях IE. Представленный PoC мог лишь крашить браузер, но ничего более значимого из него пережить не удалось до начала этой недели, когда появился Metasploit эксплуатировать с полной эксплуатацией этой уязвимости.
Оригинальный PoC выглядел так:
Ошибка заключается в повреждении памяти в парсере HTML-страниц (mshtml.dll), при обработке страниц, содержащих рекурсивные включения CSS-объекта.<code> <div style="position: absolute; top: -999px;left: -999px;"> <link href="css.css" rel="stylesheet" type="text/css" /> </code> <code of css.css> *{ color:red; } @import url("css.css"); @import url("css.css"); @import url("css.css"); @import url("css.css"); </code>
CStyleSheet::Уведомить удаляется и эта область памяти в дальнейшем может быть использована для передачи управления произвольному коду.
mshtml!CSharedStyleSheet::Notify:
3ced63a5 8bff mov edi,edi
3ced63a7 55 push ebp
3ced63a8 8bec mov ebp,esp
3ced63aa 51 push ecx
3ced63ab 56 push esi
3ced63ac 8bb1d0000000 mov esi,dword ptr [ecx+0D0h] ; esi = 0x14
3ced63b2 57 push edi
3ced63b3 8bb9d8000000 mov edi,dword ptr [ecx+0D8h] ; pointer to array of CStyleSheet objects
3ced63b9 33c0 xor eax,eax
3ced63bb c1ee02 shr esi,2 ; esi = 0x5
В принципе, ничего особенно интересного в этой уязвимости нет, но реализация ее эксплуатации ребятами из Metasploit действительно заслуживает внимания.
Интересно, что помимо стандартного heap-spray использовалась техника ROP (возвратно-ориентированное программирование) через .
NET, что довольно нетипично.
Точнее, использовалась функция загрузки mscorie.dll из .
NET Framework 2.0, которая компилировалась без флага и всегда загружалась по одному и тому же базовому адресу (0x63f00000).
Эта недосмотр со стороны разработчиков позволяет использовать методы ROP для вызова системных функций из шеллкода.
Пример гаджета поворота стека для ROP: mscorie!_chkstk+0x1b:
63f0575b 94 xchg eax,esp
63f0575c 8b00 mov eax,dword ptr [eax]
63f0575e 890424 mov dword ptr [esp],eax
63f05761 c3 ret
Microsoft выпустила вчера Консультации по безопасности 2488013 по теме и судя по всему уязвимость будет закрыта в следующей партии обновлений.
В то время как граждане из MS рекомендовать использовать ЭМЕТ (Инструментарий Enhanced Mitigation Experience Toolkit) для противодействия обходу ASLR через вектор ROP, описанный выше.
Теги: #0-day #эксплойт #CVE-2010-3971 #CSS #Internet Explorer #microsoft #информационная безопасность
-
Html5 Vs Flash…Чье Лучшее Еще Не Ответить!
19 Oct, 24 -
Эво, Часть 2 - О Скрещивании
19 Oct, 24 -
«Плюсы»: Система Управления Привычками
19 Oct, 24 -
Упаковка, Сжатие И Защита Сборок
19 Oct, 24