Закрываем CVE-2018-6389 c помощью ModSecurity

Tретьего дня, исследователь Barak Tawily обнаружил в WordPress уязвимость, используя которую, злоумышленник может парализовать работу сайта. Проблема была продемонстрирована, уязвимости присвоен идентификатор CVE-2018-6389, однако сами разработчики WP исправлять её не спешат.

Проблема заключается в том, что к скрипту wp-admin/load-scripts.php, можно сформировать специальный запрос, в ответ на который скрипт вернёт большое количество данных. Соответственно, любой может взять какой-нибудь doser.py скрипт и сгенерировать им большое количество таких вот обращений.

Закрываем CVE-2018-6389.

CVE-2018-6389

Пока что, разработчики WordPress на данный момент не сочли проблему серьёзной, и нашедший уязвимость Barak Tawily сделал форк WP, где поправил проблему так, как счёл верным. Дополнительно, он подготовил BASH скрипт, который патчит текущую установку CMS. Минус применения такого скрипта в том, что внесённые им изменения, при обновлении WP могут быть удалены, так что вполне разумным здесь выглядит поиск другого решения, и оно было найдено — CVE-2018-6389 можно закрыть с помощью ModSecurity. Правило для модсека выглядит так:

SecRule REQUEST_URI "@rx (?i:/wp-admin/load-scripts.php?.*?(load%5B%5D|load\[\]|load%5B\]|load\[%5D)=([^&,]*,){20,})" "id:1,msg:'Potential use of CVE-2018-6389',deny"

Т. е. при попытке вызвать через скрипт load-scripts.php более 20 файлов, ModSecurity такой запрос заблокирует. Лимит в 20 файлов можно изменить на любое другое значение. Такой подход позволяет избежать проблем на сервере в случае, если кто-то решить воспользоваться уязвимостью и положить сайт на WP с её помощью.

О том как поставить ModSecurity на Nginx.
О найденной уязвимости, там же есть ссылки на все нужные скрипты.
О применении ModSecurity для защиты от CVE-2018-6389.

@SysadminNotes | https://sysadmin.pm

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *