Обманутый посредник или запутанный представитель — это компьютерная программа которую другая программа (с меньшими привилегиями или правами) обманывает, заставляя её злоупотреблять своими полномочиями в системе. Это частный случай повышения привилегий. Проблема обманутого посредника часто цитируется как пример, почему важна основанная на полномочиях безопасность.

Основанные на полномочиях системы защищают против проблемы обманутого посредника, в то время как системыы, основанные на списках управления доступом, не защищают.

Пример В оригинальном примере проблемы обманутого посредника, был компилятор, доступный на коммерческом сервисе разделения времени. Пользователи могли запускать компилятор и, по желанию, указывать имя файла, куда он будет записывать отладочную информацию. Компилятор мог записывать данные в этот файл, если у пользователя были соответствующие права доступа

Компилятор также собирал статистику об использовании языковых средств. Эти статистические данные сохранялись в файле с именем «(SYSX)STAT» в каталоге «SYSX». Для этого программе-компилятору было предоставлено разрешение на запись в файлы в каталоге SYSX.

Однако в каталоге SYSX находились и другие файлы, в частности, информация о биллинге системы хранилась в файле «(SYSX)BILL». Пользователь запустил компилятор и указал «(SYSX)BILL» как желаемый файл для вывода отладочной информации.

Это привело к проблеме «обманутого посредника». Компилятор отправил операционной системе запрос на открытие файла «(SYSX)BILL». Несмотря на то, что у пользователя не было доступа к этому файлу, у компилятора он был, поэтому открытие прошло успешно. Компилятор записал вывод компиляции в файл (в данном случае «(SYSX)BILL») как обычно, перезаписав его, и информация о биллинге была уничтожена.

Обманутый посредник В этом примере компилятор является посредником, поскольку он действует по запросу пользователя. Программа выглядит обманутой, поскольку перезаписала системный биллинговый файл.

Всякий раз, когда программа пытается получить доступ к файлу, операционной системе необходимо знать две вещи: какой файл запрашивает программа и имеет ли программа разрешение на доступ к этому файлу. В примере файл обозначен именем «(SYSX)BILL». Программа получает имя файла от пользователя, но не знает, имеет ли пользователь разрешение на запись в этот файл. Когда программа открывает файл, система использует разрешение программы, а не пользователя. Когда имя файла было передано от пользователя программе, права не были переданы вместе с ним, так что права были увеличены системой незаметно и автоматически.

Для атаки не обязательно, чтобы файл счетов имел имя, представленное строкой. Важно следующее: Идентификатор файла не обладает полными правами для доступа к нему. Программа неявно использует собственные полномочия для доступа к файлу.

Другие примеры

Межсайтовая подделка запроса (cross-site request forgery, CSRF) является примером атаки типа «обманутый посредник», при которой используется браузер жертвы для выполнения чувствительных действий против веб-приложения. Распространённый сценарий такой атаки возникает, когда веб-приложение использует файлы cookie для аутентификации всех запросов, отправляемых браузером. С помощью JavaScript злоумышленник может заставить браузер отправить аутентифицированные HTTP-запросы.

использовал Межсайтовый скриптинг (cross-site scripting, XSS) для превращения аутентифицированной сессии MySpace в браузере в «обманутого посредника». С помощью XSS червь заставлял браузер отправлять исполняемую копию червя в виде сообщения на MySpace, которое затем просматривалось и запускалось друзьями заражённого пользователя.

Кликджекинг — это атака, в которой пользователь выступает в роли обманутого посредника. В этой атаке пользователь думает, что он просматривает веб-сайт без каких-либо последствий (сайт, контролируемый злоумышленником) но на самом деле его обманом заставляют выполнять конфиденциальные действия на другом веб-сайте.

(Bounce — отскок) может позволить атакующему косвенно подключиться к TCP портам, к которым машина злоумышленника не имеет доступа, используя удалённый FTP сервер в качестве обманутого посредника.

Другой пример касается программного обеспечения персонального файрвола. Оно может ограничивать доступ в Интернет для определённых приложений. Некоторые приложения обходят это ограничение, запуская браузер с инструкциями для доступа к определённому URL-адресу. Браузер имеет право открывать сетевое соединение, даже если у приложения такого права нет. Брандмауэр может попытаться решить эту проблему, запрашивая подтверждение у пользователя в случаях, когда одна программа запускает другую, которая затем обращается к сети. Однако, зачастую у пользователя недостаточно информации, чтобы определить, является ли такой доступ легитимным — ложные срабатывания происходят часто, и существует значительный риск того, что даже опытные пользователи привыкнут нажимать «ОК» на эти запросы.

Не всякая программа, злоупотребляющая полномочиями, является «обманутым посредником». Иногда злоупотребление полномочиями является просто следствием ошибки в программе. Проблема «обманутого посредника» возникает, когда объект передаётся из одной программы в другую, и связанные с ним разрешения изменяются непреднамеренно без явных действий с чьей-либо стороны. Это коварно, потому что ни одна из сторон не предприняла явных действий для изменения полномочий.

Решения В некоторых системах операционная система может открыть файл, используя права доступа другого клиента. Однако такое решение имеет ряд недостатков: Серверу требуется уделять особое внимание вопросам безопасности. Простенький или безответственный сервер может не предпринять необходимых мер. Становится сложнее определить правильные права доступа, если сам сервер выступает в роли клиента другого сервиса и хочет передать доступ к файлу. Клиенту приходится доверять серверу, что тот не злоупотребит полученными правами. Пересечение прав сервера и клиента также не решает проблему, поскольку серверу в таком случае может потребоваться предоставить очень широкие права (постоянно, а не только для конкретного запроса), чтобы иметь возможность действовать от имени произвольных клиентов.

Самый простой способ решить проблему «обманутого посредника» — это объединить указание на объект и право доступа к нему. Именно это и представляет собой .

Если использовать основанную на полномочиях безопасность в примере с компилятором, клиент передал бы серверу полномочия для выходного файла, например, файловый дескриптор, а не имя файла. Поскольку пользователь не имеет прав доступа к файлу биллинга, он не может назначить его в качестве выходного. В примере с межсайтовой подделкой запроса URL, предоставленный «cross»-сайтами, включал бы сви собственные полномочия, независимые от полномочий веб-браузера клиента.

См. также setuid в Unix Внешние полномочия

Примечания

Литература

Ссылки Norman Hardy, The Confused Deputy: (or why capabilities might have been invented), ACM SIGOPS Operating Systems Review, Volume 22, Issue 4 (October 1988). ACM published document. Document text on Norm Hardy’s website. Document text on University of Pennsylvania’s website. Citeseer cross reference. Capability Theory Notes from several sources (collated by Norm Hardy). Everything2: Confused Deputy (some introductory level text).

Категория:Компьютерная безопасность