четверг, 21 июня 2012 г.

JS/Exploit.CVE-2012-1889: тихий 0-day

Не успела MS отрапортовать об успешно закрытых 13-ти уязвимостях в MS12-037, как Google наводит панику с очередной уязвимостью нулевого дня (CVE2012-1889) во всей линейке IE. А к тому же уязвимость еще проявляется в MS Office 2003/2007 и вполне пригодна для целенаправленных атак. Cпустя несколько дней появляется публичный эксплойт в составе проекта Metasploit.

Собственно уязвимость кроется в Microsoft XML Core Services. Происходит повреждение памяти при обращении к не инициализированному участку с несуществующим XML Node (посредством вызова метода get_definition()), что в итоге может привести к удаленному выполнению кода. Простейший код приводящий к IE к аварийному завершению выглядит следующим образом:


Этот код пытается обратиться к  не инициализированному объекту в памяти, но ссылка на этот регион памяти все же создается, что собственно приводит к потенциальной возможности выполнения кода в функции  _dispatchImpl :: InvokeHelper().





Полный трейс всех стековых фреймов в упавшем IE, выглядит следующим образом:


При отладке в IDA Pro хорошо заметен момент на стеке, когда происходит обработка объекта XML Node:


Собственно, если злоумышленник продолжит свои намерения в виде heap-spray, то у него есть возможность передать управление на шелл-код:


Приведенный выше анализ был основан на исследовании публичных эксплойтов, но сегодня мною был замечен анализ интересного боевого эксплойта. В этом эксплойте используется многоуровневая тактика, когда эксплуатируется уязвимость через JS, а heap-spray делается в процессе обработки SWF-файла.

У читателя может возникнуть закономерный вопрос: почему в заголовке присутствует фраза "тихий 0-day"? А все потому, что MS присвоила критический статус уязвимости, уже существует боевой публичный эксплойт и примеры реальных атак, но патч еще ждать как минимум несколько недель.

Конечно на данный момент существует временное решение в виде патча Fix it, но главный вопрос, а сколько людей не имеющих отношения к ИБ реально его поставило, а сколько знает о его существовании в принципе? Пока же мы имеем хорошо описанный в публичных источниках 0-day, практически готовый для использования в реальных атаках.