Проблема затрагивает практически все версии WordPress, выпущенные за последние девять лет.
В WordPress обнаружена простая, но серьезная уязвимость на уровне приложения, позволяющая вызвать отказ в обслуживании и отключить множество сайтов. Как правило, для осуществления подобной DDoS-атаки на уровне сети нужны большие объемы трафика, однако недавно обнаруженная уязвимость позволяет добиться желаемого эффекта с помощью всего лишь одного компьютера.
Производитель отказывается выпускать исправление, поэтому уязвимость (CVE-2018-6389) присутствует практически во всех версиях WordPress, выпущенных за последние девять лет, в том числе в последнем стабильном релизе 4.9.2. Проблема была обнаружена израильским исследователем безопасности Бараком Тауили (Barak Tawily) и связана с тем, как встроенный в систему скрипт load-scripts.php обрабатывает определяемые пользователем запросы.
С помощью файла load-scripts.php администраторы могут улучшать производительность сайтов и повышать скорость загрузки страниц путем объединения (на стороне сервера) нескольких JavaScript-файлов в один запрос. Однако для включения load-scripts.php на странице администратора (wp-login.php) авторизация не требуется, то есть, функция доступна каждому.
В зависимости от установленных плагинов и модулей файл load-scripts.php выборочно вызывает необходимые файлы JavaScript, передавая их имена в параметр «load» через запятую, например: https://your-wordpress-site.com/wp-admin/load-scripts.php?c=1&load=editor,common,user-profil... .
При загрузке сайта load-scripts.php (упомянутый в начале страницы) пытается найти имя каждого файла JavaScript, указанного в URL-адресе, добавить их содержимое в один файл и отправить обратно браузеру пользователя.
По словам Тауили, злоумышленник может заставить load-scripts.php вызвать все возможные файлы JavaScript (то есть, 181 скрипт), передав их имена в URL-адресе. Таким образом атакующий сможет существенно замедлить работу сайта. Тем не менее, одного запроса недостаточно для того, чтобы полностью «положить» сайт. Поэтому Тауили использовал PoC-скрипт doser.py, отправляющий большое количество одновременных запросов на один и тот же URL-адрес, пытаясь использовать как можно больше ресурсов процессоров серверов и тем самым снизить их производительность.
Гравитация научных фактов сильнее, чем вы думаете