Ошибочное делегирование прав доступа — происходит тогда, когда какая-либо программа использует свои полномочия неправильно, будучи введённой в заблуждение третьей стороной. Один из способов повышения привилегий процесса в системе.
В области компьютерной безопасности пример ошибочного делегирования часто используют как аргумент в пользу систем безопасности, основанных на передаче пар «объект — метка доступа» между процессами при взаимодействии.
Классические пример такой ошибки — это случай, когда одна программа (будем называть её серверной) предоставляет услуги компилятора для других. Клиентская программа предоставляет серверной имя входного и выходного файлов, и серверу предоставляются такие же права доступа к этим файлам, какие имел клиент.
Услуги компилятора платные, и серверная программа имеет доступ к файлу с биллинговой информацией. Назовём этот файл ‘Bil’. Очевидно, клиент сам по себе не имеет прав доступа к этому файлу. Теперь предположим, что клиентская программа определяет файл ‘Bil’ как выходной для компилятора. Несмотря на то, что у клиента нет прав доступа к данному файлу, они изначально есть у серверной программы, поэтому, выполняя запрос клиентской программы, серверная перезапишет файл с биллнговой информацией.
В данном примере, программа-компилятор является представителем, работающим по запросу клиентской программы. Её обманули, заставив перезаписать свой же биллинговый файл по запросу клиента, то есть по сути полномочия по работе с этим файлом были в какой-то мере делегированы клиентской программе.
Когда программа пытается получить доступ к файлу, операционной системе необходимо знать 2 вещи: какой файл запрашивается и имеется ли у программы разрешение на доступ к файлу. В данном примере файл обозначается своим именем ,‘Bil’. Сервер получает имя файла от клиента, но не получает никакой информации о том, имеет ли клиент права доступа к этому файлу. Когда сервер открывает файл, система использует полномочия серверной программы, а не клиентской. Когда имя файла передавалось от клиента к серверу, права доступа не были переданы, они были без уведомления автоматически повышены системой.
Посредническая атака через FTP позволяет атакующему косвенно подключаться к TCP портам, к которым сам атакующий не имеет доступа. Для этого используется удалённый FTP-сервер, который и выступает в роли «обманутого представителя».
Ещё один пример относится к брандмауэрам. Такое ПО может блокировать доступ к сети для отдельных приложений. Эта блокировка может обходиться путём запуска браузера со специфической ссылкой URL. У браузера, в отличие от приложения, есть доступ к сети. В случаях, когда одна программа запускает другую для доступа к сети, брандмауэр может запросить у пользователя, что ему делать. Однако пользователь часто не располагает достаточной информацией для того, чтобы понять, является ли попытка доступа санкционированной — часто несанкционированный доступ разрешается, к тому же есть риск, что даже продвинутому пользователю надоест отвечать на все запросы брандмауэра.