CVE-2024-58136

Yiiframework Yii

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2025-05-02

Официальное описание

Yii Framework contains an improper protection of alternate path vulnerability that may allow a remote attacker to execute arbitrary code. This vulnerability could affect other products that implement Yii, including—but not limited to—Craft CMS, as represented by CVE-2025-32432.

🛡️
Технический анализ и план устранения

Суть уязвимости

CVE-2024-58136 представляет собой уязвимость, связанную с недостаточной защитой альтернативных путей (Improper Protection of Alternate Path) в ядре Yii Framework. Проблема возникает из-за некорректной фильтрации входных данных, которые используются для формирования путей к файлам или вызова компонентов.

Дистанционный злоумышленник может манипулировать путями таким образом, чтобы обойти ограничения безопасности и добиться исполнения произвольного кода (RCE). Уязвимость критична, так как затрагивает не только чистые установки Yii, но и популярные системы управления контентом, построенные на его базе (например, Craft CMS, где она отслеживается как CVE-2025-32432).

Как исправить

Основным способом устранения является обновление Yii Framework до безопасной версии, в которой исправлена логика обработки путей.

  1. Обновите зависимости проекта с помощью Composer. Это подтянет последние патчи безопасности для ветки 2.0.x.
composer update yiisoft/yii2 --with-dependencies

  1. Если вы используете Craft CMS, обновите систему до версии 4.13.0, 5.5.1 или выше, где применены соответствующие исправления.
composer update craftcms/cms

  1. После обновления убедитесь, что в файле composer.lock версия yiisoft/yii2 соответствует актуальному релизу (2.0.51 и выше).

  2. Очистите кэш приложения, чтобы изменения вступили в силу.

php yii cache/flush-all

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

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

  1. Настройте Web Application Firewall (WAF) для блокировки запросов, содержащих подозрительные последовательности в параметрах (например, ../, ..\\, или попытки обращения к системным директориям).

  2. Проверьте все контроллеры и действия, которые принимают имена файлов или путей от пользователя. Убедитесь, что используется строгая валидация через InlineValidator или регулярные выражения.

  3. Ограничьте права доступа PHP-процесса к файловой системе. Убедитесь, что веб-сервер имеет права на запись только в директории runtime и web/assets.

  4. Отключите возможность выполнения PHP-скриптов в директориях, предназначенных для загрузки пользовательских файлов, через конфигурацию Nginx или Apache.

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