Хабрахабр

Вредоносные расширения для Chrome

Так же, как и аудитория интернета в целом, наши пользователи подвержены распространенным угрозам безопасности: фишингу, вирусам, переиспользованию паролей. Аудитория Одноклассников — 71 миллион в месяц. И хотя такие атаки не являются следствием уязвимости непосредственно Одноклассников, мы заинтересованы в противодействии им и для этого расследуем все значимые инциденты, связанные со спамом. Экономическим двигателем атак на пользователей соцсети, как правило, является распространение спама.

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

Расширения для Chrome могут быть установлены как в сам Chrome, так и в браузеры на базе Chromium, например Opera и Яндекс.Браузер. Интересным частным случаем таких атак является заражение вредоносными расширениями браузеров. Вредоносные расширения для других браузеров (Firefox, Safari) распространены значительно реже. То есть потенциально охватывается львиная доля веба. Могу предположить, что разработка вирусов в их случае не приносит выгоды ввиду сравнительно небольшой аудитории этих браузеров.

Мы даже можем подсчитать степень распространения вредоносных расширений среди наших пользователей:

А всего за 2018 год 1,2 млн пользователей были замечены за использованием зараженного браузера. Ежедневно мы регистрируем 100-200 тысяч зараженных пользователей.

За почти два года многое изменилось. В начале 2017 года на OWASP Russia Meetup#6 мы уже рассказывали про опыт Одноклассников в борьбе с распространением вредоносных расширений для Chrome. Но для начала разберемся, как устроены расширения.

Итак, Chrome позволяет пользователям кастомизировать браузер путем установки расширений.
Расширениям предоставляется Javascript API, с помощью которого они могут, в том числе:

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

Расширения распространяются через Chrome Web Store в виде архива с исходным кодом и ресурсами (картинками, стилями, HTML-страницами). Ниже перечислены ключевые компоненты расширения:

  • Манифест представляет собой JSON с конфигурацией расширения. Помимо прочего, в манифесте декларируются необходимые разрешения и домены, к данным которых расширение получит доступ.
  • Background scripts выполняются в фоне в собственном контексте, изолированно от кода веб-страниц. Они предназначены для получения и обработки разнообразных событий от браузера и имеют полный доступ к его API.
  • Content scripts выполняются в контексте веб-страницы. Javascript-окружения самой страницы и расширения изолированы друг от друга, расширение не имеет доступа к переменным и функциям страницы, и наоборот. Скрипты могут изменять DOM страницы и выполнять межсайтовые запросы с помощью XMLHttpRequest. В отличие от обычных страниц, действие same origin policy и CORS-политик сервера не распространяется на запросы от расширений, они ограничены только набором доступов, запрашиваемых в манифесте.

Предположим, кто-то решил написать свой вирус. Что он может реализовать?

Понятно, что универсальный механизм защиты данных при передаче — SSL — в этом случае не поможет защитить данные страницы, так как браузер передает их расширению уже расшифрованными. Доступ к данным пользователя
Как упомянуто выше, расширение может перехватывать запросы и ответы между страницей и сервером.

Классическим примером является подмена рекламных баннеров. Изменение контента страницы
Расширение имеет доступ к DOM-у, может добавлять и удалять элементы, изменяя интерфейс страницы.

Отслеживание действий пользователя
Расширение может подписаться на события от клавиатуры и мышки, и таким образом отслеживать действия пользователя в браузере и собирать пароли, персональные данные, номера банковских карт.

Это значит, любые действия, которые пользователь может выполнять на сайте, могут быть инициированы и расширением тоже. Выполнение действий за пользователя
Расширение может выполнять скрипты в контексте страницы-жертвы в нарушение same origin policy.

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

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

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

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

Для успешной атаки расширение должно решить несколько проблем:

  • спрятаться от модерации в магазине;
  • найти и удержать аудиторию;
  • заработать деньги.

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

Чтобы удержать зараженную аудиторию и иметь возможность установить пользователю новое расширение взамен удаленного, вирусописатели вносят изменения в настройки браузера, не связанные с расширением напрямую: регистрируют service worker, подписывают пользователя на уведомления, подменяют ему домашнюю страницу или поисковый сервис. После удаления из магазина, расширения, признанные вредоносными, могут быть отключены в браузерах установивших их пользователей. Это всё позволяет прислать в браузер ссылку на установку новой версии вируса.

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

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

    Пока расширение установлено и активно в браузере, достаточно просто обманом заманить жертву на страницу, которая зарегистрирует service worker и подпишет пользователя на уведомления. Примечательной разновидностью подмены рекламы расширениями является использование HTML5-уведомлений. А так как этот service worker не связан непосредственно с расширением, то и после того, как расширение будет удалено из браузера, у авторов останется канал общения с пользователей в виде push-уведомлений.

    Аналогичный механизм также используется совместно с социальной инженерией для повторного заражения жертвы в случае удаления расширения из магазина: пользователь получает push с привлекательным содержимым (например, «ok.ru Новое непрочитанное сообщение») и со ссылкой на установку новой версии вируса взамен удаленной.

  • Использовать аккаунт жертвы для распространения спама в соцсети. Установленное в браузере расширение может выполнять запросы от имени текущего пользователя, в том числе размещать спам под видом нормального контента от пользователя (писать сообщения друзьям, постить заметки и посты в пабликах, загружать фото или видео).

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

Остается надеяться на то, что объявленная Google борьба с вирусами в Сторе будет успешной. Ситуация усугубляется тем, что веб-страницы в браузере имеют заведомо меньше прав, чем расширения, и не могут ничего предпринять для защиты своих пользователей. Но пока этого не произошло, мы в OK ведем работу над тем, чтобы свести к минимум распространение вирусов внутри соцсети и сделать использование сервиса максимально безопасным.

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»