Pull to refresh

История безответственности и одной уязвимости

Reading time 7 min
Views 11K
Спешу заметить, эта статья никак не связана с переходом Opera на WebKit. Я просто хочу обратить внимание на одну проблему, которая преследовала меня с Оперой многие годы на одном простом примере.

Предисловие


Мое знакомство с браузером Опера началось еще в конце 90-х. Именно тогда мне посчастливилось купить у незнакомого бородача за покрытым январским снежком рыночным прилавком диск. Назывался он, как ни странно, вроде бы «Золотой софт» и содержал на обложке перечень программ и броские врезки «100% вирусов нет!». С этого диска началась моя дружба с тогда еще «shareware» Оперой. Многовкладочный интерфейс, возможность отключать картинки – что еще нужно было для российского диалапа?

Поэтому последние годы, когда я раз за разом натыкаюсь на то, что Опера «по умолчанию» попустительствует в скрытой загрузке вредоносного ПО, я все равно не хочу с нее уходить.

Завязка


Каждый инцидент начинается печально и неожиданно. Ничего не предвещает беды. Стандартный серфинг в интернете, включен файрвол, антивирус бодро висит в трее, поиск какой-то информации, переход по ссылкам, файлообменниками и неожиданно вылет сообщения брэндмауэра «Приложение fghtdhdffsdhr.exe запрашивает доступ к реестру, разрешить?» (Имя «fghtdhdffsdhr.exe» взято наобум, но отражает общий принцип именования подобных файлов). Начинается спокойная паника. В мыслях всегда опасаешься самого страшного – нарваться на криптовирус и потерять годами наработанные документы и исходники. Взгляд на диод активности дисков, прислушиваюсь к ним – молчат, а, значит, вирус застыл в ожидании завершении вызова на доступ к реестру. И, пока он держится, начинаются разборки.

Быстро выясняется, что вирус запущен из директории пользователя (или папки временных файлов интернета), запустил его процесс java.exe, а процесс java.exe, в свою очередь, был запущен процессом opera.exe. Процесс вируса убивается и его файл изничтожается.

Об антивирусе в этой истории
Доблестный популярный антивирус, кстати, часто молчал. Или анализировал файл, а потом отпускал на свободу. Оно и понятно — я скачал самую последнюю, свежайшую версию трояна напрямую с сервера злоумышленника. А этот файл, тем временем, запихивался в автозагрузку, качал разную пакость с сети, создавал задачи планировщика, пытался подменить различные системные библиотеки, запускал cmd.exe, хотел внедрить себя в explorer.exe, да и многое другое задумывал сделать. Я же, верный патриотическим чувствам, проверял файл на virustotal.com, потом онлайн-сканером на сайте антивирусной компании, а потом и вовсе отправлял в архиве на сайт вирусоборцев. Отмечу, что некоторые из присланных вирусов действительно ими были, вирусоборцы даже им имена присваивали новые, или мне писали, что, дескать, вирусов нет. Первый раз, когда мне ответили, что вирусов нет, я был так возмущен, что связался с кем-то из менеджеров компании и пожаловался, что их «вирусные эксперты» некомпетентны. Через пару часов пришло письмо, что, да, товарищ, вы были правы, мы разобрались, там вирус. Но ругаться с ними больше не хочу и сейчас, когда мне рапортуют, что, дескать, вирусов нет, я пожимаю плечами: другие программы вирусы почему-то находят, а «вирусные эксперты» — нет. В любом случае, в копилку «моего» антивируса эти образчики попадали в течение месяца всегда. Но, видимо, уже не от меня. Поэтому мое отношение к антивирусу после этой истории не изменилось. Не бывает идеальных вещей.

Больше я никаких действий в таких случаях особо не принимал. Беспокоило это меня мало. Да и плагин Java, включенный, кстати, в Opera по умолчанию, отключать мне не хотелось. Лицензия на файрвол продлялась стабильно, операционную систему я тоже периодически переустанавливал, а дел находилось много и без разборок с Оперой. Хотя обновлять ее и Java я не забывал, втайне надеясь, что когда-то они обновятся до такой степени, что решат эту проблему.

Кульминация


Наступил 2012 год. И прошел на удивление спокойно. Ничего опасного не происходило, что заставило меня совсем расслабиться и решить было, что в злобной связке Opera + Java наконец-то проблему с исполнением произвольного кода на удаленной машине решили. Зря надеялся.

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

Вооружившись виртуальной машиной, HTTP-дебаггером, монитором сетевой активности, а еще утилитой для отслеживания активности процессов от Sysinternals, я приступил к разбирательству. Переход на сайт файлообменника к тому же файлу никаких результатов не дал. Обновление страницы тоже. Опера порождать процесс java.exe не спешила, двоичных файлов было много только в виде изображений: одна реклама, реклама, реклама.

Первая же мысль, оказавшаяся впоследствии правильной, была простой – сайт, раздающий троянца, не отдает больше одного файла в одни руки. Вернее, одному IP. Сменил внешний IP, полез на файлообменник опять. Нет реакции.

Вторая мысль, оказавшаяся впоследствии также правильной, была опять простой – сайт, раздающий вирус, не отдает больше одного файла в одни руки. Вернее, отдает только тем, у кого нет его cookie. Уничтожаем все полученные cookie от всех сайтов, меняем IP, идем на сайт. Через секунды диспетчер задач фиксирует запуск java.exe, затем очередного «fghtdhdffsdhr.exe», который я не без удовольствия изничтожаю после того, как, на мой взгляд, он достаточно напакостил.

