Уязвимость в PHP, позволяющая выполнить код при работе в режиме CGI

В PHP выявлена уязвимость (CVE-2024-4577), позволяющая добиться выполнения своего кода на сервере или просмотра исходного кода PHP-скрипта в случае использования PHP в режиме CGI на платформе Windows (конфигурации с mod_php, php-fpm и FastCGI уязвимости не подвержены). Проблема устранена в выпусках PHP 8.3.8, 8.2.20 и 8.1.29.

Уязвимость является частным случаем исправленной в 2012 году проблемы CVE-2012-1823, добавленной для которой защиты оказалось недостаточно для блокирования атаки на платформе Windows. Метод атаки сводится к возможности подстановки аргумента командной строки при запуске интерпретатора PHP через манипуляцию с параметрами запроса к PHP-скрипту.

В старой уязвимости CVE-2012-1823 для эксплуатации достаточно было указать опции командной строки вместо параметров запроса, например, «http://localhost/index.php?-s» для показа исходного кода скрипта. Новая уязвимость основывается на том, что платформа Windows обеспечивает автоматическое преобразование символов, что позволяет для обхода ранее добавленной защиты указывать символы, присутствующие в некоторых кодировках и заменяемые на символ «-» (например, http://localhost/index.php?%ads).

Уязвимость подтверждена в конфигурациях с локалями для традиционного китайского (cp950), упрощённого китайского (cp936) и японского (cp932) языков, но не исключено её проявление и с другими локалями. Проблема проявляется в конфигурации по умолчанию в наборе XAMPP (Apache + MariaDB + PHP + Perl), а также в любых конфигурациях Apache, в которых php-cgi выставлен в качестве обработчика CGI-скриптов при помощи настройки
‘Action cgi-script «/cgi-bin/php-cgi.exe»‘ или ‘Action application/x-httpd-php-cgi «/php-cgi/php-cgi.exe»‘, или при непосредственном размещении интерпретатора php в «/cgi-bin» и любых других каталогах, в которых разрешено выполнение CGI-скриптов через директиву ScriptAlias.

Кроме того в обновлениях PHP 8.3.8, 8.2.20 и 8.1.29 устранены ещё три уязвимости:

  • CVE-2024-5458 — возможность обхода фильтра
    FILTER_VALIDATE_URL, используемого при вызове функции filter_var.

  • CVE-2024-5585 — альтернативный вектор атаки на уязвимость CVE-2024-1874, позволяющий обойти ранее добавленную защиту и осуществить подстановку команд при вызове bat- и cmd-файлов через функцию proc_open на платформе Windows (уязвимость BatBadBut).
  • Подверженность функции openssl_private_decrypt атаке Marvin.

Источник: http://www.opennet.ru/opennews/art.shtml?num=61332