CVE-2024-56145
Craft CMS Craft CMS
2025-06-02
Craft CMS contains a code injection vulnerability. Users with affected versions are vulnerable to remote code execution if their php.ini configuration has `register_argc_argv` enabled.
Технический анализ и план устранения
Суть уязвимости
CVE-2024-56145 представляет собой критическую уязвимость типа Remote Code Execution (RCE) в Craft CMS. Проблема возникает из-за некорректной обработки входных аргументов в среде, где включена PHP-директива register_argc_argv.
Когда эта опция активна, PHP регистрирует переменные командной строки в глобальном массиве $_SERVER['argv']. Злоумышленник может передать специально сформированные параметры через HTTP-запрос, которые будут интерпретированы системой как аргументы командной строки. Это позволяет внедрить произвольный PHP-код и выполнить его на сервере в контексте веб-приложения.
Как исправить
Основным способом устранения уязвимости является обновление Craft CMS до безопасной версии. Разработчики выпустили патчи для всех поддерживаемых веток.
- Перейдите в корневую директорию проекта:
cd /path/to/your/craft-project
- Запустите обновление через Composer до одной из безопасных версий (5.5.1, 4.13.1 или 3.9.11 в зависимости от вашей текущей мажорной версии):
composer update craftcms/cms
- Если вы используете Docker, пересоберите образ после обновления
composer.lock:
docker-compose build --no-cache
Временные меры
Если немедленное обновление невозможно, необходимо применить защитные настройки на уровне конфигурации PHP или веб-сервера.
- Отключите директиву
register_argc_argvв файлеphp.ini(наиболее эффективный метод):
register_argc_argv = Off
- Если у вас нет доступа к глобальному
php.ini, попробуйте отключить её через.htaccess(для Apache):
php_flag register_argc_argv Off
- Перезапустите службу PHP-FPM или веб-сервер для применения изменений:
systemctl restart php-fpm
- В качестве дополнительного эшелона защиты на WAF (Web Application Firewall) настройте блокировку запросов, содержащих подозрительные строки в Query String, такие как
+,-d, или попытки обращения к внутренним переменным PHP.