Независимый израильский ИБ-специалист Барак Тавайли (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 должен выглядеть следующим образом:
Так, во время загрузки сайта, 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.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах