Глава 15. Программные уязвимости

15.1. Контроль доступа в информационных системах

В информационных системах контроль доступа вводится над действия субъектов над объектами. В операционных системах под субъектами почти всегда понимаются процессы, под объектами – процессы, разделяемая память, объекты файловой системы, порты ввода-вывода и т. д., под действием – чтение (файла или содержимого директории), запись (создание, добавление, изменение, удаление, переименование файла или директории) и исполнение (файла-программы). Система контроля доступа в информационной системе (операционной системе, базе данных и т. д.) определяет множество субъектов, объектов и действий.

Применение контроля доступа создаётся:

  1. аутентификацией субъектов и объектов,
  2. авторизацией допустимости действия,
  3. аудитом (проверкой и хранением) ранее совершённых действий.

Различают три основные модели контроля доступа: дискреционная (англ. discretionary access control, DAC), мандатная (англ. mandatory access control, MAC) и ролевая (англ. role-based access control, RBAC). Современные операционные системы используют комбинации двух или трёх моделей доступа, причём решения о доступе принимаются в порядке убывания приоритета: ролевая, мандатная, дискреционная модели.

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

15.1.1. Дискреционная модель

Классическое определение из так называемой Оранжевой книги (англ. ``Trusted Computer System Evaluation Criteria'', устаревший стандарт министерства обороны США 5200.28-STD, 1985 г. [29]) следующее: дискреционная модель – средства ограничения доступа к объектам, основанные на сущности (англ. identity) субъекта и/или группы, к которой они принадлежат. Субъект, имеющий определённый доступ к объекту, обладает возможностью полностью или частично передать право доступа другому субъекту.

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

Дискреционную модель реализуют почти все популярные ОС, в частности Windows и Unix. У каждого объекта (файла, процесса и т. д.) есть субъект-владелец (пользователь, группа пользователей или система), который может делегировать доступ к объекту другим субъектам, изменяя атрибуты на чтение и запись файлов. Администратор системы обычно имеет возможно поменять владельца любого объекта и любые атрибуты безопасности.

15.1.2. Мандатная модель

Приведем классическое определение мандатной модели из Оранжевой книги. Мандатная модель контроля доступа – это модель, в которой используются средства ограничения доступа к объектам, основанные на важности (секретности) информации, содержащейся в объектах, и обязательная авторизация действий субъектов для доступа к информации с присвоенным уровнем важности. Важность информации определяется уровнем доступа, приписываемым всем объектам и субъектам. Исторически мандатная модель определяла важность информации в виде иерархии, например совершенно секретно (СС), секретно (С), конфиденциально (К) и рассекречено (Р). При этом верно следующее: СС $\supset$ C $\supset$ K $\supset$ P, то есть каждый уровень включает сам себя и все уровни, находящиеся ниже в иерархии.

Современное определение мандатной модели – применение явно указанных правил доступа субъектов к объектам, определяемых только администратором системы. Сами субъекты (пользователи) не имеют возможности для изменения прав доступа. Правила доступа описаны матрицей, в которой столбцы соответствуют субъектам, строки – объектам, а в ячейках содержатся допустимые действия субъекта над объектом. Матрица покрывает всё пространство субъектов и объектов. Также определены правила наследования доступа для новых создаваемых объектов. В мандатной модели матрица может быть изменена только администратором системы.

Модель Белла — Ла Падулы (англ. Bell — LaPadula Model, [8, 9]) использует два мандатных и одно дискреционное правила политики безопасности.

  1. Субъект с определённым уровнем секретности не может иметь доступ на чтение объектов с более высоким уровнем секретности (англ. no read-up).
  2. Субъект с определённым уровнем секретности не может иметь доступ на запись объектов с более низким уровнем секретности (англ. no write-down).
  3. Использование матрицы доступа субъектов к объектам для описания дискреционного доступа.

15.1.3. Ролевая модель

Ролевая модель доступа основана на определении ролей в системе. Понятие «роль» в этой модели – это совокупность действий и обязанностей, связанных с определённым видом деятельности. Таким образом, достаточно указать тип доступа к объектам для определённой роли и определить группу субъектов, для которых она действует. Одна и та же роль может использоваться несколькими различными субъектами (пользователями). В некоторых системах пользователю разрешается выполнять несколько ролей одновременно, в других есть ограничение на одну или несколько непротиворечащих друг другу ролей в каждый момент времени.

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