В информационной безопасности сбитый с толку заместитель — это компьютерная программа , которую обманывает другая программа (с меньшими привилегиями или меньшими правами), заставляя ее злоупотреблять своими полномочиями в системе. Это особый тип повышения привилегий . [1] Проблема сбитого с толку заместителя часто приводится в качестве примера того, почему важна безопасность на основе возможностей .
Системы полномочий защищают от проблемы запутанного заместителя, тогда как системы, основанные на списках контроля доступа, этого не делают. [2]
В оригинальном примере сбитого с толку депутата [3] была программа -компилятор, предоставленная на коммерческом сервисе разделения времени . Пользователи могли запустить компилятор и опционально указать имя файла, куда он будет записывать отладочный вывод, и компилятор мог бы записывать в этот файл, если бы у пользователя было разрешение на запись туда.
Компилятор также собирал статистику об использовании языковых возможностей. Эта статистика хранилась в файле с именем "(SYSX)STAT" в каталоге "SYSX". Чтобы сделать это возможным, программе компилятора было предоставлено разрешение на запись в файлы в SYSX.
Но в SYSX были и другие файлы: в частности, информация о выставлении счетов системы хранилась в файле "(SYSX)BILL". Пользователь запустил компилятор и назвал "(SYSX)BILL" в качестве желаемого отладочного выходного файла. [ необходима цитата ]
Это привело к проблеме с запутанным заместителем. Компилятор сделал запрос к операционной системе на открытие (SYSX)BILL. Несмотря на то, что у пользователя не было доступа к этому файлу, компилятор имел его, поэтому открытие прошло успешно. Компилятор записал вывод компиляции в файл (здесь "(SYSX)BILL") как обычно, перезаписав его, и информация о выставлении счетов была уничтожена.
В этом примере программа-компилятор является заместителем, поскольку она действует по запросу пользователя. Программа рассматривается как «запутанная», поскольку ее обманом заставили перезаписать системный файл выставления счетов.
Всякий раз, когда программа пытается получить доступ к файлу, операционной системе необходимо знать две вещи: какой файл запрашивает программа, и есть ли у программы разрешение на доступ к файлу. В этом примере файл обозначен своим именем, «(SYSX)BILL». Программа получает имя файла от пользователя, но не знает, есть ли у пользователя разрешение на запись файла. Когда программа открывает файл, система использует разрешение программы, а не пользователя. Когда имя файла передавалось от пользователя программе, разрешение не передавалось вместе с ним; разрешение было увеличено системой молча и автоматически.
Для атаки не обязательно, чтобы файл биллинга был обозначен именем, представленным в виде строки. Существенными моментами являются следующие:
Подделка межсайтовых запросов (CSRF) — это пример атаки confused substitute substitute, которая использует веб-браузер для выполнения чувствительных действий против веб-приложения. Распространенная форма этой атаки происходит, когда веб-приложение использует cookie для аутентификации всех запросов, передаваемых браузером. Используя JavaScript , злоумышленник может заставить браузер передавать аутентифицированные HTTP- запросы.
Компьютерный червь Samy использовал межсайтовый скриптинг (XSS), чтобы превратить аутентифицированную сессию браузера MySpace в запутавшегося заместителя. Используя XSS, червь заставил браузер опубликовать исполняемую копию червя в виде сообщения MySpace, которое затем просматривалось и выполнялось друзьями зараженного пользователя.
Clickjacking — это атака, в которой пользователь действует как сбитый с толку заместитель. В этой атаке пользователь думает, что он безвредно просматривает веб-сайт (веб-сайт, контролируемый злоумышленником), но на самом деле его обманывают, заставляя выполнять чувствительные действия на другом веб-сайте. [4]
Атака FTP Bounce может позволить злоумышленнику подключиться косвенно к TCP- портам, к которым у его компьютера нет доступа, используя удаленный FTP- сервер в качестве запутанного заместителя.
Другой пример относится к программному обеспечению персонального брандмауэра . Оно может ограничивать доступ в Интернет для определенных приложений. Некоторые приложения обходят это, запуская браузер с инструкциями для доступа к определенному URL-адресу. Браузер имеет право открывать сетевое соединение, даже если приложение этого не делает. Программное обеспечение брандмауэра может попытаться решить эту проблему, предлагая пользователю в случаях, когда одна программа запускает другую, которая затем обращается к сети. Однако у пользователя часто нет достаточной информации, чтобы определить, является ли такой доступ законным — ложные срабатывания являются обычным явлением, и существует значительный риск того, что даже опытные пользователи привыкнут нажимать «ОК» в ответ на эти запросы. [5]
Не каждая программа, которая злоупотребляет полномочиями, является запутанным заместителем. Иногда злоупотребление полномочиями является просто результатом ошибки программы. Проблема запутанного заместителя возникает, когда обозначение объекта передается из одной программы в другую, и связанное с ним разрешение изменяется непреднамеренно, без явных действий любой из сторон. Это коварно, потому что ни одна из сторон не сделала ничего явного для изменения полномочий.
В некоторых системах можно попросить операционную систему открыть файл, используя разрешения другого клиента. Это решение имеет некоторые недостатки:
Самый простой способ решить проблему запутанного заместителя — это связать вместе обозначение объекта и разрешение на доступ к этому объекту. Это именно то, что такое возможность . [ необходима цитата ]
Используя безопасность возможностей в примере компилятора, клиент передаст серверу возможность для выходного файла, например, дескриптор файла , а не имя файла. Поскольку у него нет возможности для файла выставления счетов, он не может назначить этот файл для вывода. В примере подделки межсайтового запроса URL, предоставленный "межсайтовым" сайтом, будет включать свои собственные полномочия, независимые от полномочий клиента веб-браузера.