CVE-2025-35939
Craft CMS Craft CMS
2025-06-02
Craft CMS contains an external control of assumed-immutable web parameter vulnerability. This vulnerability could allow an unauthenticated client to introduce arbitrary values, such as PHP code, to a known local file location on the server. This vulnerability could be chained with CVE-2024-58136 as represented by CVE-2025-32432.
Технический анализ и план устранения
Суть уязвимости
CVE-2025-35939 представляет собой критическую уязвимость типа «External Control of Assumed-Immutable Web Parameter» (внешнее управление параметром, который должен быть неизменяемым). В Craft CMS данная проблема позволяет неавторизованному злоумышленнику манипулировать входными данными и записывать произвольные значения (включая вредоносный PHP-код) в локальные файлы на сервере.
Опасность уязвимости усиливается тем, что она может быть использована в цепочке с CVE-2024-58136 (представленной как CVE-2025-32432). Это позволяет атакующему добиться удаленного выполнения кода (RCE), фактически захватив контроль над веб-сервером через манипуляцию путями и параметрами, которые система ошибочно считает доверенными.
Как исправить
Основным и наиболее надежным способом устранения уязвимости является обновление Craft CMS до безопасных версий, в которых исправлена логика обработки параметров.
- Перейдите в корневую директорию вашего проекта:
cd /path/to/your/craft-project
- Запустите обновление через Composer до версии 4.13.3, 5.5.3 или выше:
composer update craftcms/cms
- Если вы используете Docker, пересоберите образ после обновления
composer.lock:
docker-compose build --no-cache
- Проверьте текущую версию Craft CMS, чтобы убедиться, что патч применен:
./craft help
Временные меры
Если немедленное обновление невозможно, необходимо минимизировать риски с помощью настроек окружения и средств защиты сети.
-
Ограничьте права записи для пользователя, от имени которого работает веб-сервер (например,
www-data), запретив запись в директории, где не предполагается хранение пользовательского контента. -
Настройте Web Application Firewall (WAF) для блокировки подозрительных запросов, содержащих попытки внедрения PHP-кода или манипуляции путями (Path Traversal).
-
Временно запретите выполнение PHP-скриптов в директориях, предназначенных только для загрузки файлов (например,
web/uploadsилиstorage), через конфигурацию Nginx:
location ~* ^/(uploads|storage)/.*\.php$ {
deny all;
}
- Убедитесь, что опция
allow_url_includeвphp.iniвыключена:
allow_url_include = Off