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 до безопасных версий, в которых исправлена логика обработки параметров.

  1. Перейдите в корневую директорию вашего проекта:
cd /path/to/your/craft-project

  1. Запустите обновление через Composer до версии 4.13.3, 5.5.3 или выше:
composer update craftcms/cms

  1. Если вы используете Docker, пересоберите образ после обновления composer.lock:
docker-compose build --no-cache

  1. Проверьте текущую версию Craft CMS, чтобы убедиться, что патч применен:
./craft help

Временные меры

Если немедленное обновление невозможно, необходимо минимизировать риски с помощью настроек окружения и средств защиты сети.

  1. Ограничьте права записи для пользователя, от имени которого работает веб-сервер (например, www-data), запретив запись в директории, где не предполагается хранение пользовательского контента.

  2. Настройте Web Application Firewall (WAF) для блокировки подозрительных запросов, содержащих попытки внедрения PHP-кода или манипуляции путями (Path Traversal).

  3. Временно запретите выполнение PHP-скриптов в директориях, предназначенных только для загрузки файлов (например, web/uploads или storage), через конфигурацию Nginx:

location ~* ^/(uploads|storage)/.*\.php$ {
    deny all;
}

  1. Убедитесь, что опция allow_url_include в php.ini выключена:
allow_url_include = Off