Секс с IFRAME Крис Касперски ака мыщъх Хакер, номер #074, стр. 074-060-1 Как размножаются черви в Internet Explorer Время идет, а дыры в программах остаются. Количество бажных машин исчисляется миллионами - о лучшем подарке к Новому годы хакеры не могли и мечтать. Недавно в IE было найдено очередное переполнение буфера, на этот раз в теге IFRAME. Для нового бага уже появился эксплоит. Не совсем работающий, но уже растиражированный по всей Сети. Как отремонтировать его? Как переписать shell-код? Как защитить свой компьютер от атак? Источник заразы В начале ноября 2004 года в Microsoft Internet Explorer была обнаружена очередная уязвимость: переполнение буфера в плавающих фреймах (тэг IFRAME) позволяет передавать управление на shell-код и захватывать управление машиной, после чего жертву террора можно насиловать как угодно и чем угодно. Например использовать как плацдарм для дальнейших атак или спама, похищать конфиденциальную информацию, бесплатно звонить за бугор и много еще чего. Уязвимости подвержены: IE версий 5.5 и 6.0 и Opera 7.23 (другие версии не проверял). Неуязвимы: IE 5.01 SP3 или SP4, IE 5.5 SP 2, IE 5.00 на Windows 2000 без сервис-паков, IE 6 на Windows Server 2003 без сервис-паков, IE 6 на Windows XP SP 2. По умолчанию IE не запрещает выполнение плавающих фреймов в интернет и интранет-зонах. Чтобы подцепить заразу, жертве достаточно зайти на URL с агрессивным кодом внутри. С Outlook Express дело обстоит иначе: HTML-письма открываются в зоне ограниченного доверия, и тэги IFRAME по умолчанию не обрабатываются. JavaScript не может самостоятельно вызвать переполнение буфера при просмотре письма, и для активации shell-кода жертва должна взять в руки мышь и кликнуть по ядовитой ссылке. Уже появилась новая версия интернет-червя MyDoom, использующая эту технологию для своего распространения, да и новые черви не за горами, так что не теряй бдительности и не кликай по ссылкам, если не доверяешь им на 100%. Технические подробности Переполняющий код в общем случае выглядит так: <IFRAME src=file://AAAAAA name="BBBBBBxx"></IFRAME>, где AAAAAA и BBBBB - текстовые строки строго дозированной длины, набранные в UNICODE, а xx - символы, затирающие указатель на виртуальную функцию экземпляра ООП-объекта, находящуюся внутри динамической библиотеки SHDOCVW.DLL. Дизассемблерный листинг уязвимого кода приведен ниже (конкретные адреса варьируются от одной версии IE к другой): Фрагмент IE, обеспечивающий передачу управления на shell-код 7178EC02 8B 08 MOV ECX, DWORD PTR [EAX] 7178EC02 ; загружаем указатель на таблицу виртуальных функций 7178EC02 ; некоторого ООП-объекта 7178EC02 ; после переполнения в регистре EAX окажутся символы xx, 7178EC02 ; расположенные в хвосте UNICODE-строки с именем файла 7178EC02 7178EC04 68 84 7B 70 71 PUSH 71707B84 7178EC04 ; заталкиваем в стек константный указатель 7178EC04 7178EC09 50 PUSH EAX 7178EC09 ; заталкиваем в стек указатель this, 7178EC09 ; указывающий на экземпляр ООП-объекта 7178EC09 ; с таблицей виртуальных функций внутри 7178EC09 7178EC0A FF 11 CALL NEAR DWORD PTR [ECX] 7178EC0A ; вызываем виртуальную функцию по указателю ECX, |