CVE-2024-4577
PHP-CGI на Windows: внедрение аргументов через Apache
CVE-2024-4577 затрагивает PHP-CGI на Windows при работе за Apache и определённых системных кодовых страницах с поведением Best-Fit. Обновите PHP до исправленного выпуска и отдельно проверьте фактический режим запуска.
Кому нужно проверить
Администраторам Windows-серверов с Apache и PHP-CGI, особенно системам, обслуживающим приложения в затронутых региональных кодовых страницах. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.
В чём риск
Специально обработанные параметры запроса могут быть восприняты PHP-CGI как опции командной строки. При выполнении условий это может раскрыть исходный код или привести к выполнению произвольного PHP-кода с правами процесса веб-сервера.
Затронутые версии
Затронуты PHP 8.1 до 8.1.29, 8.2 до 8.2.20 и 8.3 до 8.3.8, если PHP собран для Windows, используется CGI SAPI за Apache, а кодовая страница Windows применяет Best-Fit. CLI, не-CGI режим и другие платформы не следуют этому условию автоматически; наличие PHP на сервере само по себе недостаточно.
Исправленные версии
Исправлено в PHP 8.1.29, 8.2.20 и 8.3.8. Установите пакет с исправлением от поставщика и подтвердите, что обновлена именно работающая php-cgi.exe; номер пакета может сохраняться при backport.
Что сделать
- 1Инвентаризируйте фактический веб-сервер, SAPI, путь к php-cgi.exe, версию PHP и системную кодовую страницу Windows. Не считайте установленный CLI PHP доказательством безопасности веб-сайта.
- 2Установите PHP 8.1.29, 8.2.20, 8.3.8 или более новый поддерживаемый выпуск либо пакет Windows с подтверждённым backport. Перед заменой сохраните конфигурацию и проверьте приложение на тестовом узле.
- 3Если обновление невозможно немедленно, временно исключите PHP-CGI из внешнего доступа и переведите приложение на безопасную поддерживаемую схему запуска после проверки совместимости. Блокировка отдельных строк запроса не заменяет исправление.
- 4После обновления проверьте фактически запущенный процесс, обычные страницы, загрузки и журналы Apache/PHP. При признаках раскрытия исходников или выполнения чужого кода изолируйте узел, сохраните необходимые журналы и замените секреты после расследования.
Проверка PHP-CGI на Windows
Безопасный порядок подтверждения применимости и исправления.
- 1Определить SAPI и реально используемый php-cgi.exe
- 2Проверить версию и кодовую страницу Windows
- 3Установить исправленный пакет
- 4Проверить обычные запросы и журналы
Примеры конфигурации и проверки
php-cgi.exe -vЗапускайте локально на Windows-сервере с тем же исполняемым файлом, который настроен у Apache; команда только читает версию и не принимает HTTP-запросы. Сверьте путь и результат с конфигурацией веб-сервера и advisory поставщика.
Как не подпустить ботов к сайту
BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.
Первоисточники
Снизьте шанс атаки до того, как бот дойдёт до сайта
Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.