Ошибка В Рекурсивной Обработке Css В Ie 6/7/8 (Cve-2010-3971).

Не так давно, а точнее в начале декабря, выяснилось информация об ошибке, обнаруженной при рекурсивной обработке CSS в разных версиях IE. Представленный PoC мог лишь крашить браузер, но ничего более значимого из него пережить не удалось до начала этой недели, когда появился Metasploit эксплуатировать с полной эксплуатацией этой уязвимости.

Оригинальный PoC выглядел так:



<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>

Ошибка заключается в повреждении памяти в парсере HTML-страниц (mshtml.dll), при обработке страниц, содержащих рекурсивные включения CSS-объекта.

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 #информационная безопасность

Вместе с данным постом часто просматривают: