Как анонимный комментарий мог захватить сервер WordPress?

Уязвимость Comment2Shell в ядре WordPress позволяла незарегистрированному посетителю отправить комментарий со скрытым вредоносным сценарием. Когда страницу открывал администратор с активной сессией, сценарий получал возможность действовать от его имени и в конечном счёте выполнять команды на сервере. Так хранимая межсайтовая атака XSS через анонимный комментарий могла перерасти в удалённое выполнение кода, или RCE.
Как анонимный комментарий мог захватить сервер WordPress?
Изображение носит иллюстративный характер

Ошибка получила идентификатор CVE-2026-93485 и оценку 7,1 из 10 по шкале CVSS. Её обнаружил и описал исследователь Рафие Мухаммад (Rafie Muhammad), а идентификатор CVE присвоила компания Patchstack. WordPress исправил уязвимость 17 сентября 2026 года; основной защищённой версией стала WordPress 7.1.1. Подробный технический разбор Мухаммад опубликовал 21 сентября. На тот момент свидетельств применения Comment2Shell в настоящих атаках не было, и уязвимость не входила в правительственный перечень США с подтверждённо эксплуатируемыми ошибками.
Проблема находилась на стыке двух операций. При сохранении комментария WordPress проверял HTML и считал содержимое безопасным. Позднее, во время вывода страницы, движок заново форматировал тот же текст. Злоумышленник помещал перенос строки внутрь атрибута разрешённого HTML-тега. Один из этапов форматирования разрывал тег, перемещал управляемый атакующим фрагмент и заставлял браузер воспринимать его как действующий обработчик события. Сценарий запускался уже при загрузке страницы: щёлкать по ссылке или кнопке не требовалось.
Код выполнялся в браузере любого посетителя, увидевшего заражённый комментарий, даже если тот не вошёл в WordPress. Разница заключалась в правах. У обычного или неавторизованного читателя сценарий почти не получал полезных возможностей, зато открытая административная сессия меняла ситуацию. Вредоносный код мог отправлять запросы к WordPress с полномочиями администратора, используя его действующие cookies и доступные административные функции.
Для захвата сервера требовалась конкретная цепочка. Атакующий публиковал подготовленный комментарий, тот становился видимым на сайте, после чего страницу открывал вошедший в систему администратор. Сценарий через его сессию загружал вредоносный плагин WordPress, внутри которого находилась веб-оболочка — небольшой файл, принимающий и исполняющий команды злоумышленника. Установка плагина из браузера администратора давно известна как путь от захвата веб-сессии к управлению сервером.
Эксплуатация зависела от способа показа комментариев. Уязвимыми были сайты с блочными темами, ставшими стандартом WordPress начиная с Twenty Twenty-Two. Некоторые классические темы тоже пропускали комментарии через опасный этап обработки; Рафие Мухаммад отдельно назвал Twenty Twenty-One. Полная атака требовала, чтобы сайт использовал такой путь вывода, преобразовал подготовленный текст в активный обработчик события и показал страницу авторизованному администратору.
WordPress описал эксплуатацию как возможную «при условии одобрения комментария». По стандартным настройкам сообщение нового автора сначала отправляется на модерацию и не публикуется, пока его не одобрят. Мухаммад, однако, описал способы обойти это ограничение и добиться показа комментария без одобрения. Patchstack сформулировала проблему жёстко: «Модерация не является средством защиты». Закрытая очередь комментариев могла снизить вероятность атаки, но не заменяла исправление кода.
Comment2Shell затрагивала версии WordPress с 4.7 по 7.1. Для ветки 7.1 исправление вошло в 7.1.1, для 7.0 — в 7.0.5, для 6.9 — в 6.9.8. Поддерживаемые старые ветки получили отдельные безопасные выпуски вплоть до 4.7.36. Полный перечень версий для каждой ветки опубликован в документации к релизам WordPress. Владельцу сайта следует устанавливать последний защищённый выпуск именно своей поддерживаемой ветки, хотя переход на актуальную версию остаётся предпочтительным вариантом.
Если немедленное обновление невозможно, риск можно временно уменьшить: закрыть комментарии у публикаций, отключить их на всём сайте, настроить межсетевой экран веб-приложений (WAF) либо защитный плагин, способный распознать специально сформированный ввод. Отдельного официального обходного решения ни WordPress, ни Рафие Мухаммад не опубликовали. Основная рекомендация одна: обновить ядро до WordPress 7.1.1 или последнего безопасного выпуска используемой ветки. Мухаммад отдельно напомнил, что 7.1.1 выпущена именно как обновление безопасности.
Всего WordPress 7.1.1 устранил 11 уязвимостей. Comment2Shell была единственной среди них, для первоначального доступа к которой атакующему не требовалась учётная запись. Большинство остальных ошибок предполагало наличие авторизованного пользователя и уже выданного ему уровня доступа. В тот же релиз вошло исправление Click2Shell: злоумышленник создавал специальную ссылку, а вошедший администратор при её открытии мог невольно запустить установку темы. В сочетании со второй слабостью этой темы цепочка приводила к выполнению кода на сервере. Как и Comment2Shell, атака зависела от действия администратора, но вместо страницы с комментарием ему требовалось открыть подготовленную ссылку.
В том же году ядро WordPress уже сталкивалось с двумя отдельными серьёзными проблемами. В июле уязвимость wp2shell позволяла выполнять код вообще без входа в систему; позднее власти США внесли её в перечень ошибок, использовавшихся в реальных атаках. В августе исследователи превратили скриптовую уязвимость на странице входа WordPress в выполнение кода через администратора. Ни wp2shell, ни августовская ошибка страницы входа не были связаны с Comment2Shell.
Установка обновления закрывает CVE-2026-93485, но не удаляет последствия уже состоявшегося взлома. Если подозрительный комментарий публиковался, администратор открывал соответствующую страницу или на сервере появились необъяснимые изменения, нужно проверить список плагинов, найти незнакомые и несанкционированные расширения, просмотреть файлы сайта и журналы запросов. Особого внимания требуют неизвестные PHP-файлы, недавно изменённые системные компоненты WordPress и любые следы веб-оболочки или посторонних команд на сервере.


Новое на сайте

Ссылка