Разделение привилегий
В компьютерном программировании и безопасности компьютерной разделение привилегий является одним из программных методов реализации принципа наименьших привилегий . При разделении привилегий программа делится на части, которые ограничены конкретными привилегиями, необходимыми для выполнения конкретной задачи. Это используется для уменьшения потенциального ущерба от уязвимости компьютерной безопасности.
Распространенным методом реализации разделения привилегий является разделение компьютерной программы на два процесса . Основная программа теряет привилегии , а меньшая программа сохраняет привилегии для выполнения определенной задачи. Затем две половинки обмениваются данными через пару сокетов . Таким образом, любая успешная атака на более крупную программу получит минимальный доступ, даже если пара программ будет способна выполнять привилегированные операции.
Разделение привилегий традиционно достигается путем различения реального идентификатора пользователя / идентификатора группы от эффективного идентификатора пользователя/идентификатора группы с использованием setuid (2)/ setgid (2) и связанных с ними системных вызовов , которые были определены POSIX . Если они расположены неправильно, пробелы могут привести к широкому проникновению сети.
Многим сетевых служб демонам приходится выполнять определенные привилегированные операции, например открывать необработанный сокет или интернет-сокет в хорошо известном диапазоне портов. Административным утилитам могут потребоваться определенные привилегии во время выполнения также . Такое программное обеспечение имеет тенденцию разделять привилегии, полностью отменяя их после завершения критического раздела, и после этого заменяет пользователя, под которым оно работает, на какую-либо непривилегированную учетную запись. Это действие известно как удаление root в Unix-подобных операционных системах . Непривилегированная часть обычно запускается под пользователем « никто » или эквивалентной отдельной учетной записью пользователя.
Разделение привилегий также можно выполнить путем разделения функциональности одной программы на несколько более мелких программ, а затем назначения расширенных привилегий определенным частям с использованием разрешений файловой системы . Таким образом, различные программы должны взаимодействовать друг с другом через операционную систему, поэтому объем потенциальных уязвимостей ограничен (поскольку сбой в менее привилегированной части не может быть использован для получения привилегий, а просто вызвать отказ в обслуживании). атака ).
Разделение привилегий является одной из основных функций безопасности OpenBSD . Реализация Postfix была сосредоточена на реализации комплексного разделения привилегий. Еще одно программное обеспечение почтового сервера, разработанное с учетом разделения привилегий и безопасности, — это Dovecot . В Solaris реализован отдельный набор функций для брекетинга привилегий .
См. также
[ редактировать ]- Безопасность на основе возможностей
- Проблема запутанного депутата
- Повышение привилегий
- Отзыв привилегий (вычисления)
- Оборонительное программирование
- Песочница (компьютерная безопасность)