PHP ext/filter FDF Post Bypass Vulnerability Обход ограничений безопасности Краткое изложение Начиная с PHP 5.2.0 прибавилось новое фильтрующее расширение, которое с одной стороны должно использоваться приложениями для ограничения входных данных пользователя, а с другой осуществлять широкую фильтрацию для сайта. Однако в связи с "кривой" конструкцией можно подсмотреть данные POST через фильтр, когда PHP компилируеться с помощью FDF. Под угрозой PHP 5.2.0 и более ранние версии. Детальная информация Вместе с PHP 5 был добавлен ряд методов для фильтрации входных данных, которые использовались только Yahoo до тех пор, пока Hardened-PHP Project не взялись и не исправили несколько явных баг. Патч от Hardened-PHP вышел с спец. расширением, которое делало возможным использование методов для фильтрации входных данных по числу переменных, размере и форме. Потом девелоперы PHP разработали ext/filter, который должен быть в связке с PHP и сломали систему ограничений входных данных. Поскольку ext/filter "поглощает" систему фильтрации входных данных и не возвращает управление предыдущей установленной системе, новые методы фильтрации бесполезны. Разработчики PHP знали что Hardened-PHP использовал эти методы но это не остановило их от умышленного разрушения. Приёмы фильтрации входных данных разработаны так, что во всех местах где входные данные анализируются и регистрируются как переменные, идёт обращение к фильтру который решает что делать с этими переменными. Проблема здесь в том, что все расширения которые поддерживают другие контент-типы POST также нуждаются в имплементации методов, иначе данные проходят просто без ограничений. Пример эксплойта Пример эксплойта который конвертирует массив _POST в данные POST в формате application/vnd.fdf и передаёт его в URL, обходя фильтр вызванный ext/filter - http://www.php-security.org/MOPB/code/MOPB-17-2007.php Примечания Новый способ фильтрации от PHP это очередное "кривое" свойство PHP, которое, наверно, принесёт ещё много головной боли разработчикам и, особенно, админам. Во-первых, способы фильтрации размещены в плохом месте и, снова же, фильтрация будет иметь место только когда все загруженые расширения (включая сторонние), которые имеют отношение к входным данным, будут обращяться к методам фильтрации. Во-вторых, ext/filter написан таким образом что другие пользовательские расширения фильтрации не будут больше работать, поскольку ext/filter убирает все способы ограничений и не проводит "шлейфовое соединение" (цепочкой). Разработчики PHP сознательно сломали этим расширение Hardened-PHP. Однако Suhosin который должен использоваться вместо HPHP в любом случае, таки работает с ext/filter. И последнее, но не менее важное это то, что ext/filter есть, конечно, всего лишь необязательным расширением и может быть отключён администратором в любой момент и, следовательно, любое приложение PHP, которое полагается на него для фильтрации входных данных, будет работать только если установлены расширения фильтрации. ---- Источник: http://www.php-security.org/MOPB/MOPB-17-2007.html Автор: Stefan Esser Перевод: NeMiNeM Специально для antichat.ru ps: В статье/переводе возможны ошибки. Просьба не кричать, а спокойно указать и исправить Спасибо.