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

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

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

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

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



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

В начале 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, фингерпринтам, распределению запросов во времени. Запросы же расширений не отделить от запросов реальных пользователей.

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

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

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

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

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

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



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

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

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

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

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

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

Комментарии (14)


  1. ormoulu
    19.02.2019 12:55

    Раньше была возможность установки расширений из произвольных источников?


    1. Ramisya4ka
      19.02.2019 14:52

      Да была, скачиваешь расширение откуда хочешь и ставишь. Я ставил так, что-то, вспомнить бы что… Вроде блокировки я обходил так


      1. AngReload
        19.02.2019 15:17

        Я так только YouTubeCenter ставил, кажется его гугл удалял из маркета за возможность скачивать видео.


    1. PapaMinos
      19.02.2019 14:52

      да


    1. BackLaN
      20.02.2019 11:32

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


      1. IRainman
        21.02.2019 15:07

        Вот не факт, с учётом всего предыдущего маразма от разработчиков Chromium по теме закручивания гаек, отладку расширений могут оставить только в бете и всё.


  1. Jabher
    19.02.2019 16:20

    Саша, привет!
    Рад, что вы рассказали об этом в паблике. А продолжение "как боретесь" будет? :)


    1. alexandra_s Автор
      20.02.2019 11:46

      Сева, привет! Когда будут интересные результаты — обязательно расскажем :)


  1. savostin
    20.02.2019 00:39

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


    1. alexandra_s Автор
      20.02.2019 11:49

      Было бы неплохо. Но даже это не помешает расширениям модифицировать DOM произольным образом (подменять рекламу, например) или собирать персональные данные.


  1. IsyanovDV
    20.02.2019 00:59
    +1

    Спасибо, я с удивлением узнал, что в Одноклассники еще кто-то заходит.

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


    1. alexandra_s Автор
      20.02.2019 11:50

      Нет, таких совпадений не замечали.


    1. IRainman
      21.02.2019 15:09

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


      1. IsyanovDV
        22.02.2019 02:18

        Одноклассники в русскоговорящем сегменте таки довольно популярны

        Это меня и удивляет, потому что из моего окружения и родственников все сбежали оттуда еще лет 5 назад.