28 мая 2008 г.

Латание дыр

Совсем недавно была зафиксирована атака на пользователей вконтакта (подробности реализации червя). Вникнув в суть произошедшего начинаешь удивляться, почему такая явная дыра не была давно закрыта производителями отдельных браузеров. А точнее, зачем эта особенность (возможность неявно запустить исполняемый файл, нажав на картинку) была реализована.

Кто-то может сказать, что он не пользуется этой социальной сетью, поэтому беда ему не грозила, но ошибётся - такую ссылку он мог получить и другим способом: электронной почтой, аськой, в сообщении любого форума и так далее. Вообще говоря, это работающая уязвимость, поэтому расслабляться нельзя.

Другой скажет, что у него есть антивирус, но и это не будет панацеей. Антивирус хорошо противостоит известным вирусам, а здесь мы имеем дело с новым паразитом, воспользовавшимся старой уязвимостью.

Всего месяц назад аналогичным вопросом задавался Леонид Каганов - очень рекомендую его текст (коротко, ярко и понятно) и приведённый им пример. Достаточно один раз зайти туда браузером Internet Explorer, чтобы навсегда перестать верить разговорам о его безопасности. Пытливым умам рекомендую подробное описание этой древней проблемы (которая так и не была закрыта в IE7!).

Кстати, поделюсь интересным наблюдением: статистики браузеров по этому блогу и русскому сегменту интернета очень различаются - если в рунете на долю IE приходится около 60-65%, то здесь она колеблется в районе 25-30% (Firefox'у достаётся 40-45%, а Opere - 25%). Полагаю, это говорит о специфике аудитории :) И, видимо, это объясняет, почему одной из самых популярных заметок блога стало руководство по залатыванию другой серьёзной уязвимости - автозапуска вирусов на USB-носителях. Обе проблемы имеют прямое отношение к безопасности, появились из-за расслабленности или нежелания вникать в проблемы разработчиков Microsoft и закрываются за несколько минут, если о них знать. И это тот случай, когда лучше потратить чуть-чуть сил на перестраховку, потому что последствия разведения вирусов на своём компьютере могут быть очень серьёзны (тот же червь Rovud, с которого мы сегодня начали, удаляет все файлы с компьютера 25-го числа каждого месяца - на восстановление после такого удара уйдёт гораздо больше сил).

10 комментариев:

  1. Анонимный28.05.2008, 15:46

    В каком-то смысле создатели "публичных" вирусов - молодцы, потому что обращают внимание на существующие дыры, и в конце концов их закрывают.

    Гораздо хуже то, что существует масса непопулярных, но опасных уязвимостей, которые вполне могут использоваться втихаря для контроля над компьютером, кражей паролей, кредиток, и т.п.

    ОтветитьУдалить
  2. Не понял. Илья, это очередной тест ничего не принимать на веру? Мой IE7 7.0.05730.13 вполне справился с той картинкой, на которую ссылается Леонид Коганов (http://p-userpic.livejournal.com/73887779/15402874). Ничего кроме черной точки я не увидел.
    Внутренности png действительно интересные :)

    ОтветитьУдалить
  3. Кстати, Алексей, да, не каждый IE7 боится этой реализации этой уязвимости. На странице http://lleo.aha.ru/test/ie/logbro.htm собирается лог браузеров, попавшихся в ловушку - там хватает IE7. Я тестировал на IE6 (нет IE7 под рукой) - ёжики бегали. В комментариях у Каганова были записи от пользователей IE7, что проблема есть (были и обратные утверждения). Это значит, что проблема бывает, но не всегда (не при любых настройках/не с каждым сочетанием версий и т.д.) И пока внятно не сформулировано, что надо сделать с IE7, чтобы этой дыры заведомо не было.

    ОтветитьУдалить
  4. >А точнее, зачем эта особенность (возможность неявно запустить исполняемый файл, нажав на картинку) была реализована.

    Почему вы думаете, что эта особенность была реализована? Я не знаю как работает этот deti.jpg (в той статье нет достаточных технических подробностей), но, скорее всего, это buffer overrun.

    ОтветитьУдалить
  5. Сергей, и Вам спасибо за интересные вопросы. Про устройство того deti.jpg точно не знаю, но выглядит так, как будто сервер отдавал http-заголовки, означающие для IE, что это не картинка, а поэтому это надо попробовать исполнить (как я понимаю, "application/octet-stream"). Есть, например, такое свидетельство: http://www.ciac.org/ciac/bulletins/m-027.shtml - полагаю, есть много таких уязвимостей.
    Признаю, я не специалист в этих вопросах, хочу лишь сказать, что меня в windows давно эта "смышлёность" раздражает - он исполняет почти любой файл, не глядя на расширение (можно переименовать .exe в .bat, .cmd, .pif, .lnk, хотя эта фича нужна только для функционирования вирусов!). Про червь Rovud деталей не знаю, однако других вирусов, использующих такую способность "запускать всё подрят" хватает. И именно об этом речь.

    Кстати, про buffer overrun, это тоже можно избежать, если сделать нормальный код с достаточным количеством проверок. Согласитесь, разобрать png-файл - не такая сверхсложная задача, что её невозможно сделать надёжно.

    ОтветитьУдалить
  6. Анонимный29.05.2008, 12:43

    У меня этот вирус сработал на последней Опере, хотя в ней по идее нет прикола с запуском исполняемых файлов из-под картинок. И запущеный сразу после перехода по ссылкам Аваст ничего не нашел, вирус-то новый. Так умер неделю назад с огромным трудом поставленый на новом ноуте WinXP.
    Так что от всего застраховаться нельзя, даже если знаешь что делаешь.

    ОтветитьУдалить
  7. Анонимный29.05.2008, 17:11

    Мда. Совет всем кто боится вирусов - переходите на никс (сорри за банальщину, но ведь действительно смешно)

    ОтветитьУдалить
  8. Уважаемый аноним, похоже там всё ещё проще: судя по написанному в сети, получив запрос к файлу deti.jpg, сервер злоумышленника отдавал 301-ый или 302-ой редирект на файл deti.scr (как мы знаем, это исполняемый файл). Соответственно, опера его тоже благополучно скачивала и запускала.

    ОтветитьУдалить
  9. Исполнять .exe, .bat, .cmd, .pif, .lnk, .scr можно, они для того и предназначены. Браузеры с настройками по умолчанию всегда спрашивают подтверждения пользователя (видел в IE и FireFox). Если пользователь согласился с запуском, то запускать просто необходимо. То, что пользователь может что-то сделать, ещё не означет дыру в защите.

    Мой поинт в следующем. Из написанного вами складывается картина: глупые разработчики (вероятно, с привычкой не думать, ага) реализовали возможность для легкого распространения вирусов. Этого не было. И они не глупые, а, напротив, довольно вдумчивые ребята.

    ОтветитьУдалить
  10. Сергей, Ваша позиция понятна. Конечно, я не собирался обвинять всех разработчиков в глупости, поэтому приношу извинения всем, кого случайно обидел.

    Я только хочу разобраться, зачем оставляются некоторые очевидные дыры.

    Например, давайте разберёмся, зачем надо исполнять файлы с расширениями bat, cmd, pif и lnk? Именно исполнять (как исполняемые файлы), а не интерпретировать (как должно поступать с bat и cmd) и не вытаскивать путь к программе и дополнительные настройки (как надо делать с pif и lnk). Как я вижу, это нужно только вирусам (потому что пользователь уже знает, что в .exe и .com может быть вирус, а .pif и .lnk ещё не боится). Можно ли придумать логичную причину для исполнения таких файлов? (чтобы пользователь, случайно переименовавший notepad.exe в notepad.pif не пострадал?)

    Другой пример: зачем в visual basic'е была (есть ли сейчас - не знаю) функция, рассылающая данную строку на _все_ адреса из записной книги пользователя? Это же нужно (и использовалось) только для одной цели - чтобы разослать вирус одной командой! Других причин вызывать такую функцию я не знаю. Я не говорю, что разработчики VB специально добавили эту функцию для вирусописателей. Склоее всего, они просто не вникли, кому делают подарок. (Признаю, что и без этой функции проблем у вирусописателей не было бы - всегда можно пробежать циклом по записной книжке, отправляя письма одно за другим всем контактам. Но так это было ещё проще!)

    И таких примеров странных решений много. На каждый из них можно придумать набор рекомендаций для пользователя - чего делать и чего не делать, чтобы не пострадать от этой потенциальной проблемы. Но не проще ли было подумать нескольким сотням человек, чтобы потом несколько сотен миллионов не парились?

    ОтветитьУдалить

Понравилась заметка? Подпишитесь на RSS-feed или email-рассылку.

Хотите поделиться ссылкой с другими? Добавьте в закладки:



Есть вопросы или предложения? Пишите письма на адрес mytribune АТ yandex.ru.

С уважением,
      Илья Весенний