Ошибочное делегирование прав доступа

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

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

В области компьютерной безопасности пример ошибочного делегирования часто используют как аргумент в пользу систем безопасности, основанных на передаче пар «объект — метка доступа» между процессами при взаимодействии.

Содержание

Классический пример

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

Услуги компилятора платные, и серверная программа имеет доступ к файлу с биллинговой информацией. Назовём этот файл ‘Bil’. Очевидно, клиент сам по себе не имеет прав доступа к этому файлу. Теперь предположим, что клиентская программа определяет файл ‘Bil’ как выходной для компилятора. Несмотря на то, что у клиента нет прав доступа к данному файлу, они изначально есть у серверной программы, поэтому, выполняя запрос клиентской программы, серверная перезапишет файл с биллнговой информацией.

«Обманутый представитель».

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

Когда программа пытается получить доступ к файлу, операционной системе необходимо знать 2 вещи: какой файл запрашивается и имеется ли у программы разрешение на доступ к файлу. В данном примере файл обозначается своим именем ,‘Bil’. Сервер получает имя файла от клиента, но не получает никакой информации о том, имеет ли клиент права доступа к этому файлу. Когда сервер открывает файл, система использует полномочия серверной программы, а не клиентской. Когда имя файла передавалось от клиента к серверу, права доступа не были переданы, они были без уведомления автоматически повышены системой.

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

Подделка HTTP-запросов (CSRF) — пример такой атаки на Веб-браузер.

Посредническая атака через FTP позволяет атакующему косвенно подключаться к TCP портам, к которым сам атакующий не имеет доступа. Для этого используется удалённый FTP-сервер, который и выступает в роли «обманутого представителя».

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

Решения

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

  • требуется дополнительное внимание сервера к безопасности.
  • становится сложным правильно определить правильные полномочия в случае, когда сервер А в свою очередь обращается к другому серверу Б и при этом для доступа используются полномочия клиента сервера А.
  • необходимо, чтобы серверу на время давались полномочия клиента. Заметим, что наложение полномочий клиента и сервера по принципу минимальных полномочий не решает проблемы, так как сервер в таком случае получает слишком большие полномочия (на всё время, а не на время обработки данного запроса), потому что ему необходимо работать с произвольным клиентом.

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

Личные инструменты

Served in 0.070 secs.