- PVSM.RU - https://www.pvsm.ru -
Существует уязвимость на некоторых настройках основанных на CGI (на Apache + mod_php и Nginx + PHP-FPM не влияет), которая оставалась не замеченной, по крайней мере 8 лет. В 7 разделе спецификации CGI говорится [1]:
Некоторые системы поддерживают метод для передачи [sic] массив строк в CGI скрипт. Используется только в случае «индексных» запросов. Определяется «GET» или «HEAD» HTTP-запрос со строкой поиска URL не содержащей незакодированных "=" символов.
Итак, запросы, которые не содержат знак "=" обрабатываются иначе для некоторых CGI реализаций. Для PHP это означает, что запрос, который содержит ?-s, может слить PHP исходный код страницы, но с запросом ?-s&=1 всё нормально.
Большое количество сайтов запускают PHP или как модуль Apache через mod_php, или с помощью PHP-FPM под Nginx. Ни один из этих способов не уязвим к этом. Прямая работа с CGI тоже не подвержена этой уязвимости.
Если вы используете Apache mod_cgi для запуска PHP, то вы можете быть уязвимы. Чтобы в этом убедиться надо добавить в конец в любого URL ?-s. Если вы видите исходный код, то вы уязвимы. Если открывается ваш сайт, то всё, скорее всего, в порядке.
Чтобы это исправить, обновитесь до PHP 5.3.12 или PHP 5.4.2.
Мы признаем, что с CGI является достаточно устаревшим способом запуска PHP, и может быть невозможным обновить сайты до последней версии PHP. В качестве альтернативы можно настроить веб-сервер, чтобы не допустить такого рода запросы, которые начинаются с "-" и не содержат "=". Добавление этого правильно никак не должно повлиять на работу сайта. Для Apache, которые используют mod_rewrite, будет выглядеть следующим образом:
RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]
RewriteRule ^(.*) $1? [L]
Если пишите свои правила, то не забудьте учесть и urlencoded ?%2ds версию.
Плохая неделя стала ещё хуже. У нас был баг в нашем багтрекере, который переключил приватный флаг отчёта об ошибке на публичный в комментарии к сообщению об ошибке, что сделало эту проблему публичной до того, как мы протестировали решения до нужного нам уровня. Пожалуйста сообщайте о всех проблемах через bugs.php.net [2].
Для того, чтобы скачать PHP 5.3.12 или PHP 5.4.2 посетите страницу загрузок [3]. Бинарники для Windows доступны по адресу windows.php.net/download/ [4]. Существует лог изменений [5].
Автор: sectus
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/6916
Ссылки в тексте:
[1] 7 разделе спецификации CGI говорится: http://tools.ietf.org/html/draft-robinson-www-interface-00#section-7
[2] bugs.php.net: https://bugs.php.net/
[3] страницу загрузок: http://www.php.net/downloads.php
[4] windows.php.net/download/: http://windows.php.net/download/
[5] лог изменений: http://www.php.net/ChangeLog-5.php#5.4.2
Нажмите здесь для печати.