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

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

  1. Запустите обновление через Composer до одной из безопасных версий (5.5.1, 4.13.1 или 3.9.11 в зависимости от вашей текущей мажорной версии):
composer update craftcms/cms

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

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

Если немедленное обновление невозможно, необходимо применить защитные настройки на уровне конфигурации PHP или веб-сервера.

  1. Отключите директиву register_argc_argv в файле php.ini (наиболее эффективный метод):
register_argc_argv = Off

  1. Если у вас нет доступа к глобальному php.ini, попробуйте отключить её через .htaccess (для Apache):
php_flag register_argc_argv Off

  1. Перезапустите службу PHP-FPM или веб-сервер для применения изменений:
systemctl restart php-fpm

  1. В качестве дополнительного эшелона защиты на WAF (Web Application Firewall) настройте блокировку запросов, содержащих подозрительные строки в Query String, такие как +, -d, или попытки обращения к внутренним переменным PHP.