Не все виджеты одинаково «полезны»
Иногда веб-мастера и владельцы сайтов добровольно (естественно, по незнанию) устанавливают себе на сайте компоненты, которые несут угрозу как посетителям, так и самому сайту. В основном это касается любителей халявы: бесплатные премиум шаблоны, “нулленые” коммерческие 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, добавив в доверенные только те источники кода и данных (хосты), в которых вы уверены. Это поможет избавиться в том числе и от «левых» переходов в статистике посещений сайта, что сейчас является достаточно частым явлением.
В завершении хотелось бы еще раз обратить внимание веб-разработчиков и владельцев сайтов на источники, из которых загружаются скрипты, виджеты и шаблоны. Не стоит устанавливать на сайт взломанные коммерческие компоненты и плагины, или бесплатные, но загруженные не с официального сайта или репозитория разработчика. Подобные простые правила значительно снизят вероятность добровольного размещения несанкционированной рекламы, бэкдоров, спам-ссылок, мобильного редиректа или вредоносного кода на своем сайте. Ну и, конечно, если вы используете виджеты с одного из перечисленных в статье доменов, лучше с сайта их убрать.