Плагин Gravity SMTP для WordPress оказался в центре масштабной атаки после того, как исследователи из Wordfence обнаружили в нём уязвимость с идентификатором CVE-2026-4020. Проблема получила оценку 5.3 по шкале CVSS (средняя степень серьёзности), однако на практике последствия для сайтов с настроенными email-интеграциями оказались куда серьёзнее, чем цифра в карточке CVE.
Суть бага проста до неприятного. В плагине зарегистрирован REST API эндпоинт по адресу /wp-json/gravitysmtp/v1/tests/mock-data, у которого параметр permission_callback безусловно возвращает true. То есть абсолютно любой посетитель без какой-либо авторизации может обратиться к этому адресу. Если добавить к запросу параметр ?page=gravitysmtp-settings, срабатывает метод register_connector_data(), который наполняет внутренние структуры данных коннектора, и в ответ прилетает JSON-файл весом около 365 килобайт. Внутри этого файла полный системный отчёт сайта плюс все сохранённые учётные данные: API-ключи, секреты, OAuth-токены для почтовых сервисов.
Wordfence в своём разборе сформулировали это так: «Когда к запросу добавляется параметр?page=gravitysmtp-settings, метод register_connector_data() плагина заполняет внутренние данные коннектора, вынуждая эндпоинт вернуть примерно 365 КБ JSON с полным системным отчётом.» На практике это значит, что любой скрипт, отправляющий один GET-запрос, получал конфигурацию всего сайта со всеми паролями и токенами.
Под угрозой оказались все сайты, использующие Gravity SMTP версий ниже 2.1.5, а таких насчитывается порядка 100 000 активных установок. Особенно уязвимы те, кто подключил сторонние почтовые сервисы через плагин: SendGrid, Mailgun, различные SMTP-провайдеры, OAuth-соединения. Если интеграции были настроены на момент возможной атаки, скомпрометированность учётных данных стоит считать свершившимся фактом, а не гипотезой.
Злоумышленники среагировали быстро. Первые попытки эксплуатации зафиксированы в начале мая 2026 года, но настоящий шквал атак начался около 6 июня 2026 года. На следующий день после пика счётчик Wordfence показывал свыше 4 000 000 запросов за сутки</b>. К дате публикации отчёта сервисы Wordfence заблокировали более 17 000 000 попыток эксплуатации суммарно.
Wordfence также зафиксировали конкретные IP-адреса, с которых шли атаки:
Про реальный ущерб Wordfence написали прямо: «В данном случае утечка действующих сторонних API-учётных данных означает, что злоумышленник может злоупотребить подключёнными к сайту почтовыми сервисами, тогда как детальный системный отчёт существенно снижает усилия, необходимые для планирования дальнейших атак на сайт.» Иными словами, даже если атакующий не стал немедленно рассылать спам через угнанный SendGrid-аккаунт, он получил подробную карту инфраструктуры: версии плагинов, конфигурацию сервера, установленные компоненты.
Патч вышел в версии 2.1.5. Обновить плагин надо было ещё вчера, но если это до сих пор не сделано, вот минимальный набор действий:
Суть бага проста до неприятного. В плагине зарегистрирован REST API эндпоинт по адресу /wp-json/gravitysmtp/v1/tests/mock-data, у которого параметр permission_callback безусловно возвращает true. То есть абсолютно любой посетитель без какой-либо авторизации может обратиться к этому адресу. Если добавить к запросу параметр ?page=gravitysmtp-settings, срабатывает метод register_connector_data(), который наполняет внутренние структуры данных коннектора, и в ответ прилетает JSON-файл весом около 365 килобайт. Внутри этого файла полный системный отчёт сайта плюс все сохранённые учётные данные: API-ключи, секреты, OAuth-токены для почтовых сервисов.
Wordfence в своём разборе сформулировали это так: «Когда к запросу добавляется параметр?page=gravitysmtp-settings, метод register_connector_data() плагина заполняет внутренние данные коннектора, вынуждая эндпоинт вернуть примерно 365 КБ JSON с полным системным отчётом.» На практике это значит, что любой скрипт, отправляющий один GET-запрос, получал конфигурацию всего сайта со всеми паролями и токенами.
Под угрозой оказались все сайты, использующие Gravity SMTP версий ниже 2.1.5, а таких насчитывается порядка 100 000 активных установок. Особенно уязвимы те, кто подключил сторонние почтовые сервисы через плагин: SendGrid, Mailgun, различные SMTP-провайдеры, OAuth-соединения. Если интеграции были настроены на момент возможной атаки, скомпрометированность учётных данных стоит считать свершившимся фактом, а не гипотезой.
Злоумышленники среагировали быстро. Первые попытки эксплуатации зафиксированы в начале мая 2026 года, но настоящий шквал атак начался около 6 июня 2026 года. На следующий день после пика счётчик Wordfence показывал свыше 4 000 000 запросов за сутки</b>. К дате публикации отчёта сервисы Wordfence заблокировали более 17 000 000 попыток эксплуатации суммарно.
Wordfence также зафиксировали конкретные IP-адреса, с которых шли атаки:
- []148.10.95.x (в источнике последний октет обрезан)
[]193.32.162.60
[]176.65.148.139
[]173.199.90.188
[]45.148.10.120
[]185.8.107.155
[]185.8.106.37
[]185.8.106.92
[]185.8.106.145
[]176.65.148.30
Про реальный ущерб Wordfence написали прямо: «В данном случае утечка действующих сторонних API-учётных данных означает, что злоумышленник может злоупотребить подключёнными к сайту почтовыми сервисами, тогда как детальный системный отчёт существенно снижает усилия, необходимые для планирования дальнейших атак на сайт.» Иными словами, даже если атакующий не стал немедленно рассылать спам через угнанный SendGrid-аккаунт, он получил подробную карту инфраструктуры: версии плагинов, конфигурацию сервера, установленные компоненты.
Патч вышел в версии 2.1.5. Обновить плагин надо было ещё вчера, но если это до сих пор не сделано, вот минимальный набор действий:
- []Обновить Gravity SMTP до версии 2.1.5 или выше.
[]После обновления сменить все учётные данные, которые хранились в плагине: API-ключи, SMTP-пароли, OAuth-токены, секреты. Менять нужно именно в том сервисе, где они выданы, а не только в настройках плагина.
[]Просмотреть серверные логи доступа на предмет GET-запросов к адресу /wp-json/gravitysmtp/v1/tests/mock-data?page=gravitysmtp-settings.
[]Прогнать логи по десяти IP из списка выше.
[]Оценить, какая именно информация из системного отчёта могла попасть к посторонним: версии всего установленного ПО, конфиги, данные о хостинге.