среда, 9 мая 2012 г.

Случайно опубликована в открытом доступе уязвимость PHP!

[09.05.2012 18:17:46]
На форумах Reddit обнародовали копию закрытого обсуждения критической уязвимости CVE-2012-1823 в конфигурациях PHP-CGI, которая была обнаружена в январе 2012 г., а нормальный патч для неё ещё не готов. По чистой случайности обсуждение этой уязвимости пометили как открытое - и его немедленно скопировали на Reddit, так что информация о баге стала достоянием общественности.

В январе 2012 г. уязвимость нашли эксперты компании Eindbazen. Причиной бага является то, что в 2004 г. создатели PHP для чего-то убрали из кода проверку на знак ‘=’ в строке запроса. По CGI RFC, в случае отсутствия знака ‘=’ в строке запроса, сервер обязан воспринимать эту строку как набор знаков, а не как команду.




search-string = search-word *( "+" search-word )search-word = 1*scharschar = xunreserved | escape | xreservedxunreserved = альфа | digit | xsafe | extraxsafe = "$" | "-" | "_" | "."xreserved = ";" | "/" | "?" | ":" | "@" | "&"

Хотя, с 2004 г. в PHP убрали эту проверку, так что сейчас в некоторых конфигурациях сервера и обработчика запросов довод вроде ?-s в URL любого php-документа воспринимается как прямая команда -s к бинарнику php-cgi. Также, подобным способом возможно направить к PHP каждое число параметров, приводящие к показу исходников скриптов, исполнению произвольного кода и т.д. От подобной атаки не спасают ни safe_mode, ни allow_url_include, ни какие-то иные защитные опции ini.

PHP Group выпустила обновленные версии PHP 5.3.12 и PHP 5.4.2, которые обязаны закрывать уязвимость, однако обе содержат баг, дающий возможность просто обойти сделанный патч. Новый фикс выйдет в самое самое близкое время.

Комментариев нет:

Отправить комментарий