Ослу — ослиная смерть 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-го апреля. Особой чести разработчикам винды это не делает. |