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 до безопасной версии, в которой исправлена логика обработки путей.
- Обновите зависимости проекта с помощью Composer. Это подтянет последние патчи безопасности для ветки 2.0.x.
composer update yiisoft/yii2 --with-dependencies
- Если вы используете Craft CMS, обновите систему до версии 4.13.0, 5.5.1 или выше, где применены соответствующие исправления.
composer update craftcms/cms
-
После обновления убедитесь, что в файле
composer.lockверсияyiisoft/yii2соответствует актуальному релизу (2.0.51 и выше). -
Очистите кэш приложения, чтобы изменения вступили в силу.
php yii cache/flush-all
Временные меры
Если немедленное обновление невозможно, рекомендуется принять следующие меры для снижения риска:
-
Настройте Web Application Firewall (WAF) для блокировки запросов, содержащих подозрительные последовательности в параметрах (например,
../,..\\, или попытки обращения к системным директориям). -
Проверьте все контроллеры и действия, которые принимают имена файлов или путей от пользователя. Убедитесь, что используется строгая валидация через
InlineValidatorили регулярные выражения. -
Ограничьте права доступа PHP-процесса к файловой системе. Убедитесь, что веб-сервер имеет права на запись только в директории
runtimeиweb/assets. -
Отключите возможность выполнения PHP-скриптов в директориях, предназначенных для загрузки пользовательских файлов, через конфигурацию Nginx или Apache.
location ~* ^/(uploads|assets)/.*\.php$ {
deny all;
}