Принцип минимальных привилегий

Принцип минимальных привилегий (англ. principle of least privilege, PoLP; также принцип минимальной привилегии — PoMP, или принцип минимальной авторитетности — PoLA) — концепция в информационной безопасности, информатике и других смежных областях, согласно которой на каждом уровне абстракции вычислительной среды каждому модулю (будь то процесс, пользователь или программа) должны предоставляться только те права доступа к информации и ресурсам, которые необходимы для выполнения его прямых задач[1].

Подробности

Суть принципа минимальных привилегий заключается в том, чтобы предоставлять учётным записям пользователей или процессам только те права, которые жизненно необходимы для выполнения их задач. Например, учётная запись, предназначенная исключительно для создания резервных копий, не нуждается в установке программ — ей достаточно разрешить запуск приложений для резервного копирования. Любые другие полномочия, такие как установка новых программ, блокируются. Принцип распространяется и на пользователя персонального компьютера: обычно работа ведётся под обычной учётной записью, а учётная запись с повышенными правами используется только при крайней необходимости.

При применении к пользователям используют также термины «наименьший пользовательский доступ» или «учётная запись с минимальными привилегиями» (LUA — англ. least-privileged user account), подразумевающие работу пользователей и запуск приложений с минимально возможным объемом привилегий.

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

К преимуществам этого принципа относят:

  • Интеллектуальная безопасность. Когда масштабы изменений, которые может внести код в систему, строго ограничены, проще тестировать действия и взаимодействия такого кода с другими элементами системы защиты. Например, приложения с ограниченными правами не имеют доступа к операциям, способным вызвать сбой системы или негативно повлиять на другие программы на том же компьютере.
  • Улучшенная безопасность системы. Если программе запрещены действия на уровне системы, эксплуатация уязвимости в одном приложении не приведёт к компрометации всего компьютера. Так, компания Microsoft отмечает: «Работа в режиме обычного пользователя обеспечивает более высокую защиту от случайного повреждения системы, а также от атак типа „shatter“ и вредоносного ПО (руткитов, шпионского ПО и скрытых вирусов)»[2].
  • Упрощение развёртывания. Чем меньше прав требует приложение, тем легче его внедрять в сложной инфраструктуре. Например, в Windows решение без драйверов можно запускать без установки, в то время как драйверы требуют отдельной установки с помощью специальных служб Windows для предоставления им прав[3].

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

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

Оригинальная формулировка принципа дана Джеромом Солтцером[5]:

Каждая программа и каждый пользователь с особыми правами должны функционировать, используя минимально необходимое количество привилегий для выполнения своей работы.Communications of the ACM

Питер Дж. Деннинг помещает принцип минимальных привилегий в ряд с четырьмя фундаментальными принципами отказоустойчивости в работе операционных систем.

Концепция «динамического распределения привилегий» была рассмотрена Роджером Нидемом ещё в 1972 году[6][7].

К числу раннейших практических исторических применений принципа относят исходный код программы login.c в Version 6 Unix. Программа начинает выполнение с правами суперпользователь, но как только эти права не требуются — сбрасывает их через вызов setuid() с ненулевым аргументом (см. исходный код).

Реализация

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

undefined

Если выполнение возобновляется после сбоя с запуском троянского кода, злоумышленник может получить контроль над всеми процессами. Принцип минимальных привилегий ограничивает права кода минимально необходимым уровнем. Это означает, что код, восстановившийся после сбоя (как вредоносный, так и случайно исполняемый из неожиданной точки), не сможет выполнить нежелательные действия. Аппаратная поддержка принципа реализуется, в частности, в архитектуре Intel x86, где реализованы четыре режима (кольца 0—3) с разной степенью привилегий — аналог допусков в специальных службах.

В ряде операционных систем процессы запускаются с набором потенциальных и активных привилегий, которые наследуются от родительского процесса согласно поведению функции fork(). Исполняемый файл, выполняющий привилегированные функции (часть TCB — trusted computing base), также может иметь специальный набор прав, по аналогии с механизмами setuid и setgid. Набор привилегий, которыми может оперировать процесс, зависит от exec-вызова. Практическое соблюдение принципа минимальных привилегий требует запуска процессов только с необходимыми для задачи правами, однако это сопряжено со значительными сложностями и рисками ошибок.

Смежные принципы

В концепции Trusted Computer System Evaluation Criteria (TCSEC) минимизация доверенной вычислительной базы (TCB) требует ещё более строгого ограничения — при этом минимизация TCB реализуема только в классах наивысшей гарантии (B3 и A1).

Принцип минимальных привилегий часто сочетается с так называемым временным ограничением привилегий (часто называется privilege bracketing): привилегии запрашиваются непосредственно перед их использованием и отбрасываются, как только необходимость отпадает, тем самым уменьшая риск последствий избыточных прав. Кроме того, принцип минимальных привилегий трактуется и в контексте распределения дискреционных прав доступа (DAC): например, предоставление пользователю права на запись к файлу нарушает принцип минимальных привилегий, если для его задач хватило бы доступа только на чтение.

Примечания

  1. Saltzer, Jerome H.; Schroeder, Michael D. (1975). “The protection of information in computer systems”. Proceedings of the IEEE. Institute of Electrical and Electronics Engineers (IEEE). 63 (9): 1278—1308. DOI:10.1109/proc.1975.9939. ISSN 0018-9219. OCLC 5871551104. S2CID 269166.
  2. Jonathan, Clark Virtualization Guru Writes "User-mode is a Good Thing - Deployment to Locked-down Accounts without Security Elevation". DABCC. Дата обращения: 1 июня 2024. Архивировано 10 февраля 2013 года.
  3. Aaron Margosis. Problems of Privilege: Find and Fix LUA Bugs (англ.). Microsoft (август 2006). Дата обращения: 1 июня 2024. Архивировано 7 марта 2008 года.
  4. Matt Bishop, Computer Security: Art and Science, Boston, MA: Addison-Wesley, 2003. pp. 343-344 cited Barnum & Gegick 2005 (англ.). Дата обращения: 17 ноября 2007. Архивировано 20 октября 2007 года.
  5. Saltzer, Jerome H. (1974). “Protection and the control of information sharing in multics”. Communications of the ACM. 17 (7): 388—402. CiteSeerX 10.1.1.226.3939. DOI:10.1145/361011.361067. ISSN 0001-0782. S2CID 326132.
  6. Needham, R. M. Protection systems and protection implementations // Proceedings of the AFIPS '72 Fall Joint Computer Conference, December 5-7, 1972, Part I. — 1972. — P. 571–578. — doi:10.1145/1479992.1480073.
  7. Fred B. Schneider. Least Privilege and More. Дата обращения: 1 июня 2024. Архивировано 3 февраля 2004 года.

Литература

Категории