В популярном плагине Forminator Forms для WordPress раскрыли критическую уязвимость, позволяющую удаленному пользователю без учетной записи загружать на сервер файлы потенциально опасных типов. При подходящей конфигурации сайта через нее можно добиться выполнения PHP-кода и захватить WordPress. Ошибка получила идентификатор CVE-2026-15748 и оценку 9,8 балла из 10 по CVSS.
Проблема затрагивает Forminator 1.56.1 и все предыдущие версии. Разработчики WPMU DEV выпустили исправление в 1.56.2 31 июля. Сам плагин установлен более чем на 600 тыс. сайтов. Данные WordPress, которые приводит SecurityWeek, показывали 18 августа, что примерно половина установок все еще использовала уязвимые версии. Отсюда оценка более чем в 300 тыс. потенциально затронутых сайтов.
Для эксплуатации CVE-2026-15748 на опубликованной форме должны одновременно присутствовать поле File Upload для загрузки файлов и поле Select с выбором значения. Для непосредственного выполнения загруженного PHP требуется ещё одно условие, связанное с каталогом хранения файлов.
В стандартной конфигурации Forminator помещает загрузки в каталог, где .htaccess запрещает исполнение PHP. Если администратор настроил Custom File Upload Storage, пользовательский каталог при определённых обстоятельствах может остаться без такой защиты. Тогда достаточно обратиться к загруженному PHP-файлу, и веб-сервер может его выполнить.
Подтвержденных случаев эксплуатации CVE-2026-15748 в реальных атаках на момент публикации нет.
Forminator — конструктор форм от WPMU DEV. Через него владельцы WordPress создают формы обратной связи, регистрации, оплаты, опросы, тесты и формы с загрузкой файлов. У плагина более 600 тыс. активных установок.
CVE-2026-15748 находится в механизме обработки загрузок. Wordfence связывает ошибку с функцией handle_file_upload(), недостаточно строгой проверкой типов файлов и особенностью обработки данных, приходящих из поля Select.
В нормальной ситуации конфигурацию поля загрузки определяет администратор формы. Именно она задаёт разрешённые расширения и типы файлов.
Уязвимый код позволял внешнему отправителю формы подложить собственную структуру данных таким образом, чтобы она дальше обрабатывалась как конфигурация поля Upload. Для доставки этой поддельной записи использовалось поле Select. Это объясняет странное на первый взгляд требование к форме: для атаки нужны одновременно Select и File Upload.
Сам Select никакого отношения к файлам не имеет. Его внутренняя обработка позволяла передать вложенную структуру данных по пути, которым затем пользовался механизм загрузки. Настоящее поле File Upload необходимо, чтобы Forminator вообще запустил этап обработки файлов.
После подмены конфигурации оставалась еще одна преграда — Forminator запрещает загрузку исполняемых и потенциально опасных файлов.
В плагине есть список запрещенных расширений: среди них php, php3, php4, php5, phtml, js, exe, sh, py и другие типы. Проблема оказалась в способе их сравнения.
Проверка сопоставляла ключи списка с запрещенными значениями буквально. Исследователь обнаружил, что вариант MIME-сопоставления с альтернативной записью расширения не совпадал со строкой php при проверке блок-листа, но затем всё равно интерпретировался WordPress как подходящий для файла .php.
Wordfence приводит пример конструкции ph(p)|text/x-php. Для защитной проверки это уже не буквальная строка php, поэтому запись могла пройти фильтр. Последующая проверка типа файла при этом воспринимала шаблон как соответствующий расширению .php.
Итоговая цепочка выглядит так: атакующий отправляет опубликованную форму, использует Select для подделки внутренней записи Upload, передает собственную конфигурацию допустимых типов и загружает PHP-файл, который штатная блокировка должна была остановить.
Авторизация в WordPress для этого не требуется. Вектор CVSS у CVE-2026-15748 прямо указывает сетевую атаку без привилегий и без участия пользователя: AV:N/AC:L/PR:N/UI:N.
По умолчанию Forminator сохраняет файлы в каталог с .htaccess, запрещающим веб-серверу выполнять PHP. Поэтому успешный обход фильтра типов еще не гарантирует удаленное выполнение кода.
Сценарий становится опаснее, если владелец сайта использовал Custom File Upload Storage root. Исследование Wordfence показало, что такой пользовательский каталог может создаваться при первом запросе с внешней стороны сайта, когда вспомогательная функция WordPress, отвечающая за запись защитного .htaccess, еще не загружена. Каталог в результате способен остаться без запрета на исполнение PHP.
После этого загруженный скрипт можно вызвать обычным запросом по его адресу. Если веб-сервер настроен на исполнение PHP в этом каталоге, код запускается с правами процесса, обслуживающего сайт. Wordfence оценивает такой сценарий как возможность удалённого выполнения кода и полного захвата сайта.
Именно поэтому CVE получила максимальные показатели влияния на конфиденциальность, целостность и доступность в своей оценке CVSS.
SecurityWeek пишет, что Forminator установлен более чем на 600 тыс. сайтов, а около половины активных установок на момент проверки оставались на версиях 1.56.1 и старше. Издание поэтому оценивает потенциально затронутую аудиторию более чем в 300 тыс. сайтов. Реальное число ресурсов, где возможна конкретная цепочка CVE-2026-15748, должно быть меньше.
Сначала сайт должен оставаться на версии не новее 1.56.1. Также на нем должна быть опубликована форма одновременно с Select и File Upload. Wordfence называет это обязательным условием эксплуатации. Для конечного сценария с исполнением PHP значение имеет уже конфигурация файлового хранилища и веб-сервера. Стандартный защищённый каталог мешает исполнению загруженного скрипта.
CVE-2026-15748 обнаружил исследователь под псевдонимом daroo и передал через программу вознаграждений Wordfence. Размер выплаты составил $2048.
CVE-2026-15748 появилась не в изоляции. В базе Wordfence у Forminator за последние недели опубликовано ещё несколько ошибок безопасности.
CVE-2026-18325 получила оценку 7,2. Это хранимая межсайтовая вставка сценария без авторизации, также затрагивающая Forminator до 1.56.1 включительно. Исследователем указан daroo.
CVE-2026-28111 с оценкой 8,8 позволяла пользователю с ролью Contributor или выше повысить привилегии. Она затрагивает версии до 1.56.0 включительно.
Еще одна ошибка — CVE-2026-28143 с оценкой 7,2 — представляла собой хранимую межсайтовую вставку сценария без авторизации в версиях до 1.56.0. Ее также обнаружил daroo.
Есть новость? Станьте автором.
Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.