Опасный мир вредоносных расширений и защита от них. Опыт Яндекс.Браузера
Браузерные расширения в последнее время, к сожалению, всё чаще используются не для того, чтобы приносить пользу, а как инструмент мошенников. Сегодня мы хотим поделиться с вами нашим опытом борьбы с вредоносными разработками, рассказать о мерах и технологиях, которые защищают пользователей Яндекс.Браузера.
Весной 2014 года поддержка Яндекс.Браузера обратила внимание на стремительно растущее число обращений от пользователей, в которых говорилось о «заражении браузера вирусом» и агрессивной рекламе, всплывающей на посещаемых сайтах. Наиболее распространенным симптомом была подмена или добавление новых рекламных блоков на популярных в Рунете сайтах (ВКонтакте, Яндекс, …). При этом разработчики вредоносных расширений не утруждали себя заботой о пользователях и не брезговали откровенно мошеннической или шок-рекламой. Встречались и другие проявления. Например, автоматическое открытие вкладки с определенным сайтом, подмена поиска по умолчанию или даже воровство данных.
В определенный момент количество таких обращений стало достигать 30% от всех сообщений в поддержку. Наблюдения поддержки также подтверждались статистикой основных причин удаления нашего браузера (при удалении пользователям предлагается описать причину). Многие люди искренне считали, что это наша команда решила таким вот способом монетизировать браузер. За короткий период времени количество удалений Яндекс.Браузера, связанных с деятельностью сторонних вредоносных разработок, удвоилось. Нужно было срочно вмешаться и начать работать над этой проблемой.
Первый удар
Самое простое и самое быстрое, что мы могли сделать в этой ситуации, — это внедрить черный список расширений. Здесь нам помогли коллеги, отвечающие за безопасность в Яндекс.Поиске и имеющие солидный опыт в борьбе с вредоносными сайтами. Именно их данные лежат в основе технологии Safe Browsing, используемой в Яндекс.Браузере. В результате совместного труда Яндекс.Браузер 14.5 научился блокировать работу расширений, чей ID занесен в список вредоносных дополнений. Сам список регулярно пополнялся, после чего новая версия за считанные часы распространялась среди пользователей через Safe Browsing API.
Это был наш первый серьезный удар по мошенническим расширениям, которые ранее не встречали какого-либо особого сопротивления со стороны браузера. Этот шаг привел к тому, что за считанные недели число жалоб сократилось в 10 раз. К сожалению, эффект длился недолго. Радость от быстрой победы сменилась пониманием, что это лишь начало настоящей борьбы за безопасность пользователей.
Безопасность или свобода?
Весной прошлого года мы научились оперативно выявлять и блокировать широко распространенные вредоносные расширения через черный список. Вот только создатели подобных разработок не растерялись и перешли к новой тактике. Узнали мы об этом из все тех же жалоб. Пользователи периодически присылают нам плохие расширения для анализа. Благодаря такой помощи мы и пополняем наш черный список. Но в какой-то момент к нам стали поступать очень странные образцы. Например, нам прислали расширение под названием NxAxR, ID которого был равен «pioclpoplcdbaefihamjohnefbikjilc». Если вы сейчас поищете этот ID в поиске, то узнаете, что принадлежит он вполне безопасному расширению Evernote Web Clipper, которое опубликовано в Chrome Web Store и уж точно никаких гадостей творить не могло (но мы, кстати, все равно проверили). Причем со временем аудитория подобных подделок стала даже больше, чем у оригинальных расширений. Но мы не могли забанить тот же NxAxR по ID, ведь после подобного шага Evernote был бы забанен тоже.
Почти сразу была отброшена идея взлома аккаунтов Chrome Web Store, которая теоретически могла бы объяснить обновление расширения для хранения заметок до вредоносного рекламного поделия. Аккаунт никто не взламывал, а в каталоге по-прежнему распространялась правильная версия расширения. К счастью, думать пришлось недолго, потому что наши разработчики и сами догадались о механизме, который используют мошенники.
Вредоносная программа, запущенная на компьютере пользователя, устанавливало свое расширение в браузер не через штатные для этого инструменты, а прямым редактированием профиля. При этом подделка маскировалась на уровне ID под известное расширение, которое опубликовано в Web Store. Даже «update_url» (адрес сервера, где браузер должен проверять наличие новых версий) был указан корректно. А чтобы вредоносные функции расширения не пропали после первого же обновления оригинала, злоумышленники выставляли заведомо большую версию. Браузер сравнивал версии в манифесте расширения и на сервере. Если на компьютере новее, то обновление не происходило.
Кстати, со временем создатели опасных расширений поняли, что названия вида «NxAxR» привлекают ненужное внимание пользователя, поэтому стали называться, например, «Переводчик для Chrome». Такое и удалить страшно: вдруг переводчик действительно перестанет работать.
Перед нашей командой стояла большая и интересная задача. Нужно было разработать технологию, которая умела бы выявлять подделки и защищала людей от них. Хотелось бы мне в этом месте рассказать вам про фантастические идеи, которые мы перебрали, но все было куда проще (и быстрее, что особенно важно). Чтобы распознать подделку нам нужно было сравнить ее с эталоном, т.е. с заведомо оригинальной копией, которую пользователь устанавливает из официального каталога. Проблема заключалась в том, что многие расширения распространялись альтернативными способами и никак не были связаны с каталогом. В этом случае никакого эталона просто нет. И вредоносные разработки особенно злоупотребляли подобным. В этой ситуации обеспечить защиту от подделок мы могли лишь предварительно ограничив установку расширений проверенными источниками.
Как вы уже догадались (или даже помните август прошлого года) мы ввели ограничение на установку расширений из сторонних источников. Тем не менее наша команда стремилась к тому, чтобы не только защитить пользователей от вредоносных расширений, но и сохранить право выбора. Пользователи должны иметь возможность выбирать как расширения, так и каталог, из которого их можно установить. Именно поэтому в свое время мы добавили в браузер раздел Дополнения. И именно по этой же причине мы не только ввели ограничения, но и поддержали каталог Opera Addons, устанавливать расширения из которого можно так же просто, как и из Chrome Web Store. К тому же те разработки, что были установлены из сторонних источников, не были заблокированы полностью. Мы лишь отключили их по умолчанию. После перезапуска браузера люди сохранили возможность активировать их вручную и продолжить работу.
Как бы тяжело не было совместить безопасность и свободу выбора, кажется, нам удалось найти баланс между ними.
Проверка подлинности
После введения запрета на установку из сторонних источников, браузер получил возможность выявлять подделки, сравнивая их с эталонами. Но как именно нужно сравнивать? Если сравнивать только содержимое манифеста, то этого недостаточно, потому что мошенники смогут внедряться в существующие js-файлы. Сравнивать содержимое всех js и html файлов? Это долго и может сказаться на производительности. Многие из вас уже могли догадаться, что в конечном счете выбор пал на сравнение хешей. Если расширение устанавливалось из Opera Addons, Web Store или Дополнений, то у Яндекс.Браузера есть хеш безопасной копии. Достаточно сопоставить его с хешем текущего расширения, чтобы быстро выявить те, в которые вносились изменения.
Звучит просто, но на отладку этой технологии ушло немало времени. Нам пришлось искать золотую середину между эффективностью защиты, количеством ложных срабатываний и влиянием на производительность. Просим прощение за то, что не раскрываем тут всех деталей. Надеемся, что вы поймете причину. Многие пользователи заплатили за безопасность неудобствами, связанными с установкой расширений, но в конечном счете эта мера позволила нам повторить успех черного списка и в разы снизить количество «зараженных» браузеров.
Групповые политики и прочие лазейки
Черные списки Safe Browsing, ограничение источников и проверка подлинности значительно усложнили работу мошенников. Они отступили, пересчитали свои потери, но, как и в прошлый раз, нашли альтернативный вариант. Причем в этот раз основной удар принял на себя Chrome Web Store.
Каталог Web Store открыт для свободного добавления расширений и не требует премодерации. Злоумышленники этим и воспользовались. В каталоге мы и раньше находили некоторые, скажем так, не совсем полезные образцы. Но в 2015 году подобная активность явно возросла. Мошенники пытались обойти защитные меры простым количеством: одно популярное расширение быстро попадет в черный список, но если загрузить множество копий, то у некоторых вполне есть шанс выжить и окупить вложения.
Несмотря на то, что подобные расширения имели названия и функции явно ориентированные на привлечение пользователей («Скачать музыку/видео из ВКонтакте» и подобные), основным каналом для распространения по-прежнему являлся софт на компьютере пользователя. Браузер при этом никто не «взламывал». Было достаточно использовать задокументированный в проекте Chromium способ. Установщик создавал в реестре ключ вида HKEY_LOCAL_MACHINE\Software\Yandex\Extensions\extension_ID, в котором был прописан адрес каталога Web Store. После перезапуска браузер сам загружал CRX-файл с указанного адреса и устанавливал. Подобный способ в свое время был придуман для нативных программ, которые несли с собой собственное расширение (например, Skype или антивирус Касперского). Но благодаря относительной простоте применения этот инструмент достаточно быстро освоили и разработчики вредоносных дополнений.
В проекте Chromium также существует возможность устанавливать как сам браузер, так и расширения для него средствами групповых политик. Создавались они первоначально для корпоративного сегмента. Но как и в случае с первым способом, основное применение нашлось совсем в другой области. Расширения устанавливаются без какого-либо уведомления. Но самое неприятное здесь то, что в групповых политиках можно прописать запрет на отключение или удаление подобных расширений. И без умения работать с системным реестром пользователь от них избавиться не сможет.
Способы установки расширений через реестр или групповые политики, несмотря на их первоначальное назначение, применялись в основном мошенниками. Проблемы многих тысяч наших пользователей значат больше, чем удобство для нескольких сторонних программ. Поэтому весной этого года мы отключили подобные лазейки.
А что дальше?
Мы бы не хотели спойлерить и лишать удовольствия тех, кто находится по ту сторону баррикад, поэтому не станем рассказывать про наши планы и готовящиеся технологии. Со всеми остальными мы можем поделиться некоторыми собственными наблюдениями.
Во-первых, распространение рекламных и других опасных расширений это целая индустрия, у которой есть деньги, время и лучшие умы для поиска все новых способов обхода защиты. Чтобы успешно противостоять такой угрозе, мы выделили в команде целое направление, ответственное за безопасность пользователей.
Во-вторых, меры, принимаемые как в Яндекс.Браузере, так и в других браузерах и каталогах, постепенно создают для мошенников неблагоприятные условия. Им приходится искать альтернативные каналы для подмены рекламы или воровства данных на компьютере пользователя. И здесь важно не упускать их из виду. В будущих постах мы постараемся рассказать об этом подробнее.