Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #89, МАЙ 2006 г.

Ослу — ослиная смерть

Sashiks

Хакер, номер #089, стр. 089-076-1


Подробности новой сокрушительной ошибки. Производство MS!

В конце марта этого года новость о критической уязвимости в Internet Explorer 6.0 буквально облетела все известнейшие багтраки. И это неудивительно, ведь, судя по описаниям, свеженайденный баг имел большие перспективы для хакеров - под прицелом оказались миллионы машин. В число потенциальных жертв также попадали машины с пропатченными Windows XP SP2. Эта ошибка стала достойным продолжателем нашумевшего WMF-bug. Пройти мимо нее было бы кощунством.

[предыстория]

22 марта 2006 года группой ComputerTerorrism (www.computerterrorism.com) из Великобритании был описан Advisory CT22-03-2006, в котором шла речь о серьезной проблеме в браузере MS IE 6.0 всех сборок и бета-версии 7. Стоит заметить, что, по заявлениям СERT, первым уязвимость обнаружил Андреас Санблад (Andreas Sandblad) из Secunia Research. В довольно-таки скудном техническом описании указывался основной источник зла - функция createTextRange(), которая в некоторых условиях могла привести к неправильному разыменовыванию таблицы указателей. Посмотрим ошибочный код поближе:

0x7D53C15D MOV ECX, DWORD PTR DS:[EDI]

..

0x7D53C166 CALL DWORD PTR [ECX]

Таким образом, из-за плохо продуманной передачи данных внутри браузера, можно сформировать некорректную ссылку. Как следствие, регистр ECX укажет на несуществующий участок кода, что спровоцирует браузер вылететь в трубу. Тем не менее, по утверждениям экспертов из ComputerTerorrism, если указатель будет показывать в нужную нам сторону, то вполне вероятно поэксплуатировать приложение, передав управление расположенному в памяти по адресу ECX шелл-коду. В качестве доказательства приводился РоС-код, наглядно демонстрирующий DoS IE, который расположен по этому адресу: www.computerterrorism.com/research/ie/poc.htm. Неплохо, правда? Подробнее почитать про ошибочную функцию ты сможешь по адресу: http://home.ural.ru/~psynet/TextRange.html

[развитие уязвимости]

Сразу же после опубликования информации о дыре вышло несколько 0day-сплоитов, различных сборок. Первым человеком, который разработал концепцию сплоита, был хакер с ником Skylined. Самой нашумевшей считается версия отмычки, написанная нашим соотечественником DarkEagle, которую можно стянуть с Милворма: www.milw0rm.com/exploits/1606. Код не слишком сложный, чтобы в нем разобраться. Я думаю, если немного над ним посидишь со справочником по JS, то белые пятна вскоре исчезнут. Вообще, у многих людей сплоит не выдавал желаемого результата (вшитый шелл-код должен был запускать виндовый калькулятор), вместо этого браузер обжирал жуткий кусок памяти и не по-детски грузил своп. Ходят слухи, что, возможно, DEP защищает от подобного рода уязвимости, но сейчас я не могу сказать тебе так ли это. Самый примитивный эксплойт, который приводит к аварийному завершению работы браузера, выглядит примерно так:

<input type="checkbox" id='c'>

<script>

r=document.getElementById("c");

a=r.createTextRange();

</script>

После появления 0day-сплоита решения по ликвидации уязвимости от самой MS не было. Единственное, что посоветовали специалисты из Майкрософт, - это запретить выполнение активного содержимого. Впрочем, багфиксы последовали от сторонних производителей, таких как известная iDefence, determina и так далее. Насколько я знаю, фиксы представляли собой обычные DLL, которые подгружались к потенциально уязвимым приложения IE, Outlook (аутглюк, между прочим, автоматически выполнял злобный скрипт, который он получал в письме, поэтому реагировал на него аналогично ослу). Тем не менее, не прошло и месяца, как программисты из Микрософт выпустили официальную заплатку для винды. Теперь она доступна по адресу: www.microsoft.com/technet/security/Bulletin/MS06-013.mspx. Замечу, что опубликован бюллетень был только 11-го апреля. Особой чести разработчикам винды это не делает.

Содержание  Вперед на стр. 089-076-2