Критическая уязвимость в PHP!!! Обновления PHP 5.3.12 и PHP 5.4.2 не устраняют проблему!!!

Компьютерная группа реагирования на чрезвычайные ситуации (CERT) опубликовала уведомление об утечке информации о критической уязвимости в PHP, которая позволяет запустить произвольный код на сервере или просмотреть исходный код любого PHP-скрипта, выполняемого в CGI-режиме (используется некоторыми хостинг-провайдерами). Cкрипты, выполняемые с использованием mod_php и FastCGI (например, связки nginx с php-fpm), не подвержены проблеме.

Опасность уязвимости усугубляет тот факт, что несмотря на то, что разработчики PHP были уведомлены о проблеме ещё 17 января, а 23 февраля был отправлен дополнительный запрос от имени CERT, уязвимость остаётся неисправленной. Проблема вызвана ошибкой, допущенной в 2004 году. Интересно также то, что утечка информации возникла из-за оплошности разработчиков PHP, поместивших информацию о проблеме в публичный трекер ошибок, до момента выхода исправления с устранением уязвимости.

Эксплуатация проблемы тривиальна - достаточно передать опцию командной строки, поддерживаемую интерпретатором, в качестве аргумента при выполнении запроса. Например, для показа исходного кода текущего скрипта достаточно указать "http://localhost/index.php?-s". Также можно поступить и с другими опциями и, проявив немного эрудиции, организовать выполнение кода на сервере. Всем пользователям PHP, использующим скрипты в режиме CGI, следует незамедлительно установить патч.

Дополнение 1: В экстренном порядке подготовлены корректирующие выпуски PHP 5.3.12 и PHP 5.4.2, в которых предпринята попытка устранения указанной узявимости. В качестве дополнительного пути блокирования проблемы, в Apache предлагается использовать правила mod_rewrite:


   RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC] 
   RewriteRule ^(.*) $1? [L]


Ещё один способ защиты - во враппере добавить "--". Например:


   exec /usr/bin/php-cgi -- "$@"


Дополнение 2: Изучение выпущенных обновлений PHP 5.3.12 и PHP 5.4.2 показало, что они устраняют лишь частный случай эксплуатации и не исключают применения обходных путей совершения атаки. Дополнительные обновления PHP, полностью устраняющие уязвимость, будут выпущены в ближайшее время.

Дополнение 3: В публичном доступе появился эксплоит, позволяющий выполнить на сервере произвольный PHP-код, манипулируя директивами php.ini через опцию "-d" (примерно так: "http://localhost/index.php?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://адрес").

via Opennet




Вас также может заинтересовать:

В XORG 1.11 найдена критическая уязвимость
Критическая уязвимость в PHP 5.3.9, позволяющая выполнить код на сервере
Критическая уязвимость в почтовом сервере Exim
В OpenSSL обнаружена критическая уязвимость, которая может привести к утечке закрытых ключей
Критическая уязвимость в Adobe Flash Player. Исправление пока доступно только для Google Chrome
Apache HTTP Server исправляет серьезную проблему безопасности