PDA

Просмотр полной версии : [Перевод]PHP ext/filter FDF Post Bypass Vulnerability


NeMiNeM
05.04.2007, 21:07
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: В статье/переводе возможны ошибки. Просьба не кричать, а спокойно указать и исправить :) Спасибо.

Xex
28.08.2007, 00:30
больше сплоита нет)

http://www.php-security.org/MOPB/code/MOPB-17-2007.php