Найдена XSS-уязвимость, затрагивающая многочисленные плагины WordPress

Многочисленные плагины WordPress уязвимы для XSS-атак вследствие неправильного использования функций add_query_arg() и remove_query_arg(). Эти популярные функции применяются разработчиками для добавления и изменения строк запросов к URL в WordPress.

Официальная документация WordPress (Codex) для этих функций была не слишком понятной, что вводило в заблуждение многих разработчиков, вследствие чего они использовали эти функции небезопасным способом. Разработчики считали, что эти функции очистят пользовательский ввод за них, однако они этого не делали. Эта простая деталь привела к тому, что многочисленные плагины оказались уязвимыми для XSS-атак.

На данный момент уязвимыми являются следующие плагины:

  • Jetpack
  • WordPress SEO
  • Google Analytics by Yoast
  • All In one SEO
  • Gravity Forms
  • Плагины от Easy Digital Downloads
  • UpdraftPlus
  • WP-E-Commerce
  • WPTouch
  • Download Monitor
  • Related Posts for WordPress
  • My Calendar
  • P3 Profiler
  • Give
  • Многочисленные продукты iThemes, включая Builder и Exchange
  • Broken-Link-Checker
  • Ninja Forms

Скорее всего, есть и другие плагины, которые здесь не указаны. Если вы используете WordPress, мы настоятельно рекомендуем вам перейти к консоли и обновить их.

Данная проблема была изначально выявлена Joost из Yoast в одном из своих плагинов (он написал об этом отдельный пост). Мы вместе работали с ним над исследованием данной проблемы и пришли к выводу, что она, скорее всего, оказала влияние на гораздо большее количество плагинов, нежели один от Yoast.

Наша исследовательская группа, а также некоторые наши друзья (особенно Joost) изучили каталог плагинов, чтобы найти уязвимые плагины и уведомить их разработчиков – предупредить их о проблеме и помочь им ее исправить.

Скоординированное выявление

Эта уязвимость была первоначально обнаружена на прошлой неделе; вследствие различных уровней серьезности этой проблемы, а также в результате большого объема затронутых плагинов мы решили скоординировать свои усилия, чтобы выпустить общий релиз безопасности вместе со всеми разработчиками, а также командой безопасности WordPress. Мы проделали огромную работу, и нам было приятно видеть, сколько разработчиков объединилось ради общего блага. Мы можем с удовлетворением констатировать, что все плагины были поправлены, и сегодня с утра обновления уже должны быть доступны пользователям (да, все они были выпущены в унисон 2 часа назад).

Если вы используете WordPress, то теперь пришла ваша очередь обновить плагины!

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

Есть гораздо больше уязвимых плагинов

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

add_query_arg

remove_query_arg

Убедитесь в том, что вы очистили их перед использованием. Мы рекомендуем использовать для этих целей функции esc_url() или esc_url_raw(). Не надо предполагать, что add_query_arg и remove_query_arg автоматически очистят пользовательский ввод. Команда WordPress предложила расширенные инструкции, как использовать эти функции.

Время обновиться!

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

Также мы хотим напомнить вам, что любая программа может иметь ошибки, и некоторые из этих ошибок могут привести к уязвимости в безопасности. Такова жизнь. Это верно для плагинов, тем, веб-серверов, CMS, а также всего того, что написано людьми и основано на коде. Хотя разработчики и пытаются минимизировать ошибки и использовать безопасные методы кодирования, ошибки все равно происходили и произойдут. Мы просто должны быть готовы к такому повороту событий; нам нужно стараться снизить влияние уязвимости на нашу рабочую среду. Идеальный пример такого подхода – это то, что вы видели сегодня с выпуском скоординированного релиза.

Вот некоторые подсказки и приемы, которые помогут вам снизить риск угроз:

  1. Патчи. Поддерживайте свой сайт обновленным.
  2. Ограничения. Строгое управление доступом. Оградите свою админку от разных левых людей, задайте список белых IP-адресов. Предоставляйте администраторские полномочия только тем людям, которые действительно в этом нуждаются. Не входите в систему как администратор, если вам не нужно делать ничего, связанного с администрированием. Это некоторые примеры политики управления доступом, которая поможет вам минимизировать влияние уязвимостей на ваш сайт.
  3. Отслеживание. Отслеживайте свои логи. С их помощью можно будет понять, что произошло на сайте.
  4. Удаление всего лишнего. Используйте только те плагины (и темы), которые действительно требуются вашему сайту для успешной работы.
  5. Выявление. Предотвращение атак может не сработать, потому мы советуем вам всегда сканировать свой сайт на взлом или на использование устаревших программ. Наш плагин, а также Sitecheck помогут вам сделать это.
  6. Углубленная защита. Если вы имеете IPS или WAF, то в таком случае они могут блокировать самые распространенные XSS-эксплойты. Если вам нравится open source путь, вы можете попробовать OSSEC, Snort или ModSecurity.

Эти принципы обычно используются для создания безопасных сетей (а также в любом бизнесе, который должен быть PCI-совместимым), однако не все владельцы веб-сайтов учитывают их в своей работе.

Источник: https://blog.sucuri.net

Блог про WordPress
Комментарии: 7
  1. Михаил

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

    1. Дмитрий (автор)

      Попытки взлома всегда есть и будут. Цели просты: личная выгода, нажива, раскрутка своих ресурсов за счет чужих и т.д.

  2. petrozavodsky

    Отлично в моих проектах тоже нашлась уязвимость

  3. Елена

    Не думаю что если бы кто-то из нас умел бы программировать на таком уровне что бы совершать «атаки», то мы бы отказались. Это как алмазная резка бетона, на любое бетонное заграждение, найдется алмазный диск её уровня.

    1. Petrozavodsky

      Вы не поверите но многое умеют программировать именно так и не занимаются эксплуатацией багов

  4. Владимир

    Ну да…..примерчик удачный взяла.

  5. Андрей

    сайты всегда ломали и ломать будут, это тоже чья то работа, чей то хлеб.

Добавить комментарий для petrozavodsky Отменить ответ

Получать новые комментарии по электронной почте.