В Elementor Pro исправлена критическая уязвимость в модуле Forms, которая позволяла неавторизованным злоумышленникам загружать исполняемые PHP-файлы на сайты WordPress для RCE-атак. Версия 4.2.2 была выпущена в среду.
Уязвимость затрагивает все версии премиум-конструктора страниц, включая 4.2.1. Ее оценка по шкале CVSS составляет 9.0.
Согласно сообщению службы безопасности Patchstack, опубликованному в среду, весь баг сводится к одному ключевому слову. Поле загрузки файлов в Elementor Pro запускает два отдельных цикла для одних и тех же загруженных файлов: первый цикл проверяет расширения на наличие в списке блокировки, а второй перемещает файлы на диск. Если в форме есть необязательное поле для загрузки, и первая файловая запись в отправленной форме пуста, цикл проверки достигает оператора return и полностью завершается, вместо того чтобы использовать continue для пропуска пустой записи и продолжения валидации. Все последующие файлы остаются без проверки.
Цикл обработки, перемещающий файлы на диск, использует оператор continue. Он обходит пустую запись и продолжает работу, записывая следующий файл в публичный каталог без какой-либо валидации. PHP-данные, отправленные в качестве второго файла, пропускаются без ограничений.
Patchstack называет это «классической ошибкой рассинхронизации», отмечая, что ни один из циклов сам по себе не содержит ошибок. Компания, занимающаяся вопросами безопасности, также заявляет, что, поскольку ответ на запрос загрузки не возвращает путь к файлу, злоумышленнику потребуется восстановить имя файла. Сделать это не так трудно через брутфорс, используя заголовки ответа сервера, поскольку функция uniqid() в PHP основана на времени, а не на случайных числах.
Исправление в Elementor Pro 4.2.2 приводит оба цикла в должное соответствие и добавляет вторую проверку расширения внутри самой функции обработки, поэтому теперь список блокировки напрямую защищает этап перемещения файла.
Согласно данным Patchstack и Wordfence, единственным необходимым условием для эксплуатации уязвимости является наличие опубликованной страницы с виджетом Elementor Pro Form, содержащим необязательное поле File Upload. Собственно, уязвимы были различные формы отклика на вакансию, заявки в службу поддержки и все остальное, что принимает вложения.
В электронном письме, разосланном вчера подписчикам, компания Elementor сообщила, что уязвимость затрагивает только сайты, использующие форму с полем для загрузки файлов и включенной опцией множественной загрузки файлов, которая по умолчанию отключена.
«Все остальные сайты, использующие Elementor, не затронуты, однако мы по-прежнему рекомендуем обновиться до последней версии, чтобы снизить вероятность проблем с безопасностью и несовместимостью», — говорится в электронном письме компании. Elementor добавила, что «очень серьезно относится к безопасности своих пользователей» и незамедлительно приняла меры для решения проблемы.
Исследователь в области безопасности Тин Фам сообщил об уязвимости компании Patchstack 16 июля, и Patchstack в тот же день передала информацию о ней компании Elementor. Основатель Anchor Hosting Остин Гиндер независимо обнаружил и сообщил о той же уязвимости компании Wordfence 24 июля, заработав вознаграждение в размере 15 600 долларов в рамках программы Wordfence Bug Bounty.
После того, как Elementor подтвердил, что другой исследователь уже сообщил об уязвимости, Wordfence больше не использует для нее свою идентификацию CVE, приняв идентификатор, присвоенный в результате раскрытия информации на Patchstack.
В этом году Гиндер радикально продвинулся в сфере безопасности WordPress, раскрыв информацию о четырех атаках на цепочку поставок плагинов за один месяц.
Генеральный директор Patchstack Оливер Силд призвал пользователей Elementor Pro оперативно обновиться, добавив, что на сайтах, использующих Patchstack, уязвимость уже автоматически устранена. Elementor и Patchstack объявили о партнерстве в сентябре 2025 года, в рамках которого сканирование уязвимостей от Patchstack будет интегрировано в размещенный продукт Elementor.
Эта информация появилась всего через неделю после того, как в WordPress 7.0.4 была исправлена уязвимость удаленного выполнения кода (RCE) на уровне автора через Imagick. Это был третий релиз безопасности ядра за четыре недели.
Владельцам сайтов, использующим уязвимую версию с публичной формой загрузки файлов, следует проверить папку wp-content/uploads/elementor/forms/ на наличие файлов .php или других типов файлов, которые их формы не должны принимать.
