Обработка изображений в Gravity Forms для WordPress позволяет загружать произвольные файлы

vulnerability

Плагин Gravity Forms для системы управления содержимым сайта WordPress до версии 2.9.21 содержит уязвимость, которая позволяет загрузить на сервер произвольный файл и выполнить его как код. Проблеме присвоен идентификатор CVE-2025-12352, она включена в Банк данных угроз безопасности информации под номером BDU:2026-14200. Уровень опасности оценивают как критический, поскольку злоумышленнику не нужны ни учётная запись на сайте, ни действия пользователя.

Детали уязвимости

Gravity Forms - коммерческий конструктор форм. С его помощью владельцы сайтов собирают заявки, заказы, анкеты и опросы без программирования. Формы принимают от посетителей файлы: резюме, фотографии, сканы документов. Плагин установлен на десятках тысяч сайтов, среди них интернет-магазины, медиа, образовательные проекты и государственные порталы. Поэтому одна ошибка в коде затрагивает широкий круг организаций.

Ошибка кроется в служебной функции, которая копирует изображения, прикреплённые к записям формы. При копировании код не проверяет тип и расширение принимаемого файла. Значит, вместо картинки злоумышленник может отправить исполняемый файл. Сервер примет его и сохранит в каталоге, доступном из интернета. Затем остаётся обратиться к этому файлу по прямой ссылке. В этот момент код выполнится на сервере с правами веб-приложения.

Тип ошибки специалисты относят к неограниченной загрузке файлов опасного типа. Такой класс проблем относят к уязвимостям архитектуры: защита не предусмотрена на уровне логики приложения. Согласно бюллетеню, способ эксплуатации - злоупотребление функционалом. Иными словами, злоумышленник не обходит защиту взломом, а пользуется штатной возможностью, которую разработчики не ограничили. Отдельного упоминания требует доступность этой уязвимости. Атака проводится удалённо, не требует привилегий и не нуждается в том, чтобы кто-то открыл ссылку или нажал кнопку. Все условия выполняются автоматически на стороне сервера. Для массовых сканирований это удобная цель: проверить наличие расширения и отправить запрос можно без ручной работы.

Контекст здесь важнее самой ошибки. WordPress занимает значительную долю сайтов в мире, и почти каждый владелец ставит дополнительные плагины. Каждое такое расширение расширяет поверхность атаки. Ядро платформы обновляют регулярно, а расширения нередко остаются без внимания месяцами. В результате именно плагины чаще всего становятся причиной компрометации сайта.

Последствия успешной эксплуатации тяжелы. Злоумышленник получает выполнение кода на сервере. Дальше он может читать базу данных сайта вместе с учётными данными пользователей, менять содержимое страниц, добавлять перенаправления и скрытые сценарии. Скомпрометированный сайт часто используют как площадку для доставки вредоносного ПО посетителям. На общем хостинге возможен и выход за пределы одного аккаунта. Есть и репутационная составляющая. Посетители доверяют знакомому домену и не проверяют, кто именно разместил скачиваемый файл. Если через сайт распространяется вредоносная программа, потери несёт владелец ресурса. Кроме того, поисковые системы помечают взломанные сайты как небезопасные, что снижает трафик и доход от рекламы.

Данные о реальных атаках пока уточняются. Подтверждения массовой эксплуатации в открытых источниках нет. Однако после публикации технических деталей у злоумышленников обычно появляются готовые инструменты. Как правило, проходит от нескольких дней до нескольких недель, прежде чем сканеры начинают массово искать уязвимые сайты. Учитывая, что проверка не требует подготовки, промедление с обновлением повышает риск.

Исправление уже доступно. В версии 2.9.21 разработчик закрыл проблему, вендор подтвердил её наличие в более ранних выпусках. Владельцам сайтов следует обновить плагин до 2.9.21 или более поздней версии. Сделать это можно через панель управления WordPress, включив автоматические обновления для расширений. Если автообновление отключено, установку проводят вручную. Если обновление по каким-то причинам невозможно, разумно временно деактивировать плагин. Альтернатива - отключить поля загрузки файлов в формах. Также стоит ограничить доступ к каталогу загрузок на уровне веб-сервера. После обновления полезно просмотреть содержимое этого каталога и поискать файлы, которых там быть не должно.

Проверка журналов веб-сервера помогает выявить попытки эксплуатации. Признаки - запросы к файлам с расширениями сценариев, размещённым в каталоге загрузок. Обращать внимание стоит и на необычную активность в формах: массовые отправки, вложения нетипичного размера, однотипные имена файлов. Такие сигналы полезно фиксировать даже при отсутствии явных следов компрометации.

Расширения для WordPress остаются категорией, где уязвимости встречаются чаще всего. Ошибка в одном плагине способна свести на нет усилия по защите всего сайта. Регулярное обновление расширений, контроль за их составом и отказ от заброшенных плагинов снижают этот риск заметнее, чем большинство точечных мер.

Ссылки

Комментарии: 0