Обманутый посредник
Обманутый посредник или запутанный представитель — это компьютерная программа которую другая программа (с меньшими привилегиями или правами) обманывает, заставляя ее злоупотреблять своими полномочиями в системе. Это частный случай повышения привилегий[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»-сайтами, включал бы сви собственные полномочия, независимые от полномочий вэб-браузера клиента.
См. также
- setuid в Unix
- Внешние полномочия
Примечания
- ↑ Wu, Cui, Ban, Guo, Cui, 2015, с. 2338–2349.
- ↑ ACLs don't. sourceforge.net.
- ↑ The Confused Deputy (or why capabilities might have been invented). Дата обращения: 31 декабря 2003. Архивировано из оригинала 5 декабря 2003 года.
- ↑ clickjacking: The Confused Deputy rides again! sourceforge.net.
- ↑ 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.
Ссылки
- Norman Hardy, The Confused Deputy: (or why capabilities might have been invented), ACM SIGOPS Operating Systems Review, Volume 22, Issue 4 (October 1988).
- Capability Theory Notes from several sources (collated by Norm Hardy).
- Everything2: Confused Deputy (some introductory level text).