Иногда веб-мастера и владельцы сайтов добровольно (естественно, по незнанию) устанавливают себе на сайте компоненты, которые несут угрозу как посетителям, так и самому сайту. В основном это касается любителей халявы: бесплатные премиум шаблоны, “нулленые” коммерческие CMS, плагины, загруженные не с сайта разработчика и прочие “бесплатности”. К этому списку можно смело добавлять javascript и flash-виджеты для сайта: календарь, mp3-плейер, калькулятор, конвертер валют — все эти элементы, кроме полезных функциональных элементов сайта, могут принести целую “вязанку” нежелательного контента или даже распространять вредоносный код, заражая компьютеры и мобильные устройства посетителей сайта.

На первый взгляд подобные виджеты размещают только “Васи Пупкины” на страницах своих личных блогов, но за последнюю неделю мне довелось анализировать три коммерческих и достаточно посещаемых проекта, которые также использовали зараженные виджеты (один размещал калькулятор для подсчета суммы заказа, второй – календарь на новостном сайте, третий – онлайн-радио).



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



Итак, какие проблемы появлялись на сайтах, где были установлены зараженные виджеты? Всегда выполнялись редиректы, но зависели они от платформы и браузера:

1. При заходе с андроид-устройства в результате серии перенаправлений происходила загрузка вирусного .apk файла на устройство посетителя под видом обновления системных компонентов или антивируса для мобильного.

2. При заходе с браузера на Mac OS платформе посетителя перебрасывало на сайт, который уведомлял о том, что на компьютере обнаружены вирусы и необходимо срочно установить приложение под видом антивирус.



3. При посещении страниц с браузера под Windows, посетителю открывались попандеры или перенаправляло на различные партнерские программы.

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



Проанализированные виджеты с редиректами загружались с двух агрегаторов:

101widgets.com



widgetsmonster.com



Дальнейший поиск выявил еще ряд сайтов того же владельца:

xuxu.org.ua
widgetok.com
mygold.pp.ua
www.mygold.pp.ua
widgeta.net

В свое время похожая проблема была в сервисе “Одна кнопка”, которая вместе с полезной нагрузкой в виде сервиса добавления в закладки и функции “поделиться” подгружала код мобильных и WAP-партнерок. Выглядело это так:



Но в последнее время все больше веб-мастеров пользуются pluso, share.yandex.ru, виджетами от ВКонтакте, Facebook и другими крупными сервисами, поэтому я давно не сталкивался с сайтами, на которых установлен виджет “OK”.

К сожалению, подобные проблемы с виджетами невозможно выявить, проверяя файлы сайта антивирусами или специализированными сканерами вредоносного кода, какими бы эффективными они ни были. Поскольку код самого виджета не является вредоносным, а редиректы возникают в результате несанкционированной подгрузки сторонних скриптов вместе с загрузкой flash кода. Эффективным способом обнаружения «левых» скриптов при загрузке страниц является применение снифферов трафика (Fiddler, Wireshark, Charles, etc). Анализ HTTP трафика поможет выявить причины редиректов, рекламных баннеров, попандеров и пр.

В качестве решения проблем с редиректами (кроме, естественно, удаления самого источника редиректа с сайта) можно также посоветовать настроить правила CSP, добавив в доверенные только те источники кода и данных (хосты), в которых вы уверены. Это поможет избавиться в том числе и от «левых» переходов в статистике посещений сайта, что сейчас является достаточно частым явлением.

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

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


  1. iXCray
    14.10.2015 14:15
    +10

    Думаю, что эти «разработчики» — те же личности, что устанавливают себе Амиго и тулбары Одноклассников для IE.


  1. evnuh
    14.10.2015 15:37
    +5

    Но в последнее время все больше веб-мастеров пользуются pluso
    у меня для вас плохие новости…


    1. revisium
      14.10.2015 15:44

      Вы имеете ввиду это habrahabr.ru/post/231887? Там хотя бы треккеры встраиваются. Но все это, конечно, тоже зло.


      1. evnuh
        14.10.2015 17:54
        +1

        Компания, которая имеет полный доступ к вашему сайту (with great power comes great responsibility) и при этом что-то вставляет без вашего ведома туда, полностью должна терять любое доверие. Что бы они ни вставляли, что бы ни говорили, уже не важно.
        Ну и да, эти «счётчики» незабесплатно стоят в плюсо, это продажа трафика этим счётчикам и большие деньги. Трафика ваших сайтов, ваших пользователей, себе в карман.


  1. Invision70
    14.10.2015 20:51

    Меня смущает у сервиса ulogin куча фреймов, там тоже дела обстоят печально? Можно использовать?:)


  1. Fibril
    15.10.2015 06:21

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


    1. timurminulin
      15.10.2015 13:43

      А вы jQuery с гугловского CDN берете или тоже себе копируете? Или Google Fonts? Не говоря уж о JS-ках всякой аналитики типа mixpanel или платежек?


      1. alekciy
        15.10.2015 14:29

        Вы таки не поверите… но таки да!


      1. Fibril
        15.10.2015 14:33

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