ГлавнаяПлагиныКритическая уязвимость в популярном плагине FancyBox for WordPress

Критическая уязвимость в популярном плагине FancyBox for WordPress

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

Сайт содержит вредоносный код

Сайт содержит вредоносный код

Начали исследовать, смотреть. Google Webmaster Tools показал кусок JavaScript кода который вставляет элемент подгрузки сторонней страницы — iframe. Код выглядит примерно вот так:

if (navigator.userAgent.match(/ msie /i)) { doc​ument. write ('...') ...

Домен замечен был 203koko в еврозоне, но могут быть и другие. Вредоносного кода сразу найти не удалось, сам сайт ничего не показывал, как будто ничего не было. «Поковырявшись» еще несколько часов пытаясь вызвать показ букашки, был замечен свежая публикация на форумах WordPress.org. Узнав заветный «203koko» стали собираться всё больше и больше людей, попавших в схожую ситуацию.

Плагин FancyBox for WordPress

Спустя час обсуждения стало понятно, что объединяет нас один общий плагин под названием FancyBox for WordPress. Плагин выводит фотогалереи и другой контент в модальных окнах. Очень популярный плагин, более 500,000 скачиваний (+ 1000 скачиваний в неделю), но очень старый.

Посмотрев на логи кэшируемых страниц за последние сутки, был найден нужный кусок кода внутри вывода скриптов плагина FancyBox for WordPress, и стало понятно, что действительно FancyBox for WordPress замешан во всем этом.

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

Было решено тогда разобраться, как он туда мог попасть, и вскоре мы обнаружили уязвимость в функции сохранения настроек. Любой мог просто сохранить опции для плагина FancyBox for WordPress, включая опцию дополнительного вывода и содержания. Именно так туда и попал вредоносный код, а спустя некоторое время исчез. Возможно атакующие потихоньку лишь испытывали воды этой уязвимости прежде чем массово эксплуатировать.

Данный вид атаки называется хранимым межсайтовым скриптингом (Persistent XSS). Уязвимость является одной из самых распространенных.

Если у вас на сайтах используется FancyBox for WordPress (fancybox-for-wordpress) немедленно деактивируйте его. Плагин был скрыт из директории WordPress.org. Заметьте, что плагин не обновлялся 3 года, и хоть исправление уже существует и будет вскоре опубликовано, мы все равно не советуем продолжать пользоваться данным плагином.

Обновление: автор выложил два обновления к плагину FancyBox for WordPress. Первое (3.0.3) устраняет уязвимость в плагине, и второе (3.0.4) переименовывает ранее уязвимую опцию, что позволяет скрыть вставленный вредоносный код на уже зараженных сайтах. Если вы используете FancyBox for WordPress, рекомендуем обновиться до последней версии немедленно. Сделать это можно в панели администрирования WordPress в разделе Консоль → Обновления, или скачать новый дистрибутив плагина с сайта WordPress.org.

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

Чтобы обезопасить себя не забудьте скачать нашу бесплатную электронную книгу о безопасности в WordPress.

Будьте бдительными и удачи вам!

Подписаться на рассылку

Подписаться → Подпишитесь на бесплатную рассылку журнала WP Magazine и получайте новости, события, подборки тем и плагинов, уроки, советы и многое другое в мире WordPress!

  • А где же примеры кода, который позволил вот так просто сохранять произвольный контент и комментариикак именно это сработало? :) интересно с точки зрения того, чтобы в своих наработках и плагинах подобных ошибок не допускать, хоть и используется стандартный settings api.

    • Николай, технические детали уязвимости будут опубликованы мною в течении недельки-две вместе с патчем скорее всего. Уязвимость не сложно найти, и вероятно можно будет найти подробности уже через несколько дней.

    • versusbassz

      Просто используйте current_user_can и функции из семейства *_nonce_*.
      Думаю, этого должно хватить, чтобы исключить такие проблемы.

      • Так с использованием Settings API все это вроде как само делается :)

  • Кстати, а у wordpress есть какой-нибудь твиттер аккаунт или страница или еще какой-то канал по которому сообщают о всех найденных уязвимостях?

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

    • Нет, но есть адрес электронной почты plugins@wordpress.org, куда можно сообщать о таких уязвимостях :)

      • Спасибо. А в каком формате и на каком языке лучше (можно) сообщать? Тут один сайт взломали, меня попросили посмотреть в чем дело, я пока еще не разобрался что именно произошло, но на нем были плагины из директории WordPress. Возможно дело не в них, а например в теме, хотя она распространяется бесплатно с сайта разработчика (не файлопомойка).

        • На английском, в свободной форме :)

  • Alexander Khramov

    «Любой мог просто сохранить опции для плагина FancyBox for WordPress, включая опцию дополнительного вывода и содержания.»
    Не залогиниваясь и просто отправив составленный определенным образом запрос?

    • Да. Обычным анонимным POST запросом.

  • Дамир

    Добрый день обхясните плз как пользоваться плагином «fancybox for wordpress», мне нужно чтобы при нажатии на картинку в статье, она как появлялась в увеличенном размере как модальное окно.

    Я поставил «NextGEN Gallery by Photocrati» создал галерею, разместил её на странице, появились миниатюра картинок, потом поставил «fancybox for wordpress», жму по картинкам они открываются по своему чистому урл …url/kartinka.jpg а в модальном окне не открывает, целый день уже сижу перерыл все настроки nextegen. Вроде раньше в nextgen автоматом можно было картинки в модальном окне открывать, а сейчас нужно с помощью fancybox, в общем куда копать скажите плз?

  • Евгений

    Именно через него ко мне на сайт залез ISIS. Другой вопрос зачем им мой сайт(ответ есть, название похоже на американскую военную организацию).

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