Начались разборки с log-файлами. Вирус проявлял типичную активность. Это было неинтересно, было интересно, как он появился. То, что его изначально загружает java-апплет, я понимал, но очень хотелось понять, как администраторы файлообменника такое допустили. Оказалось все очень просто, хотя запутанно из-за обилия перенаправлений и рекламы. Одна из «рекламок» просила загрузить счетчик страниц в виде файла *.swf со стороннего сайта. Счетчиком он был, я думаю, потому, что сайт подходяще назывался. И был в домене ru, кстати. Но этот файл перенаправлял браузер на другой сайт counter.*.com. И вот он уже практически всегда возвращал пустую страницу с намеком что, да, пользователь засчитан. Но в случае, если пользователь загружал счетчик впервые, браузер перенаправлялся на страницу с java-апплетом, который обрабатывался java.exe, загружал исполняемый файл на компьютер пользователя и запускал его. Java.exe запускался Оперой с рядом параметров, включая, насколько я понял, имя именованного канала, через который Опера и сливает апплет. На более тщательное расследование времени не было.

Конечно, я запостил баг-репорт на opera.com с описанием последовательности появления проблемы. Вполне ожидаемо мне ответили, что это проблема Java, браузер работает правильно, и пишите письма в Oracle. В Oracle я уже писать не стал, с моей точки зрения, Java тоже работает правильно. Выполняет код, загружает файлы, запускает программы, на что жаловаться? Проблема заключалась как раз в том, что Opera разрешает Java выполнять неизвестный код от неизвестных источников. Справедливости ради отмечу, что Chrome и Firefox по умолчанию запрещают работать плагину Java как раз из-за проблем с безопасностью. Вторая проблема, конечно, в веб-мастерах популярных ресурсов, которые в погоне за показами и трафиком размещают у себя на сайтах рекламу из сомнительных источников, которая, с одной стороны, может работать по прямому предназначению, а может, выдавая свои действия за вполне безобидные, и творить зло.

Развязка


Толчком к статье послужила еще одна форма головотяпства, проявленного, что уже совсем страшно, на сайте очень популярного в моем городе супермаркета. На определенных страницах этого сайта Опера опять запускала неизвестные файлы через Java! Но там оказалось все намного проще: в коде страницы, в нижней ее части, даже за закрывающим тегом <html> был вызов JS-скрипта со стороннего сервера, который спустя ряд перенаправлений загружал апплет. Срабатывал он по событию onmousemove и загружался в миниатюрный iframe. И, как всегда, повторный переход по страницам магазина к загрузке вируса не приводил: вредоносный сервер устанавливает cookie и запоминает IP-адрес. Для такого знакомого сочетания сайт вместо вируса возвращал код 404. Именно благодаря этой способности, вирус и вредоносный код на странице могут очень долго оставаться необнаруженными. Администратор сайта, однажды поймав cookie, уже никогда не увидит эту проблему. А при условии того, что обновляется только контент сайта, то следующая ревизия кода может быть через очень долгое время, за которое злоумышленники смогут обновлять и свои подходы, и подсаживаемых троянцев.

Способ заражения тоже прост: скорее всего, у администратора увели пароль к ftp-аккаунту для сайта магазина. Возможно, таким же троянцем. А дальше автоматически прописали во все *.html файлы или файлы c html-кодом тег <script></script>. Не зря же он располагается даже за </html>-тегом.

А с администратором сайта связаться я не могу, контакты сайта указывают только на пресс-офис. Зная, как долго мое заявление будет пробиваться через бюрократический корпоративный аппарат, и, понимая, что оно может и «случайно» затеряться, я не хочу к ним «официально» обращаться. Тем более администратор сайта, прочитав письмо, через пару минут устранит все проблемы и продолжит свое блаженное существование, не поменяв, возможно, даже пароль доступа к сайту. Через своего знакомого в IT-отделе магазина я напрямую выйду на администраторов сайта и поясню суть проблемы.

Послесловие


Надеюсь, это получилась поучительная история, из которой можно сделать ряд выводов:
  • Безответственность и невнимательность могут привести к печальным последствиям.
  • Не стоит доверять даже любимым сайтам. Если вчера на них все было хорошо, то сегодня уже может стать плохо.
  • Сервера, раздающие вирусы, не дураки. Больше одного в одни руки не отгружают. Только одна попытка заражения на один IP или компьютер.
  • Думаю, проблему можно решить, отключив плагин Java в Опере с помощью opera:plugins, либо запретив автоматическое перенаправление в настройках (сомнительно и неудобно).

P.S. Не исключаю возможности наличия этой «проблемы» в других браузерах старых версий.

UPD: В связи с вопросами выделю основную мысль статьи: Опера, в отличие от других популярных браузеров, «по умолчанию» не предупреждает пользователя о потенциальных проблемах с безопасностью Java. Вторая мораль в том, что эксплуатация подобной «уязвимости» (да, надо было взять это слово в кавычки и в заголовке) возможна благодаря безответственности различных категорий лиц (примеры в статье).
Tags:
Hubs:
-1
Comments 25
Comments Comments 25

Articles