Бунт машин и восстание червей

Парад багов в популярных браузерах

Кто-то верит в Деда Мороза, а кто-то в браузеры без дыр. Попытка оспорить постулат веры приводит как минимум к гигабайтам флейма. Провокация? Нет, всего лишь статья, в которой мы объективно сравниваем различные типы браузеров на предмет безопасности по куче критериев сразу, подтверждая сказанное не только всем весом своего авторитета, но и обширным фактическим материалом.

Стремительный рост уязвимостей в пятой (и особенно шестой) версии IE вынудил продвинутых пользователей перейти на альтернативные браузеры, на которые хакеры уже давно перешли (ну, хакеры - они всегда в авангарде Улыбка). Конкуренты четко просекли ситуацию, сделав ставку на безопасность: «С Firefox Вы повысите свою безопасность и удобство серфинга», «Opera предоставляет самый быстрый, безопасный и простой в использовании браузер». Не отстает от них и Microsoft, но при всей агрессивности маркетинга последней ее рекламе больше никто не верит, и ошибки в IE обнаруживаются чуть ли не ежедневно, а каждая шестая среди них критическая. Не браузер, а сплошное решето. Работать с ним и шарахаться от каждого шороха способны либо экстремалы, либо чайники. Остальные уже давно забили и мигрировали в иные миры, откуда уже не возвращаются. Действительно, посидев на Горящем Лисе или Опере недельку-другую, работать под IE больше не хочется.

Что-то у конкурентов реализовано получше, что-то - похуже, но дело ведь не в качестве кода и удобстве использования, а в безопасности! Ругая IE, поклонники альтернативных браузеров совершенно наплевательски относятся к собственной security, не следят за новостями, не скачивают обновлений и вообще ведут себя так, как будто ни дыр, ни хакеров, ни прочих угроз в природе не существует. Между тем дыры есть везде, в том числе и в текстовых браузерах типа Рыся, просто о них непринято говорить. Почему? Очень просто. Microsoft первая попадает под перекрестный огонь специалистов по безопасности и сетевых обозревателей, а продукция сторонних фирм традиционно остается в стороне, к тому же журнальный бизнес придерживается правила «бей сильных и не ввязывайся в священные войны». Писать о дырах в Лисе зачастую просто небезопасно. Тут же закидают гнилыми помидорами и тухлыми яйцами. А вот дыры в IE – это почетно!

Ладно, оставляем лирику и переходим к статистике.
Горячий Лис

Firefox, собранный на обломках заживо похороненного (а затем эксгумированного и реанимированного) Netscape, просто не может быть надежным браузером по определению. Фирма Netscape была первой, кому пришла в голову мысль внедрить в браузер поддержку Java-скриптов, и дыры в Netscape водились уже тогда, когда Билл Гейтс еще не вкурил в интернет, и не помышляя, что интернет — это тема.

