В плагине Elementor Website Builder для WordPress нашли CSRF-уязвимость высокой степени опасности: непривилегированный атакующий может заставить вошедшего в админку пользователя выполнить произвольное действие REST API, а на стандартной установке — создать себе вторую учётную запись администратора. Оценка по CVSS — 8.8 из 10.0, идентификатор CVE пока не присвоен.
Проблема затрагивает только версии 4.3.0 и 4.3.1. Плагин активен более чем на 10 млн сайтов под WordPress, при этом, по статистике WordPress.org, две уязвимые версии установлены более чем на 2 млн сайтов. Исправление вышло в версии 4.3.2 в начале недели, автор находки — исследователь под псевдонимом Saggre.
Как работает обход защиты в Editor Events
Причину описал вендор Patchstack: модуль Editor Events пропускает проверку CSRF для REST-запросов, аутентифицированных cookie, каждый раз, когда в URI запроса встречается строка elementor/v1/events/. Поскольку URI включает строку запроса, а её пишет тот, кто составляет ссылку, любой REST-запрос может сам снять с себя защиту, добавив безобидный на вид параметр.
Обход действует на всю поверхность REST API сайта — и на маршруты ядра WordPress, и на маршруты всех остальных установленных плагинов. Для создания администратора достаточно обратиться к /wp/v2/users запросом вида:
https://example.com/wp-json/wp/v2/users
?_method=POST
&username=csrfadmin
&email=csrfadmin%40example.test
&password=...
&roles%5B%5D=administrator
&x=elementor/v1/events/
Атака не требует ни JavaScript, ни отправки формы, ни страницы под контролем злоумышленника. Достаточно обычного тега-ссылки в письме, сообщении в чате или комментарии: открывший её авторизованный пользователь сам выполнит запрос.
Кого затрагивает и что делать
Уязвимы только версии 4.3.0 и 4.3.1. Сборки Elementor до 4.3.0 не содержат прокси Editor Events, поэтому под эту дыру не попадают. Всем остальным вендор советует обновиться до 4.3.2 как можно скорее.
Практика для администратора WordPress здесь простая: обновление плагина закрывает вектор, но проверка на уже созданные учётные записи не помешает. Стоит просмотреть список пользователей с ролью administrator и убедиться, что среди них нет незнакомых. Если обновиться прямо сейчас нельзя, разумно ограничить доступ к wp-json на уровне веб-сервера или WAF и напомнить сотрудникам с доступом в админку, что незнакомые ссылки открывать в авторизованной сессии не стоит.
Схожая логика «одного клика» уже встречалась в других веб-продуктах: например, недавняя уязвимость в Roundcube эксплуатировалась до входа в систему, а path traversal в GitLab с максимальным баллом позволял читать файлы без аутентификации. Общий вывод один: веб-приложения с широкой установкой остаются приоритетной целью, и задержка с патчем здесь дороже, чем в среднем по парку ПО.
Для российских компаний, которые держат корпоративные сайты и блоги на WordPress, ситуация стандартная: Elementor — один из самых распространённых конструкторов страниц, и обновлять его приходится вручную, если отключён автоапдейт плагинов. Внутренние порталы и клиентские сайты на WordPress стоит проверить в первую очередь, а заодно убедиться, что в штате нет лишних администраторов.
Частые вопросы
Кого касается эта уязвимость?
Только сайты на WordPress с плагином Elementor версий 4.3.0 и 4.3.1. Если установлена более старая версия или уже обновились до 4.3.2, дыра неактуальна.
Как проверить свою версию Elementor?
Откройте список плагинов в админке WordPress — номер версии указан рядом с названием. Либо посмотрите файл wp-content/plugins/elementor/readme.txt на сервере.
Что делать, если обновиться нельзя?
Ограничьте доступ к маршрутам wp-json средствами веб-сервера или WAF и предупредите администраторов, чтобы не открывали незнакомые ссылки в активной сессии. Это снижает риск, но не заменяет патч.
Нужен ли злоумышленнику доступ к сайту?
Нет, он неаутентифицирован. Уязвимость эксплуатируется через уже авторизованного администратора, который открывает подготовленную ссылку.
Присвоен ли уязвимости CVE?
На момент публикации идентификатор CVE не присвоен. Известна оценка CVSS — 8.8 из 10.0.
Как понять, что сайт уже скомпрометирован?
Проверьте список пользователей с ролью administrator в админке WordPress. Появление незнакомой учётной записи — прямой признак эксплуатации.
Затронуты ли другие плагины на сайте?
Обход действует на всю поверхность REST API: и на маршруты ядра WordPress, и на маршруты всех остальных установленных плагинов. То есть через эту дыру можно выполнить любое действие, разрешённое учётной записи администратора.
Помогает ли защита от CSRF в браузере или антивирус?
Нет. Атака не использует JavaScript, формы или сторонние страницы — достаточно обычной ссылки в письме, чате или комментарии.
Источник: thehackernews.com