В информационной безопасности , информатике и других областях принцип минимальных привилегий ( PoLP ), также известный как принцип минимальных привилегий или принцип минимальных полномочий , требует, чтобы на определенном уровне абстракции вычислительной среды каждый модуль ( например, процесс , пользователь или программа , в зависимости от субъекта) должны иметь доступ только к той информации и ресурсам , которые необходимы для его законной цели. [1] [2]
Подробности
Принцип означает предоставление учетной записи пользователя или процессу только тех привилегий, которые необходимы для выполнения предполагаемой функции. Например, учетная запись пользователя с единственной целью создания резервных копий не требует установки программного обеспечения: следовательно, у нее есть права только на запуск приложений резервного копирования и резервного копирования. Любые другие привилегии, такие как установка нового программного обеспечения, заблокированы. Этот принцип применим также к пользователю персонального компьютера, который обычно работает с учетной записью обычного пользователя и открывает привилегированную учетную запись, защищенную паролем (то есть суперпользователя ), только когда этого требует ситуация.
Применительно к пользователям также используются термины с наименьшим доступом пользователя или учетной записью с наименьшими привилегиями (LUA), относящиеся к концепции, согласно которой все учетные записи пользователей должны запускаться с минимально возможным количеством привилегий , а также запускать приложения с минимальным количеством привилегий. .
Принцип наименьших привилегий широко признан в качестве важного фактора, учитываемого при проектировании при усилении защиты данных и функциональности от сбоев ( отказоустойчивость ) и злонамеренного поведения ( компьютерная безопасность ).
Преимущества принципа включают:
- Лучшая стабильность системы. Когда код ограничен объемом изменений, которые он может внести в систему, легче протестировать его возможные действия и взаимодействия с другими приложениями. На практике, например, приложения, работающие с ограниченными правами, не будут иметь доступа для выполнения операций, которые могут привести к сбою машины или отрицательно повлиять на другие приложения, работающие в той же системе.
- Лучшая безопасность системы. Когда код ограничен в общесистемных действиях, которые он может выполнять, уязвимости в одном приложении не могут использоваться для эксплуатации остальной части машины. Например, Microsoft заявляет: «Работа в стандартном пользовательском режиме дает клиентам повышенную защиту от непреднамеренного повреждения системного уровня, вызванного« сокрушительными атаками »и вредоносными программами , такими как руткиты , шпионское ПО и необнаруживаемые вирусы ». [3]
- Легкость развертывания. Как правило, чем меньше привилегий требуется приложению, тем проще его развертывать в более крупной среде. Обычно это связано с первыми двумя преимуществами: приложения, которые устанавливают драйверы устройств или требуют повышенных прав безопасности, обычно имеют дополнительные шаги, связанные с их развертыванием. Например, в Windows решение без драйверов устройств может быть запущено напрямую без установки, в то время как драйверы устройств должны быть установлены отдельно с помощью службы установщика Windows, чтобы предоставить драйверу повышенные привилегии. [4]
На практике существует несколько конкурирующих определений истинных наименьших привилегий. Поскольку сложность программы растет в геометрической прогрессии, [ необходима цитата ] растет и количество потенциальных проблем, что делает прогнозный подход непрактичным. Примеры включают значения переменных, которые он может обрабатывать, адреса, которые ему потребуются, или точное время, когда такие вещи потребуются. Системы возможностей объектов позволяют, например, отложить предоставление привилегии одноразового использования до того момента, когда она будет использована. В настоящее время наиболее близким практическим подходом является устранение привилегий, которые можно вручную оценить как ненужные. Результирующий набор привилегий обычно превышает реальный минимально необходимый набор привилегий для процесса.
Еще одно ограничение - это степень детализации контроля, который операционная среда имеет над привилегиями для отдельного процесса. [5] На практике редко возможно управлять доступом процесса к памяти, временем обработки, адресами устройств ввода-вывода или режимами с точностью, необходимой для обеспечения только точного набора привилегий, которые потребуются процессу.
История
Оригинальная формулировка принадлежит Джерому Зальцеру : [6]
Каждая программа и каждый привилегированный пользователь системы должны работать с минимальным количеством привилегий, необходимых для выполнения работы.
Питер Дж. Деннинг в своей статье «Отказоустойчивые операционные системы» дал более широкую перспективу из четырех основных принципов отказоустойчивости.
Динамическое назначение привилегий ранее обсуждалось Роджером Нидхэмом в 1972 г. [7] [8]
Исторически самым старым экземпляром наименьших привилегий, вероятно, является исходный код login.c , который начинает выполнение с разрешениями суперпользователя и - в тот момент, когда они больше не нужны - отклоняет их через setuid () с ненулевым аргументом, как показано в исходном коде Unix Версии 6 .
Выполнение
Ядро всегда работает с максимальными привилегиями , поскольку это операционная система ядра и имеет доступ к аппаратным средствам. Одной из основных задач операционной системы, особенно многопользовательской операционной системы, является управление доступностью оборудования и запросами на доступ к нему из запущенных процессов . Когда ядро выходит из строя, механизмы, с помощью которых оно поддерживает состояние, также выходят из строя. Следовательно, даже если у ЦП есть способ восстановления без аппаратного сброса , безопасность по-прежнему будет обеспечиваться, но операционная система не может должным образом отреагировать на сбой, потому что не удалось обнаружить сбой. Это связано с тем, что выполнение ядра либо остановлено, либо счетчик программ возобновил выполнение откуда-то из бесконечного и - обычно нефункционального цикла . [ необходима цитата ] Это было бы похоже на амнезию (сбой выполнения ядра) или попадание в замкнутый лабиринт, который всегда возвращается в исходную точку (замкнутые циклы).
Если выполнение возобновляется после сбоя при загрузке и запуске троянского кода , автор троянского кода может узурпировать контроль над всеми процессами. Принцип наименьших привилегий заставляет код работать с наименьшим возможным уровнем привилегий / разрешений. Это означает, что код, который возобновляет выполнение кода - будь то троян или просто запуск кода из неожиданного места - не будет иметь возможности выполнять вредоносные или нежелательные процессы. Один метод, используемый для этого, может быть реализован в микропроцессорной аппаратуре. Например, в архитектуре Intel x86 производитель разработал четыре (от кольца 0 до кольца 3) работающих «режимов» с градуированными степенями доступа, что очень похоже на системы проверки безопасности в оборонных и разведывательных агентствах. [ необходима цитата ]
Как реализовано в некоторых операционных системах, процессы выполняются с потенциальным набором привилегий и активным набором привилегий . [ необходима цитата ] Такие наборы привилегий наследуются от родителя, как определено семантикой fork () . Исполняемый файл , который выполняет привилегированную функцию, таким образом , технически составляющий компонент TCB , и одновременно называют доверенную программу или процесс, может также быть маркирован с набором привилегий. Это логическое расширение понятий « установить идентификатор пользователя» и « установить идентификатор группы» . [ необходимая цитата ] Наследование файловых привилегий процессом определяется семантикой семейства системных вызовов exec () . Точный способ взаимодействия потенциальных привилегий процессов, фактических привилегий процессов и привилегий файлов может стать сложным. На практике наименьшие привилегии практикуются, заставляя процесс запускаться только с теми привилегиями, которые требуются задаче. Соблюдение этой модели довольно сложно, а также подвержено ошибкам.
Подобные принципы
Концепция критериев оценки доверенных компьютерных систем (TCSEC) минимизации доверенной вычислительной базы (TCB) является гораздо более строгим требованием, которое применимо только к наиболее функционально сильным классам гарантии, а именно. , B3 и A1 (которые доказательно различаются, но функционально идентичны).
Наименьшие привилегии часто связаны с брекетингом привилегий : то есть принятие необходимых привилегий в последний возможный момент и их отклонение, как только больше не является строго необходимым, что якобы сокращает последствия ошибочного кода, который непреднамеренно использует больше привилегий, чем заслужено. Наименьшие привилегии также интерпретировались в контексте распределения разрешений дискреционного контроля доступа (DAC), например, утверждая, что предоставление пользователю U доступа для чтения / записи к файлу F нарушает минимальные привилегии, если U может выполнять свои авторизованные задачи только с разрешением на чтение.
Смотрите также
- Контроль учетных записей пользователей
- Безопасность на основе возможностей
- Компартментализация (разведка)
- Запутанная депутатская проблема
- Инкапсуляция (объектно-ориентированное программирование)
- Нужно знать
- Брекетинг привилегий
- Повышение привилегий
- Отзыв привилегии (вычисления)
- Разделение привилегий
- Защитное кольцо
- Setuid
- судо
Рекомендации
- ^ Зальцер и Шредер 75
- ^ Деннинг 76
- ^ Джонатан, Кларк; DABCC Inc. «Гуру виртуализации пишет:« Пользовательский режим - это хорошо - развертывание на заблокированных учетных записях без повышения уровня безопасности » » . Дата обращения 15 марта 2013 .
- ^ Аарон Маргозис (август 2006 г.). «Проблемы привилегий: поиск и исправление ошибок LUA» . Microsoft .
- ↑ Мэтт Бишоп, Компьютерная безопасность: искусство и наука , Бостон, Массачусетс: Аддисон-Уэсли, 2003. стр. 343-344, цитируется Barnum & Gegick 2005.
- ^ Зальцер, Джером Х. (1974). «Защита и контроль обмена информацией в мультиках». Коммуникации ACM . 17 (7): 388–402. CiteSeerX 10.1.1.226.3939 . DOI : 10.1145 / 361011.361067 . ISSN 0001-0782 .
- ^ Нидхэм, RM (1972). «Системы защиты и реализации защиты». Труды AFIPS '72 Fall Joint Computer конференции, 5-7 декабря 1972 года, часть I . С. 571–578. DOI : 10.1145 / 1479992.1480073 .
- ^ Фред Б. Шнайдер. «Наименьшие привилегии и многое другое» (PDF) .
Библиография
- Бен Манкин, Формализация систем защиты , докторская диссертация, Университет Бата, 2004 г.
- П.Дж. Деннинг (декабрь 1976 г.). «Отказоустойчивые операционные системы». ACM Computing Surveys . 8 (4): 359–389. DOI : 10.1145 / 356678.356680 .
- Джерри Х. Зальцер, Майк Д. Шредер (сентябрь 1975 г.). «Защита информации в компьютерных системах» . Труды IEEE . 63 (9): 1278–1308. CiteSeerX 10.1.1.126.9257 . DOI : 10,1109 / PROC.1975.9939 .
- Дейтель, Харви М. (1990). Введение в операционные системы (пересмотренное первое издание). Эддисон-Уэсли. п. 673 . ISBN 978-0-201-14502-1. стр.31.
- Шон Мартин (апрель 2012 г.). «Не теряются ли основы безопасности под покровом облака и мобильных устройств?» . Журнал SC .
- Институт SANS (май 2013 г.). «20 критических мер безопасности» (PDF) . Институт SANS . Архивировано из оригинального (PDF) 01.11.2013.
Внешние ссылки
- Управление минимальными привилегиями из облака, Моник Сендзе
- Статья Зальцера и Шредера, цитируемая в ссылках.
- NSA (которое реализовало SELinux) говорит о принципе наименьших привилегий.
- Обсуждение реализации принципа наименьших привилегий в Solaris
- Принцип минимально привилегированного доступа с вашей политикой регистрации и прекращения работы
- «Доказательство того, что LUA делает вас в большей безопасности» Дана Эпп
- Применение принципа наименьших прав к учетным записям пользователей в Windows XP, Microsoft
- «Коммерческие предприятия подвергают риску нашу критически важную инфраструктуру» CSO
- Как успешно реализовать принцип наименьших привилегий