Войну между Microsoft и Netscape мы оставим на растерзание историкам (им же тоже нужно чем-то питаться), а сами сосредоточимся на достигнутых результатах. Netscape раскрыла исходные тексты своего продукта и начала привлекать к разработке всех желающих, но желающих не было, и кворума собрать не удалось. Кому из опытных программистов интересно тратить время и силы на мертвый проект, не получая ни прибыли, ни отдачи, в смысле — ни удовлетворения, ни денег? Чтобы собрать команду, понадобилось несколько лет, и мало-помалу новый продукт (окрещенный Горящим Лисом, или по-английски Firefox'ом) стал завоевывать рынок.

Первые версии Лиса были ужасны. Часть сайтов вообще не открывалась или отображалась неправильно, оперативная память стремительно утекала, производительность (а точнее, полное отсутствие таковой) настойчиво напоминала о себе с первой до последней минуты работы с Горящим Лисом, требуя его периодического перезапуска (чтобы вернуть системе утекшую память).

А чему удивляться? Код Лиса написан на смеси приплюснутого Си и жабы, а жаба — это уже тормоза. Причем если IE разбит на множество динамических библиотек, загружаемых в память по мере необходимости (и даже базовые библиотеки грузятся одновременно с отображением пользовательского интерфейса, создавая иллюзию быстрого старта), то у Горящего Лиса все свалено в огромный исполняемый файл. Ну разве можно так делать?! Но это еще что. Настройки браузера разбросаны по сотням файлов, эти файлы представлены в текстовом формате, и при каждом своем запуске браузер вынужден парсить их заново. Вот, такая, значит, у них оптимизация.

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

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

Впрочем, мы вновь углубились в лирику, а обещали статистику. ОК, открываем www.securityfocus.com (можно прямо в Лисе), вбиваем в строку поиска Mozilla Firefox и получаем 6 страниц уязвимостей по 30 штук в каждой, причем целый ряд уязвимостей носит множественный характер. На самом деле в Горящем Лисе за всю его историю найдено не ~180 дыр, а намного больше. Тот факт, что большинство уязвимостей обнаруживают сами же разработчики, оперативно затыкая их, ничего не меняет. Другой вопрос, что сообщение о дыре - это всего лишь текст, а не исполняемый файл, и вовсе не очевидно, что эта уязвимость действительно представляет реальную угрозу. Атакующему предстоит не только разобраться в технических аспектах (которые обычно не разглашаются), но и решить многие другие проблемы.

Короче говоря, не каждая дыра - это нора. Угроза исходит главным образом от публичных эксплойтов, которыми может воспользоваться любой желающий. Ему и хакером быть необязательно. Навыков продвинутого пользователя обычно оказывается вполне достаточно. А раз так, идем на www.milw0rm.com, вбиваем в строку поиска Firefox и пожинаем урожай – свыше 20 эксплойтов, большинство из которых работает чисто на отказ в обслуживании. Но имеется также достаточно много дыр, допускающих засылку shell-кода с последующим захватом управления. А вот это уже не хухры-мухры! Это реальная опасность попасть под артобстрел или запустить червя на свой компьютер!

Правда, реальных случаев атак на Горящего Лиса зарегистрировано немного, и нет (или практически нет) ни одного червя, который правильно было бы назвать глистом, поскольку червей ловят и едят, а глисты заводятся сами, и попробуй потом от них избавиться! Самое неприятное, что если пользователи IE в своей массе уже привыкли к его дырам и довольно активно качают обновления (чайников и ламеров мы в расчет не берем), то поклонники Горячего Лиса, уверенные в его непогрешимости, не видят в обновлениях никакой необходимости, тем более что механизм обновлений должным образом не отлажен. Новые билды выходят нечасто, а качать мегабайты исходных текстов и геморроиться с их компиляцией — это, извините, каким же мазохистом быть надо?

Наибольшую опасность представляют уже опубликованные, но еще незалатанные дыры. Для Оперы написан симпатичный виджет, торчащий на рабочем столе и отображающий в реальном времени количество критических незаткнутых дыр для всех популярных браузеров. «Незаткнутых» - это таких дыр, лекарства против которых еще нет, и неизвестно, когда оно будет. Первое место по дырам традиционно занимает IE (на момент публикации содержащий 7 незаткнутых дыр), за ним с небольшим отрывом идет Лис (5 дыр). Опера находится в самом конце хвоста, пропуская вперед себя UNIX-браузеры, о которых мы говорить все равно не будем.

Но все же IE атакуют порядка на два, а то и на три чаще, чем Горящего Лиса! Почему? Ответ прост, как бумеранг: популярность Горящего Лиса существенно ниже, чем IE, и написание червей под него просто не окупается. К тому же Горящего Лиса устанавливают технически продвинутые люди, пользующиеся целым комплексом защитных средств и распознающие присутствие постороннего кода даже без помощи антивируса — им достаточно бросить беглый взгляд на диспетчер задач или Process Explorer Руссиновича.

Растущая популярность Лиса не идет ему на пользу. Код кривой, дырявый, практически ничем не уступающий IE. Стоит только ему существенно потеснить IE, как тысячи хакеров бросятся на поиски дыр (благо исходные тексты доступны) и начнут писать червей одного за другим. Выдержит ли Горячий Лис их натиск? С таким подходом к разработке навряд ли. Впрочем, не будем строить прогнозов, а предоставим событиям возможность развиваться собственным путем.
Опера

Браузер с закрытыми исходными текстами, но, в отличие от Лиса (основанного на кодах Netscape) и IE (построенного на базе Mosaic), разработанный с чистого листа и спроектированный сплоченной командой весьма неглупых людей. По быстродействию, надежности и удобству пользования Опера рвет конкурентов как тузик грелку, причем большинство новых фичей сначала появляется именно в Опере и только потом у конкурентов.

Единственный недостаток Оперы (по сравнению с Лисом) — крайне куцая коллекция расширений. Если для Лиса можно найти любое расширение, какое только нужно (или на худой конец написать его самостоятельно), то в Опере расширения (виджеты) появились лишь недавно. Число их невелико, а функциональность жестко ограничена архитектурой, и в основном все программисты пишут гаджеты типа трехмерных часов, календарей, органайзеров, индикаторов погоды и прочей фигни. А вот научить YouTube сохранять потоковое видео в формате mpeg4 – слабо? А ведь для Лиса таких расширений намного больше одного. Лично я написал пару расширений для www.collarme.com, чтобы с ним можно было работать без помощи мыши — одной лишь клавиатурой. Для Оперы в силу ограничений, наложенных на виджеты, такую штуку написать уже не получается (или я просто не разобрался, как это сделать).

Ошибок в Опере не то чтобы совсем нет, но явно меньше, чем в Горящем Лисе. Security Focus выдает четыре страницы ошибок (против шести в Firefox), правда многие из них критические, то есть допускают возможность удаленного выполнения shell-кода, ведущего к захвату системы, а это очень нехорошо.

На www.milw0rm.com валяется около 15 боевых эксплойтов, работающих главным образом на отказ в обслуживании, но есть среди них и парочка таких, которые забрасывают shell-код, причем как для старых версий Оперы, так и для новых. На сайте компании нет ни одного ресурса, хотя бы косвенно относящегося к безопасности (есть только рекламный логотип, типа Опера самая безопасная). Какие там упоминая о дырах или история исправлений! Даже у ненавистной всем Microsoft все это есть, не говоря уже о Лисе. В любую минуту зашел, полистал список новых багов, почитал, чем они чреваты, и вздохнув принялся скачивать обновления или всю версию браузера целиком.

Маленький секрет. На FTP-сайте компании можно найти намного больше, чем в web'е, в том числе и версии с залатанными дырами, еще не выложенные в web. Что за странная политика такая — не знаю. От атак Оперу спасает лишь относительно невысокая распространенность последней. Мне не известен ни один хакерский сайт, сконструированный специально для обстрела Оперы (Лис под удары несколько раз уже попадал, правда все заканчивалось благополучно и зараза благодаря Process Explorer'у Руссиновича подбивалась еще на излете). Закрытость исходных кодов и относительно частый выход новых версий также существенно повышает цену атаки.
Рысь

