Критическая уязвимость в W3 Total Cache позволяет неавторизованным злоумышленникам выполнять PHP-код

vulnerability

В популярном плагине для кэширования W3 Total Cache обнаружена опасная уязвимость, позволяющая выполнять произвольные команды на сервере без какой-либо аутентификации. Уязвимости присвоен идентификатор CVE-2025-9501. Её критический рейтинг по шкале CVSS составляет 9.0 баллов. Проблема затрагивает все версии плагина до 2.8.13 и была исправлена разработчиками в конце октября 2025 года.

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

Суть уязвимости заключается в недостаточной проверке входных данных в функции "_parse_dynamic_mfunc". Эта функция предназначена для обработки специальных комментариев "<!-- mfunc -->" в содержимом сайта, которые позволяют выполнять PHP-код для генерации динамического контента. Однако, механизм безопасности, призванный ограничить использование этой функции, был обойден.

Для эксплуатации уязвимости злоумышленнику необходимо знать значение секретного ключа "W3TC_DYNAMIC_SECURITY". Этот ключ определяется в файле конфигурации WordPress "wp-config.php". Как выяснилось, данный ключ не является надежной тайной. Его можно получить несколькими способами. Во-первых, ключ может присутствовать в исходном HTML-коде любой страницы сайта, если функция динамического кэширования уже использовалась ранее. Во-вторых, он может быть извлечен через публичные REST API endpoints, такие как "/wp-json/wp/v2/posts". В-третьих, ключ иногда раскрывается в сообщениях об ошибках на сайте.

Располагая этим ключом, атакующий может отправить на любой пост или страницу сайта обычный комментарий, содержащий вредоносную нагрузку (malicious payload). Полезная нагрузка имеет вид специального HTML-комментария, например: "<!-- mfunc xxxxxx -->$message = 1337;<!-- /mfunc xxxxxx -->", где "xxxxxx" - это секретный ключ. Когда WordPress отображает страницу с таким комментарием, плагин W3 Total Cache ошибочно интерпретирует его как законную инструкцию и выполняет PHP-код, заключенный внутри. Это позволяет злоумышленнику выполнить практически любую команду на сервере с правами веб-сервера.

Последствия успешной атаки могут быть крайне серьезными. Злоумышленник получает возможность кражи конфиденциальных данных, установки вредоносного ПО, создания бэкдоров (backdoor) для постоянного доступа (persistence) или шифрования файлов с помощью программ-вымогателей (ransomware). Учитывая, что для атаки не требуется учетная запись администратора, риск массового компрометирования сайтов значительно возрастает.

Данная уязвимость классифицируется как инъекция команд (CWE-78) и напрямую относится к категории A1: Injection в топ-10 рисков OWASP. Подобные уязвимости являются одними из самых опасных, поскольку часто приводят к полному захвату контроля над системой.

Разработчики плагина оперативно отреагировали на сообщение об уязвимости от исследователя под псевдонимом wcraft. В версии 2.8.13 была реализована необходимая проверка и санитизация входных данных, блокирующая возможность несанкционированного выполнения кода. Всем пользователям W3 Total Cache настоятельно рекомендуется немедленно обновить плагин до последней актуальной версии. В качестве временной меры защиты до момента обновления можно полностью отключить функцию динамического кэширования.

Этот инцидент в очередной раз подчеркивает важность регулярного обновления всех компонентов веб-сайта, включая плагины и темы. Кроме того, администраторам стоит пересматривать практики использования функций, выполняющих код на стороне сервера. Ключи безопасности, подобные "W3TC_DYNAMIC_SECURITY", не должны считаться абсолютной защитой, особенно если существует вероятность их утечки через публичные интерфейсы сайта. Регулярный аудит безопасности и мониторинг логов на предмет подозрительной активности остаются ключевыми элементами защиты.

Ссылки

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