Критическая уязвимость в PHP-CGI на Windows
Критическая уязвимость в PHP-CGI на Windows
Категория: Программы Теги: Уязвимости Опубликовано: 26 марта 2025

CVE-2024-4577: Критическая уязвимость в PHP-CGI на Windows и как она работает

CVE-2024-4577 – это критическая уязвимость удаленного выполнения кода (RCE) в PHP, затрагивающая версии 8.1.x (до 8.1.29), 8.2.x (до 8.2.20) и 8.3.x (до 8.3.8) при использовании Apache и PHP-CGI на Windows. Уязвимость связана с особенностями обработки символов в командной строке Windows и позволяет злоумышленнику выполнить произвольный PHP-код на сервере.

Суть проблемы:

Уязвимость возникает из-за того, что Windows может использовать "Best-Fit" поведение для замены символов в командной строке, передаваемой функциям Win32 API, если система настроена на использование определенных кодовых страниц. PHP CGI модуль может неправильно интерпретировать эти замененные символы как параметры PHP, что позволяет злоумышленнику передавать произвольные параметры PHP-бинарнику. Это, в свою очередь, может привести к раскрытию исходного кода скриптов, выполнению произвольного PHP-кода на сервере и другим серьезным последствиям.

Как это работает на практике:

Злоумышленник отправляет специально сформированный HTTP-запрос на уязвимый сервер. Этот запрос содержит строку, которая, благодаря "Best-Fit" поведению Windows, преобразуется в параметры PHP, позволяющие злоумышленнику выполнить произвольный код.

Например, строка %25ADd+allow_url_include%3D1+%25ADd+auto_prepend_file%3Dphp://input в URL-адресе, может быть интерпретирована Windows как -d allow_url_include=1 -d auto_prepend_file=php://input.

  • allow_url_include=1: Разрешает включение удаленных файлов, что само по себе является опасной настройкой.
  • auto_prepend_file=php://input: Указывает PHP автоматически включать содержимое тела POST-запроса. Это позволяет злоумышленнику передать PHP-код в теле запроса, который будет выполнен сервером.

Последствия эксплуатации:

Успешная эксплуатация этой уязвимости может привести к следующим последствиям:

  • Раскрытие исходного кода: Злоумышленник может получить доступ к исходному коду PHP-скриптов, что может содержать конфиденциальную информацию, такую как пароли и ключи API.
  • Выполнение произвольного кода: Злоумышленник может выполнить произвольный PHP-код на сервере, что позволяет ему получить полный контроль над системой.
  • Компрометация данных: Злоумышленник может получить доступ к базе данных и другим конфиденциальным данным, хранящимся на сервере.
  • DoS-атаки: Злоумышленник может использовать уязвимость для проведения атак типа "отказ в обслуживании" (DoS), выводя сервер из строя.

Как защититься:

  1. Немедленно обновите PHP: Это самый важный шаг. Установите PHP версии 8.1.29 или выше, 8.2.20 или выше, или 8.3.8 или выше.
  2. Рассмотрите альтернативы PHP-CGI: Если это возможно, перейдите на другой способ запуска PHP, например, FastCGI или mod_php. Эти методы не подвержены данной уязвимости.
  3. Ограничьте доступ к PHP-CGI: Если вы вынуждены использовать PHP-CGI, убедитесь, что доступ к нему ограничен только необходимыми пользователями и процессами.
  4. Настройте кодовую страницу: Убедитесь, что ваша система использует кодовую страницу, которая не подвержена "Best-Fit" поведению. Это может потребовать изменения конфигурации Windows.
  5. Используйте WAF (Web Application Firewall): WAF может помочь обнаружить и блокировать попытки эксплуатации этой уязвимости, анализируя HTTP-запросы и блокируя подозрительные.
  6. Регулярно проверяйте безопасность: Проводите регулярные проверки безопасности вашего веб-сервера, чтобы выявить и устранить другие потенциальные уязвимости.

Дополнительные рекомендации:

  • Принцип наименьших привилегий: Предоставляйте пользователям и процессам только те права доступа, которые им необходимы для выполнения своих задач.
  • Мониторинг безопасности: Внедрите систему мониторинга безопасности, которая будет отслеживать подозрительную активность на вашем сервере.
  • Обучение персонала: Обучите свой персонал основам безопасности веб-приложений, чтобы они могли распознавать и предотвращать атаки.

Заключение:

CVE-2024-4577 представляет собой серьезную угрозу для веб-серверов, работающих под управлением Windows с использованием PHP-CGI. Немедленное обновление PHP и принятие дополнительных мер безопасности, описанных выше, критически важны для защиты ваших систем от этой уязвимости.

Алексей Черемных Алексей Черемных
67