Новая уязвимость в ядре WordPress позволила анонимному посетителю оставить комментарий, который внедрил скрытый скрипт на страницу. Если вошедший в систему администратор позже открыл эту страницу, скрипт мог выполнить код на сервере сайта.
WordPress исправил уязвимость, отслеживаемую как CVE-2026-93485 и названную "Comment2Shell", 17 сентября в версии 7.1.1 и призвал владельцев сайтов обновить свои версии немедленно. Нет никаких признаков того, что она использовалась в атаках, и она не находится в списке активно эксплуатируемых уязвимостей программного обеспечения правительства США.
Patchstack, компания, присвоившая этот идентификатор, оценила уязвимость на 7.1 из 10 по шкале CVSS.
WordPress проверяет комментарий на наличие опасного HTML при его сохранении, а затем переформатирует его при отображении страницы, и уязвимость находилась в промежутке между этими двумя шагами.
Рафие Мухаммад, исследователь безопасности, который сообщил об ошибке, изложил полную цепочку в статье 21 сентября. Трюк заключался в переносе строки, размещенном внутри атрибута разрешенного HTML-тега в комментарии.
Когда WordPress переформатировал комментарий для отображения, один из его шагов разорвал этот тег и переместил текст злоумышленника в место, где браузер воспринимал его как обработчик событий. Обработчик запускался автоматически при загрузке страницы, без необходимости клика.
Скрипт выполнялся в браузере того, кто открыл страницу, независимо от того, был ли он авторизован, и действовал с уровнем доступа этого человека к сайту.
Для выполнения кода на сервере требовалось еще одно условие. Вошедший в систему администратор должен был открыть страницу с комментарием.
Скрипт затем мог использовать сессию администратора для загрузки плагина, содержащего веб-оболочку, небольшой файл, который выполняет любые команды, отправленные злоумышленником. Загрузка плагина таким образом является известным способом получения контроля над сервером из браузера администратора.
Атака также зависела от того, как сайт отображал свои комментарии. Она работала на сайтах, использующих блочную тему или классическую тему, которая форматирует комментарии одинаково, и не работала на других.
Чтобы это произошло, комментарий сначала должен был появиться на странице. WordPress описал уязвимость как эксплуатируемую только "при условии одобрения комментария".
Но модерация комментариев отключена по умолчанию, и настройка, удерживающая первого комментатора, может быть обойдена, поэтому комментарий мог попасть на страницу без одобрения. Как выразился Patchstack, "модерация не является средством безопасности".
Что делать
Обновите WordPress до версии 7.1.1 или до последнего релиза в вашей ветке, если она все еще получает исправления безопасности. Затронутые версии варьируются от 4.7 до 7.1, и вот исправленные релизы для текущих веток:
WordPress 7.1: обновите до 7.1.1
WordPress 7.0: обновите до 7.0.5
WordPress 6.9: обновите до 6.9.8
Старые ветки, начиная с 4.7: установите исправленный релиз для вашей ветки, начиная с 4.7.36, указанный для каждой ветки в документации по релизам WordPress.
Сайт, который не может обновиться сразу, может закрыть возможность комментирования на постах или отключить комментарии по всему сайту, а веб-приложение брандмауэр или плагин безопасности могут заблокировать созданный комментарий.
Ни WordPress, ни исследователь не опубликовали отдельное решение. Обновление исправляет уязвимость, но не отменяет никаких изменений, которые уже внес злоумышленник. Сайту, у которого есть основания полагать, что он был нацелен, также следует искать плагины или файлы, которые он не распознает.
WordPress 7.1.1 исправил 11 проблем безопасности в целом. Эта уязвимость комментария была единственной, к которой злоумышленник без учетной записи мог получить доступ, и большинство других требовали вошедшего пользователя с некоторым уровнем доступа.
Тот же релиз исправил вторую уязвимость, названную Click2Shell, при которой созданная ссылка могла заставить WordPress установить тему и, вместе со второй уязвимостью в этой теме, выполнить код на сервере. Она также требовала, чтобы вошедший в систему администратор открыл ссылку.
В этом году в ядре WordPress были и другие серьезные уязвимости. В июле ошибка под названием wp2shell позволила злоумышленникам выполнять код без входа в систему, и позже власти США включили ее в список использовавшихся в реальных атаках.
В августе исследователи использовали уязвимость в скрипте на странице входа, чтобы выполнить код от имени администратора. Эти уязвимости не связаны с ошибкой комментария.
Считаете эту статью интересной? Подписывайтесь на нас в Google News, Twitter и LinkedIn, чтобы читать больше эксклюзивного контента, который мы публикуем.