Статьи [Перевод]PHP ext/filter FDF Post Bypass Vulnerability

Discussion in 'Статьи' started by NeMiNeM, 5 Apr 2007.

  1. NeMiNeM

    NeMiNeM Elder - Старейшина

    Joined:
    22 Aug 2005
    Messages:
    480
    Likes Received:
    310
    Reputations:
    201
    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: В статье/переводе возможны ошибки. Просьба не кричать, а спокойно указать и исправить :) Спасибо.
     
    6 people like this.
  2. Xex

    Xex Banned

    Joined:
    10 Jul 2005
    Messages:
    108
    Likes Received:
    41
    Reputations:
    7
    больше сплоита нет)

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