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