Рысем зовут текстовой браузер (он же Lynx), весьма популярный в некоторых кругах и горячо любимый мной. Графику не поддерживает, картинки не грузит, управляется с клавиатуры и серфит с такой скоростью, что только ветер в ушах свистит. Переваривает только базовые тэги HTML (да и то не все), скрипты не видит в упор, не говоря уже о всяких там плавающих фреймах. Казалось бы, ну какие ошибки при такой простоте? Тем более что новые версии практически не выходят. Да и зачем новые, когда есть неплохо работающие старые?

Тем не менее Security Focus показывает целых восемь ошибок, а на www.milw0rm.com находятся два эксплойта, захватывающие управление компьютером без всяких там отказов в обслуживании, что буквально шокировало меня, до этого верящего, что в Рысе ошибок нет и не будет. А оно вон как оказалось. Теперь я не верю ни браузерам, ни женщинам и, прежде чем вновь начать серфить Рысем не внушающие доверия сайты, тщательно изучаю его исходный код — вдруг там какой баг, о котором еще никто не знает? То есть это я не знаю, а тот, кому нужно, знает о багах все.

Вот и думай, как не стать параноиком при таком положении дел! Но все же вероятность попасть под атаку, сидя на Рысе, настолько близка к абсолютному нулю, что совершенно несущественна и ей можно на 99% пренебречь, но потенциально небезопасные сайты все-таки лучше просматривать из-под виртуальной машины. Мало ли...
Заключение

