Обманутый посредник

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

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

Пример

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

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

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

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

Обманутый посредник

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

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

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

  • Идентификатор файла не обладает полными правами для доступа к нему.
  • Программа неявно использует собственные полномочия для доступа к файлу.

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

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

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

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

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

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

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

Решения

В некоторых системах операционная система может открыть файл, используя права доступа другого клиента. Однако такое решение имеет ряд недостатков:

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

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

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

См. также

Примечания

  1. Wu, Cui, Ban, Guo, Cui, 2015, с. 2338–2349.
  2. ACLs don't. sourceforge.net.
  3. The Confused Deputy (or why capabilities might have been invented). Дата обращения: 31 декабря 2003. Архивировано из оригинала 5 декабря 2003 года.
  4. clickjacking: The Confused Deputy rides again! sourceforge.net.
  5. Alfred Spiessens: Patterns of Safe Collaboration, PhD thesis. http://www.evoluware.eu/fsp_thesis.pdf Section 8.1.5

Литература

Jianliang Wu, Tingting Cui, Tao Ban, Shanqing Guo, Lizhen Cui. PaddyFrog: systematically detecting confused deputy vulnerability in Android applications: PaddyFrog: systematically detecting confused deputy vulnerability in Android applications (англ.) // Security and Communication Networks. — 2015. — Vol. 8, iss. 13. — doi:10.1002/sec.1179.

Ссылки