Независимый израильский ИБ-специалист Барак Тавайли (Barak Tawily) обнаружил и подробно описал в своем блоге критическую DoS-уязвимость в WordPress CMS. Баг получил идентификатор CVE-2018-6389 и представляет опасность для всех версий WordPress, вышедших за последние девять лет (включая наиболее свежий релиз 4.9.2).

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

 

В зависимости от установленных модулей и плагинов, load-scripts.php выборочно подгружает различные файлы JavaScript, чьи имена перечисляются через запятую после параметра «load». То есть URL должен выглядеть следующим образом:

https://your-wordpress-site.com/wp-admin/load-scripts.php?c=1&load=editor,common,user-profile,media-widgets,media-gallery

Так, во время загрузки сайта, load-scripts.php пытается отыскать каждый из перечисленных в URL файлов JavaScript, чтобы «отдать» их браузеру пользователя в виде одного файла.

Тавайли обнаружил, что атакующий может заставить load-scripts.php загрузить все возможные файлы JavaScript вообще, просто перечислив их в URL. Из-за этого атакуемый сайт может начать работать значительно медленнее, поглощая все больше и больше мощностей сервера. Разумеется, при помощи одного такого запроса злоумышленнику не удастся спровоцировать отказ в обслуживании, однако исследователь создал proof-of-concept эксплоит: простой скрипт doser.py, написанный на Python. Скрипт отправляет множество подобных запросов целевому URL. Примерно после 500 запроса средний сайт, работающий на VPS-сервере, перестает отвечать вовсе, «отдавая» лишь ошибки 502, 503 и 504.

Специалист отмечает, что с одного компьютера вряд ли удастся «положить» работающий под управлением WordPress сайт, расположенный на мощном, отдельном сервере, однако если в распоряжении атакующего есть широкий канал или несколько ботов, атака сработает и против такого ресурса, причем окажется менее затратной для злоумышленника, нежели обычный DDoS.

Видеодемонстрацию атаки можно увидеть ниже.

Хотя DoS-уязвимости не подпадают под bug bounty программу WordPress, Тавайли все же сообщил о проблеме разработчикам через платформу HackerOne. К сожалению, создатели WordPress не сочли обнаруженную уязвимость достаточно серьезной и сообщили, что решать такие проблемы нужно на уровне сервера или сети, но не на уровне приложений. То есть патча для этого бага не существует.

В ответ на это Барак Тавайли опубликовал на GitHub собственный форк WordPress, в котором уязвимость устранена. Также исследователь выложил в открытый доступ bash-скрипт, который позволяет исправить проблему в уже существующих установках WordPress.

7 комментариев

  1. webso

    07.02.2018 at 01:20

    В статье указан наиболее свежий релиз 4.9.2, но за сутки до публикации статьи мой Вордпресс на автомате обновился до версии 4.9.3, а уже сегодня я вижу доступным обновление до 4.9.4, так что, возможно, уязвимость уже залатали?

  2. djsmir

    11.02.2018 at 16:25

  3. IdFox

    11.02.2018 at 23:58

    Сча в рассылке пришло 🙂
    Вспомнил, а https://xakep.ru/ тоже теперь DDOS-ить будут, закрыли брешь? 🙂
    Скрипт то тоже на том же самом месте
    https://xakep.ru/wp-admin/load-scripts.php?c=1&load=editor,common

  4. skill

    04.04.2018 at 19:25

    В обновлении 4.9.5 (https://codex.wordpress.org/Version_4.9.5) пофиксили эту проблему, если правильно понимаю. Или нет?

Оставить мнение