Все мы небезгрешны. И браузеры в том числе. Дыры — явление стихийное и неизбежное. Против стихии не попрешь. Самое лучше, что можно только сделать, - это прекратить верить и начать активно действовать. Следить за новостями безопасности, оперативно скачивать и устанавливать обновления/свежие версии/заплатки. Использовать многоуровневые системы защиты: брандмауэры, антивирусы... Ну и, наконец, не щелкать по подозрительным ссылкам. Кстати, существует мнение, что опаснее всего блуждать по порносайтам, но это мнение глубоко ошибочно. На нормальных порносайтах с нормальными доменами (а не на отстойниках типа xxxxx.narod.ru) зловредного контента практически не встречается Улыбка.

И еще - в последнее время Google обзавелся антивирусом, распознающим некоторые типы вредоносного контента и выдающим соответствующее предупреждения под ссылками на страницы, которые пытаются атаковать браузер. Так что перед открытием подозрительной ссылки, полученной из ненадежных источников, имеет смысл сначала отыскать ее в Google и посмотреть, что он скажет.
Плагины

Все браузеры (за исключением, пожалуй, одного лишь Рыся и его текстового собрата Links'а) позволяют устанавливать плагины сторонних производителей: Abobe PDF Reader, Flash Player (названия верно написаны? Думаю, Player и PDF Reader) и много еще чего. А в этих плагинах ошибки, между прочим, тоже встречаются. Причем, если плагин портирован сразу под несколько браузеров, уязвимость приобретает масштабный характер.

Так, например, в конце 2007 года была обнаружена серьезная дыра в Apple QuickTime Player, допускающая удаленный захват управления и ставящая под угрозу и IE, и Горящего Лиса, и Оперу, Сафари и некоторые другие десктопные и мобильные браузеры. При условии, конечно, что этот плагин на них установлен, а установлен он там достаточно часто.

Ладно, если без встроенного просмотра PDF еще как-то можно и обойтись (хотя какая разница? все равно, дыра выскочит при открытии сохраненного документа с локального диска), то без Flash'а живется хреново. То есть поначалу очень даже хорошо живется: реклама не грузиться и не досаждает, а развлекательные ролики можно посмотреть и под IE. Но вот начинают попадаться сайты, где часть картинок выполнена при помощи Flash-технологий (например, так поступает www.iXBT.com), и браузер начинает неизбежно обрастать все новыми плагинами.
Расширения

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

Наткнувшись на пару расширений для Горящего Лиса, незаметно ворующих пароли с кукисов, я ради эксперимента создал «троянское» расширение (в кавычках, потому что зловредность его заключалась в грозного вида диалоговом окне с надписью: «Сейчас вам будет нехорошо, а потом еще хуже»). Я был просто ошеломлен, насколько проста оказалась процедура регистрации и каких усилий стояло закачать «троянское» расширение в общий доступ. Никаких. В смысле усилий. Просто берешь и закачиваешь. И прежде чем разъяренные пользователи успели написать абузу, «троянца» скачало и установило нехилое количество человек. И ведь это был явный «троян», а если бы он действовал тихо, скрытно и незаметно, что тогда?

Сразу же возникает вопрос: какими полномочиями обладают расширения? Ответ: разработчики браузера приложили определенные усилия, чтобы эти самые полномочия не выходили за рамки приличий, ограничиваясь действиями, совершаемыми над текущей страницей браузера. А у Лиса еще и над его настройками (что дает возможность незаметно прописать хакерский прокси-сервер для кражи трафика, а потом быстро все вернуть обратно, и никто ничего не заметит). Отформатировать диск или внедрить вирус в исполняемые файлы расширения не могут. Теоретически. Практически же они написаны на жабе, и для ускорения их выполнения браузеры автоматически компилируют их код в память, а ошибок в этих компиляторах очень много. Передать управление на заранее подготовленный машинный код после такой компиляции плевое дело, а машинный код может практически все. Имеются и другие просчеты, как в механизме взаимодействия расширений с браузером, так и в жаба-машинах.

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

Комментарии

Популярные сообщения