Система и способ контроля доступа на основе ACL
ACL BASED ACCESS CONTROL SYSTEM AND METHOD

Область техники
Изобретение относится к области контроля приложений, а именно к системам и способам контроля доступа на основе списков контроля доступа (англ. access control list, ACL).
Уровень техники
В настоящее время в корпоративных сетях широко распространены решения в области контроля приложений (application control), в частности контроля запуска и выполнения приложений. При помощи таких решений администратору или любому другому специалисту, ответственному за безопасность сети, проще контролировать, какие приложения используются и запускаются на компьютерах сети. При помощи контроля приложений администратор может, например, определять, какие приложения можно запускать, какие нельзя, и какие исключения могут быть и в том, и в другом случае. Современные системы контроля приложений обладают гибким инструментарием для формирования правил контроля доступа к объектам операционных систем (ОС), в том числе и к файлам приложений: доступ может осуществляться как на основании списков запрещенных и разрешенных приложений, так и на основании более сложных правил доступа, которые учитывают различные атрибуты как самого доступа, например токен доступа (англ. access token), так и объекта, к которому упомянутый доступ осуществляется.
Однако существует ряд особенностей ОС Windows поздних версий, например версии 10, которые диктуют архитектуру систем контроля приложений: некоторая информация, которая используется системой контроля приложений для поиска правил доступа, регулирующих доступ к некоторому объекту, а также для принятия решения о предоставлении доступа к этому объекту (например, для систем контроля приложений Kaspersky Lab такой информацией может являться информация об электронной цифровой подписи - ЭЦП), недоступна для компонентов системы контроля приложений, которые запущены в режиме ядра (англ. kernel mode), при этом ряд других компонентов, например перехватывающих доступ к объектам операционной системы, должен работать в режиме ядра. При этом переключение между режимом пользователя и режимом ядра при работе системы контроля приложений - трудоемкая операция, требующая большого (относительно выполнения без переключения) времени. В такой ситуации может применяться предварительная обработка правил доступа для их последующего применения компонентами системы контроля приложений, работающих в режиме ядра, в частности трансляция правила из одного представления в другое, например в формат списков контроля доступа (англ. access control list, ACL, в частности discretionary ACL - DACL).
В уровне техники существуют подходы транслирования правил из одного представления в другое. Например в ЕР 1668437 В1 описана трансляции правил из представления, используемого в ОС семейства Unix в ACL. Однако в описанном подходе не описаны варианты трансляции правил доступа с целью уменьшения времени, в течении которого система контроля приложений принимает решение о предоставлении доступа к некоторому объекту или нет.
Хотя подходы в уровне техники направлены на решение определенных задач в области контроля приложений, они не решают задачу контроля приложений при использовании ACL или решают недостаточно эффективно. Настоящее изобретение позволяет более эффективно решить задачу контроля приложений.
Раскрытие изобретения
Настоящее изобретение предназначено для оптимизации процедуры принятия решения относительно доступа к объекту операционной системы.
Технический результат настоящего изобретения заключается в уменьшении времени, в течение которого проводится принятие решения о блокировании доступа, перехваченного в режиме ядра, к объекту операционной системы, которое достигается за счет применения набора ACL, сформированного на основании правил доступа к объекту, также в режиме ядра.
Еще один технический результат настоящего изобретения заключается в уменьшении времени проверки объекта операционной системы модулем контроля приложений, при этом технический результат достигается путем исключения упомянутого объекта из проверки при блокировании доступа к объекту операционной системы при помощи средства контроля.
Способ применения набора списков контроля доступа для контроля приложений, в котором: формируют при помощи средства трансляции набор из по меньшей мере одного списка контроля доступа для объекта операционной системы на основании по меньшей мере одного правила доступа к упомянутому объекту; при этом этап формирования формирование осуществляется средством трансляции в режиме пользователя; перехватывают при помощи средства контроля доступ к объекту операционной системы, для которого был сформирован на этапе ранее набор списков контроля доступа; при этом в результате перехвата определяют учетную запись пользователя, используемую для доступа; при этом этап перехвата доступа осуществляется средством контроля в режиме ядра; применяют при помощи средства контроля сформированный набор списков контроля доступа для объекта операционной системы, доступ к которому был перехвачен, к учетной записи пользователя, определенной на этапе ранее; при этом применение набора списков контроля доступа формирует решение блокировать ли доступ к объекту или нет; при этом этап применения набора списков контроля доступа осуществляется средством контроля в режиме ядра; блокируют при помощи средства контроля перехваченный на этапе ранее доступ к объекту операционной системы, если на этапе ранее было сформировано решения о блокировании доступа к объекту; при этом этап блокирования доступа осуществляется средством контроля в режиме ядра.
В другом варианте реализации способа списком контроля доступа является список избирательного контроля доступа - DACL.
В еще одном из вариантов реализации способа под определением учетной записи пользователя понимают определение по крайней мере токена доступа, который формируется операционной системой Windows при авторизации пользователя на вычислительном устройстве.
В другом варианте реализации способа объектом операционной системы является по меньшей мере файл, запись реестра, любой другой защищаемый объект в операционной системе Windows.
В еще одном из вариантов реализации способа доступом к объекту операционной системы является по меньшей мере вызовов одной из системных функций для загрузки объекта операционной системы или его части в оперативную память: Loadlibrary, OpenFileEx, RegCreateKey.
В другом варианте реализации способа при блокировании доступа к объекту операционной системы упомянутый объект исключается из проверки, которая проводится модулем контроля приложений.
В еще одном из вариантов реализации способа правилами доступа к объекту операционной системы являются правила доступа, которые описывают режим доступа к объекту операционной системы со стороны по меньшей мере одного пользователя, а также обладают одним из двух свойств: «запрет по умолчанию», «доступ по умолчанию»; при этом режим доступа может быть «доступ разрешен» или «доступ запрещен».
В другом варианте реализации способа правилами доступа к объекту являются правила, используемые модулем контроля приложений.
В еще одном из вариантов реализации способа формируемый набор списков контроля доступа состоит из минимально возможного числа списков контроля доступа, которое описывает контроль доступа к объекту операционной системы в соответствии с правилами доступа.
Система применения набора списков контроля доступа для контроля приложений, которая содержит: средство контроля, предназначенное для перехвата доступа к объекту операционной системы; при этом в результате перехвата определяют учетную запись пользователя, используемую для доступа; для применения набора списков контроля доступа для объекта операционной системы, доступ к которому был перехвачен, к учетной записи пользователя, а также для блокирования доступа к объекту операционной системы, если было сформировано решения о блокировании доступа к объекту; при этом применение набора списков контроля доступа формирует решение, блокировать ли доступ к объекту или нет; при этом средство контроля функционирует в режиме ядра; средство трансляции, связанное со средством контроля и предназначенное для формирования набора из по меньшей мере одного списка контроля доступа для объекта операционной системы на основании по меньшей мере одного правила доступа к упомянутому объекту; при этом средство трансляции функционирует в режиме пользователя.
В другом варианте реализации системы списком контроля доступа является список избирательного контроля доступа - DACL.
В еще одном варианте реализации системы под определением учетной записи пользователя понимают определение по крайней мере токена доступа, который формируется операционной системой Windows при авторизации пользователя на вычислительном устройстве.
В другом варианте реализации системы объектом операционной системы является по меньшей мере файл, запись реестра, любой другой защищаемый объект в операционной системе Windows.
В еще одном варианте реализации системы доступом к объекту операционной системы является по меньшей мере вызовов одной из системных функций для загрузки объекта операционной системы или его части в оперативную память: Loadlibrary, OpenFileEx, RegCreateKey.
В другом варианте реализации системы при блокировании доступа к объекту операционной системы упомянутый объект исключается из проверки, которая проводится модулем контроля приложений.
В еще одном варианте реализации системы правилами доступа к объекту операционной системы являются правила доступа, которые описывают режим доступа к объекту операционной системы со стороны по меньшей мере одного пользователя, а также обладают одним из двух свойств: «запрет по умолчанию», «доступ по умолчанию»; при этом режим доступа может быть «доступ разрешен» или «доступ запрещен».
В другом варианте реализации системы правилами доступа к объекту являются правила, используемые модулем контроля приложений.
В еще одном варианте реализации системы формируемый набор списков контроля доступа состоит из минимально возможного числа списков контроля доступа, которое описывает контроль доступа к объекту операционной системы в соответствии с правилами доступа.
Краткое описание чертежей
Дополнительные цели, признаки и преимущества настоящего изобретения будут очевидными из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:
Фиг. 1 иллюстрирует структурную схему системы контроля доступа на основе ACL.
Фиг. 2 показывает примерную схему алгоритма работы одного из вариантов реализации способа контроля доступа на основе ACL.
Фиг. 3 показывает пример компьютерной системы общего назначения.
Хотя изобретение может иметь различные модификации и альтернативные формы, характерные признаки, показанные в качестве примера на чертежах, будут описаны подробно. Следует понимать, однако, что цель описания заключается не в ограничении изобретения конкретным его воплощением. Наоборот, целью описания является охват всех изменений, модификаций, входящих в рамки данного изобретения, как это определено приложенной формуле.
Описание вариантов осуществления изобретения
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является не чем иным, как конкретными деталями, необходимыми для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется в объеме приложенной формулы.
Введем ряд определений и понятий, которые будут использоваться при описании вариантов осуществления изобретения.
Вредоносное приложение - приложение, способное нанести вред компьютеру или данным пользователя компьютера, например: сетевой червь, клавиатурный шпион, компьютерный вирус. В качестве нанесенного вреда может выступать неправомерный доступ к ресурсам компьютера, в том числе к данным, хранящимся на компьютере, с целью хищения, а также неправомерное использование ресурсов, в том числе для хранения данных, проведения вычислений и т.п.
Доверенное приложение - приложение, которое не наносит вреда компьютеру или его пользователю. Доверенным приложением может считаться приложение, разработанное доверенным производителем ПО, загруженное из доверенного источника (например, сайт, занесенный в базу данных доверенных сайтов) или приложение, идентификатор которого (например, MD5 файла приложения) хранится в базе данных доверенных приложений. Идентификатор производителя, например, цифровой сертификат, может также храниться в базе данных доверенных приложений.
Недоверенное приложение - приложение, которое не является доверенным, но также не признано вредоносным, например, при помощи антивирусного приложения.
Вредоносный файл - файл, являющийся компонентом вредоносного приложения и который будет использоваться, например будет загружен в оперативную память, вредоносным приложением во время работы.
Недоверенный файл - файл, являющийся компонентом недоверенного приложения и который будет использоваться, например будет загружен в оперативную память, недоверенным приложением во время работы.
Доверенный файл - файл, являющийся компонентом доверенного приложения и который будет использоваться, например будет загружен в оперативную память, доверенным приложением во время работы. Доверенный файл может быть использован недоверенным приложением.
Объект операционной системы - по меньшей мере файл, запись реестра или любой другой защищаемый объект (англ. securable object в ОС Windows, https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa379557(v=vs.85).aspx) - любой объект в операционной системе (ОС) Windows, который имеет дескриптор безопасности (англ. security descriptor в ОС Windows, https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa379563(v=vs.85).aspx), содержащий по меньшей мере идентификатор безопасности (англ. security identifier в ОС Windows, SID, https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa379571(v=vs.85).aspx) владельца объекта (например, учетной записи пользователя, создавшего файл, при условии, что объект операционной системы - файл), список избирательного контроля доступа (англ. DACL, discretionary access control list в ОС Windows, https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa374872(v=vs.85).aspx, также используется формулировка «список избирательного управления доступом» или «избирательная таблица управления доступом»). То, как DACL применяется в ОС Windows описано в документации от Microsoft: https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa446683(v=vs.85).aspx, с принципы устройства и особенности применения DACL в ОС Windows также описаны в следующей литературе:
- «Windows 10 Inside Out», 2016. ISBN-13 978-1-5093-0485-1;
- «ACL for Windows, Version 7», 2002, ISBN-13 978-1894497176;
- «Programming Windows Security», 2000, ISBN-13 978-0201604429;
- «Внутреннее устройство Microsoft Windows. 6-е изд.», 2013, ББК 32.973.2-018.2;
- «Системное программирование в Windows», 2006, ISBN 5-94157-792-3, ББК 32.973.26-018.1;
- «Windows Server 2008 All-In-One Desk Reference For Dummies», 2008, ISBN 978-0-470-18044-0.
Доступ к объекту операционной системы - по меньшей мере вызов одной из системных функций для загрузки объекта операционной системы или его части в оперативную память, например Loadlibrary, OpenFile, RegCreateKey, CreateProcess.
Определение учетной записи пользователя, от имени которого осуществляется доступ - выделение по крайней мере идентификатора безопасности (англ. security identifier в ОС Windows, SID, https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa379571(v=vs.85).aspx). Идентификатор безопасности хранится в токене доступа (англ. access token в ОС Windows), токен доступа формируется операционной системой (например, Windows) при авторизации пользователя на вычислительном устройстве. В еще одном из вариантов реализации изобретения под определением учетной записи пользователя, от имени которого осуществляется доступ - определение (выделение) токена доступа.
Правило доступа к объекту операционной системы - правило доступа, которое описывает режим доступа к объекту операционной системы со стороны по меньшей мере одного пользователя (с использованием учетной записи по меньшей мере одного пользователя) или группы пользователей (т.е. возможны ситуации, где правило доступа описывает доступ со стороны нескольких пользователей и/или нескольких групп пользователей), а также обладает одним из двух свойств: «запрет по умолчанию» (англ. default deny), «доступ по умолчанию» (англ. default access); при этом режим доступа может быть «доступ разрешен» или «доступ запрещен». Если правилом предписан режим доступа «доступ разрешен» в отношении некоторого объекта операционной системы, то в соответствии с этим правилом доступ к этому объекту должен быть разрешен (не запрещен), например, при помощи модуля контроля приложений. Если правилом предписан режим доступа «доступ запрещен» в отношении некоторого объекта операционной системы, то в соответствии с этим правилом доступ к этому объекту должен быть запрещен, например при помощи модуля контроля приложений. В частном случае реализации правилами доступа к объекту являются правила, используемые модулем контроля приложений (англ. application control). Пример модуля контроля приложений - Kaspersky Endpoint Security (KES). Стоит отметить, что модуль контроля приложений - известное из уровня техники понятие (например, https://www.admin-smolensk.ru/information_security/pers/Vipnet1.pdf, http://www.cisco.com/c/en/us/td/docs/interfaces_modules/services_modules/ace/vA5_1_0/configuration/administration/guide/admgd.pdf). Стоит отметить, что модуль контроля приложений может обладать параметром работы (который может быть установлен для модуля контроля приложений, например, администратором сети, при этом, если параметр работы не установлен, считается, что он принимает значение «доступ по умолчанию»), принимающим значения «доступ по умолчанию» (англ. «default access») или «запрет по умолчанию» (англ. default deny). Значение параметра работы «доступ по умолчанию» подразумевает, что доступ к объекту операционной системы будет предоставлен, если доступ явным образом не запрещен (например, в соответствии с правилом доступа). Значение параметра работы «запрет по умолчанию» подразумевает, что доступ к объекту операционной системы будет запрещен (блокирован), если доступ явным образом не разрешен (например, в соответствии с правилом доступа).
Под средствами системы контроля доступа на основе ACL в настоящем изобретении понимаются реальные устройства, системы, компоненты, группы компонентов, реализованные с использованием аппаратных средств, таких как интегральные микросхемы (англ. application-specific integrated circuit, ASIC) или программируемые вентильные матрицы (англ. field-programmable gate array, FPGA) или, например, в виде комбинации программных и аппаратных средств, таких как микропроцессорная система и набор программных инструкций, а также на нейроморфных чипах (англ. neurosynaptic chips) Функциональность указанных средств системы может быть реализована исключительно аппаратными средствами, а также в виде комбинации, где часть функциональности средств системы реализована программными средствами, а часть аппаратными. В некоторых вариантах реализации часть средств, или все средства, могут быть исполнены на процессоре компьютера общего назначения (например, который изображен на Фиг. 3), также именуемого вычислительным устройством. При этом компоненты (каждое из средств) системы могут быть реализованы в рамках как одного вычислительного устройства, так и разнесены между несколькими, связанными между собой вычислительными устройствами.
На Фиг. 1 приведена структурная схема системы контроля доступа на основе ACL. Система контроля доступа на основе ACL (англ. access control list, ACL, далее под понятием ACL будет подразумеваться один из его типов в ОС семейства Windows, а именно DACL - список избирательного контроля доступа, описывающий, какой пользователь обладает каким правом в отношении доступа к некоторому объекту ОС, также иногда используется формулировка «список избирательного управления доступом» или «избирательная таблица управления доступом») содержит средство контроля 110, и связанное с ним средство трансляции 120. В одном из вариантов реализации изобретения средство контроля 110, а также средство трансляции 120 расположены на одном и том же вычислительном устройстве. В одном из вариантов реализации изобретения на упомянутом вычислительном устройстве дополнительно присутствует база данных правил доступа 130, а также модуль контроля приложений 140. В еще одном частном случае реализации средство трансляции 120 вынесено за пределы упомянутого вычислительного устройства, например на удаленный сервер. В такой ситуации средство трансляции 120 связано с вышеописанными компонентами и модулями (а именно, изображенными на Фиг. 1, в том числе и базами данных) при помощи сети передачи данных.
Средство контроля 110 предназначено для перехвата доступа к объекту операционной системы; при этом в результате перехвата определяют учетную запись пользователя, используемую для доступа; для применения набора ACL для объекта операционной системы, доступ к которому был перехвачен, к учетной записи пользователя, а также для блокирования доступа к объекту операционной системы, если было сформировано решения о блокировании доступа к объекту; при этом применение набора ACL формирует решение блокировать ли доступ к объекту или нет; при этом средство контроля функционирует в режиме ядра (англ. kernel mode).
Средство контроля 110 перехватывает доступ к объекту операционной системы при помощи компонента, реализованного в виде драйвера, который внедрен в стек вызовов системных функций, при помощи которых осуществляется доступ к объекту операционной системы 106. Для наглядности описания в качестве примера объекта операционной системы 106 будет рассмотрен файл, а именно исполняемый файл программы, ссылки на него в описании будут также обозначены номером 106 на Фиг. 1.
Стоит отметить, что в рамках вычислительного устройства пользователь 105 взаимодействует только с устройствами ввода/вывода и не осуществляет напрямую других действий, например доступа к объектам операционной системы 106. Далее в рамках описания настоящего изобретения под пользователем 105 будем понимать учетную запись, используемую им на вычислительном устройстве. В частности, под доступом, осуществляемым от лица пользователя 105 понимают доступ, осуществляемый с использованием учетной записи пользователя 105, например, при помощи токена доступа (англ. access token), создаваемого операционной системой при успешной аутентификации пользователя 105.
При обнаружении доступа от лица пользователя 105 (следует иметь в виду, что доступ осуществляется посредством приложения, например запущенного от лица пользователя 105) к файлу 106 средство контроля 110 определяет учетную запись пользователя 105, используемую для доступа. В частном случае результатом определения упомянутой учетной записи является определение (получение, выделение) токена доступа пользователя 105, сгенерированного операционной системой при авторизации пользователя 105, токен доступа можно получить вызовом системной функции OpenProcessToken. В еще одном частном случае реализации средство 110 в рамках определения упомянутого пользователя определяет идентификатор безопасности, которых хранится в токене доступа, идентификатор безопасности можно получить вызовом системной функции GetTokenlnformation или LookupAccountName. Полученный токен доступа средство 110 использует (в качестве аргумента вызова одной из функций, приведенных далее) для применения набора списков контроля доступа для объекта операционной системы 106, к которому был перехвачен доступ, осуществленный от лица пользователя 105. В еще одном частном случае реализации результатом определения упомянутой учетной записи является определение идентификатор безопасности (SID). Набор списков контроля доступа может состоять из одного и более списков контроля доступа.
Средство контроля 110 применяет набор ACL для объекта операционной системы 106 к учетной записи, используемой пользователем 105 для осуществления доступа к объекту операционной системы 106. Средство 110 применяет набор ACL при помощи последовательного вызова одной из следующих системных функций к каждому ACL из набора ACL (количество вызовов равно количеству ACL в наборе): SeAccessCheck, AccessCheck, AccessCheckByType, AccessCheckByTypeResultList, при этом при каждом вызове одной из функций ACL указывается как составная часть (одно из полей структуры данных - DACL) описателя безопасности (англ. security descriptor) - аргумента функции. Учетная запись пользователя 105, используемая для доступа, также учитывается при применении набора ACL: результат определения учетной записи пользователя 105 средством контроля 110 указывается в качестве параметра вышеуказанных функций (в одном из вариантов реализации название параметра - ClientToken). Если хотя бы один из вызовов функций назначает переменной (выходному параметру вызова соответствующей функции) AccessStatus значение указателя, по адресу которого находится значение FALSE (а именно по адресу находится область памяти, содержащая значение, обозначенное в ОС Windows как FALSE), то средство контроля 110 формирует решение о блокировании доступа к объекту 106, в противном случае средство контроля 110 не принимает решения о блокировании доступа к объекту 106. Иными словами, если хотя бы один ACL запрещает доступ к объекту 106, доступ будет заблокирован, в противном случае доступ не будет заблокирован. Таким образом решение о блокировании доступа к объекту 106 принимается средством контроля 110 на основании применения набора ACL для объекта 106, к которому осуществляется доступ от лица пользователя 105 к учетной записи пользователя 106 (а именно, результатам определения учетной записи). В одном из вариантов реализации изобретения блокирование доступа - завершение вызова (а именно выполнения) соответствующей функции, при помощи которой осуществляется доступ к объекту 106.
Набор ACL, который применяется средством контроля 110, передается от средства трансляции 120. В частном случае реализации средство трансляции 120 предоставляет средству контроля 110 набор ACL для объекта операционной системы 106, доступ к которому перехвачен средством 110, в ответ на идентификатор объекта 106, который поступает от средства контроля 110. Идентификатором объекта операционной системы может быть по крайней мере:
- идентификатор файла в файловой системе, например путь к файлу на устройстве хранения данных, если объект 106 - файл;
- идентификатор процесса (ProcessID);
- любая другая информация, однозначно идентифицирующая объект в операционной системе.
В частном случае реализации при принятии решения о блокировании доступа к объекту операционной системы 106 (а, соответственно, и при самом блокировании) средство контроля 110 передает модулю контроля приложений 140 уведомление для исключения упомянутого объекта операционной системы 106 из проверки, которая проводится модулем контроля приложений 140. Получив такое уведомление, модуль контроля приложений 140 исключает указанный объект 106 из проверки, проводимой модулем контроля приложений 140. В частном варианте реализации изобретения проверка, осуществляемая модулем контроля приложений 140, - проверка возможности доступа с использованием учетной записи пользователя 105 к объекту операционной системы 106. По результатам проверки может быть приняты решения: блокировать доступ или разрешить доступ. Стоит отметить, что в данном случае использование системы контроля доступа на основе ACL позволяет сократить время, которое потратит модуль контроля приложений 140 на проверку группы объектов операционной системы (например, файлов), так как в отношении некоторых из этих объектов не будет проводиться проверка модулем контроля приложений 140 после получения соответствующего уведомления от средства контроля 110.
В еще одном случае реализации изобретения при запуске вычислительного устройства, на котором располагается средство контроля 110, драйвер, который входит в состав средства 110, и при помощи которого средство 110 осуществляет перехват доступа к объекту 106, загружается в оперативную память (в том числе и выполняется в оперативной памяти) первым. При этом средство трансляции 120 может быть загружено в оперативную память (а, соответственно, и выполняться в оперативной памяти) позднее, так как при запуске вычислительного устройства, как правило, множество приложений и сервисов запускаются одновременно, и между загрузкой в оперативную память вычислительного устройства драйвера из средства 110 и средством трансляции 120 может существовать временной промежуток. В таком случае драйвер, входящий в состав средства 110, перехватывает доступ к объектам операционной системы и сохраняет всю необходимую для дальнейшей работы средства 120 информацию (например, токен доступа или идентификатор объекта 106).
В одном из вариантов реализации изобретения упомянутый драйвер, входящий в состав средства 110, приостанавливает доступ к объекту операционной системы 106 до принятия решения средством контроля 110 блокировать доступ к объекту 106 или нет. В еще одном варианте реализации изобретения указанный доступ к объекту операционной системы 106 не приостанавливается до принятия решения средством контроля 110 блокировать доступ к объекту 106 или нет. В частном случае реализации под приостановкой доступа понимают удерживание драйвером, входящим в состав средства контроля 110, управления в адресном пространстве указанного драйвера (а именно, в части адресного пространства процесса, осуществляющего доступ, и в котором находится образ загруженного в оперативную память драйвера) - инструкции, находящиеся в адресном пространстве упомянутого процесса, но за пределами загруженного в памяти драйвера, не исполняются, пока не будет завершена вышеупомянутая приостановка доступа. После принятия решения блокировать доступ к объекту 106 или нет средством контроля 110 приостановка доступа завершается - доступ либо блокируется, либо разрешается.
Средство трансляции 120 связано со средством контроля и предназначено для формирования набора из по меньшей мере одного ACL для объекта операционной системы на основании по меньшей мере одного правила доступа к упомянутому объекту (трансляция правил доступа в наборы ACL); при этом средство трансляции функционирует в режиме пользователя (англ. user mode, иногда «пользовательский режим»).
Правила доступа, используемые средством 120 для трансляции в набор ACL, хранятся в базе данных правил доступа 130. В одном из вариантов реализации изобретения такими правилами являются правила, используемые модулем контроля приложений 140.
Как было сказано выше, правило доступа к объекту операционной системы - правило доступа, которое описывает режим доступа к объекту операционной системы со стороны по меньшей мере одного пользователя (или группы пользователей), а также обладают одним из двух свойств: «запрет по умолчанию» (англ. default deny), «доступ по умолчанию» (англ. default access); при этом режим доступа может быть «доступ разрешен» или «доступ запрещен». Стоит отметить, что часто правила доступа к объекту описывают доступ не к отдельно взятому объекту операционной системы 106, а к целой группе объектов 106, попадающих в некоторую категорию (категорию объектов операционной системы), объединяющую некоторое множество объектов операционной системы, примером таких категорий могут быть «браузер», «программное обеспечение, разработанное Microsoft)), «программное обеспечение, созданное в 2013 году». Стоит отметить, что категорий может быть неограниченное количество и они могут формироваться администратором сети или любым другим специалистом, ответственным за безопасность сети и вычислительного устройства, по их усмотрению. Под формированием категории понимают создание правила отображения объекта операционной системы 106 в некоторую категорию на основании метаданных объекта операционной системы 106. Метаданные объекта операционной системы 106 - любая информация, описывающая объект 106, к которой можно получить доступ при помощи предоставляемых операционной системой средств, например системных функций. В общем случае метаданные могут отличаться для разного рода объектов, например файлов и ключей реестра. Примером метаданных объекта 106, при условии, что объект 106 - файл, могут являться: дата создания, владелец файла, владелец ЭЦП (электронной цифровой подписи), которой подписан файл, хеш-сумма файла, публичный ключ владельца вышеупомянутой ЭЦП, а также любая другая информация из ЭЦП файла. Объект операционной системы 106 может входить сразу в несколько категорий. Правило отображения объекта операционной системы 106 в некоторую категорию - правило, которое ставит множеству метаданных объекта 106 в соответствие некоторую категорию объекта операционной системы. Примерами правил отображения метаданных объекта 106 в категорию могут быть следующие правила:
- если объект операционной системы подписан цифровой подписью, и владелец цифровой подписи - Microsoft, то объект попадает в категорию «программное обеспечение, разработанное Miscrosoft»;
- если объект операционной системы - файл и имеет имя «plugin-container.exe» или «firefox.exe», то объект попадает в категорию «браузер Mozilla Firefox».
Правила отображения объекта 106 в категории применяются для определения категорий объекта 106 средством трансляции 120 и хранятся в упомянутом средстве 120. В еще одном варианте реализации изобретения правила трансляции хранятся в базе данных 130. Часть метаданных объекта 106, которые используются средством трансляции 120 для определения категорий объекта 106 доступны (посредством вызовов соответствующих системных функций) только из режима пользователя, например информация о цифровой подписи файла. Этот факт и определяет необходимость функционирования средства трансляции 120, которое определяет категории объекта 106, а соответственно и правила доступа, применимые к объекту 106, в режиме пользователя. После определения всех категорий, в которые входит объект 106, средство трансляции 120 формирует набор ACL для этого объекта 106 на основании всех правил доступа для объекта 106 (а именно, правил доступа, которые описывают доступ к объектам операционной системы из категорий, в которые входит объект 106).
Схематично правило доступа можно представить в следующем виде:
i
R=({(U, А)}, Р),
i
k
k
k
k
k
где R - правило доступа к объекту операционной системы из i-ой категории (иными словами, некоторой категории объектов операционной системы, в которую попадает объект операционной системы в соответствии с правилами отображения метаданных объекта операционной системы в категории), Р - свойство (либо default deny, либо default access), {(U, A)} - множество пар (U, A), где U - некоторый (например, k-ый) пользователь или группа пользователей вычислительного устройства (в качестве этого параметра правила выступает идентификатор безопасности - SID, в еще одном варианте реализации используется токен доступа), А - режим доступа (запрет или разрешение доступа: «доступ запрещен» или «доступ разрешен» соответственно) от имени пользователя или группы пользователей U. Таким образом правило доступа к объекту операционной системы из i-ой категории хранит набор режимов доступа со стороны каждого указанного в рамках правила пользователя или группы пользователей, а также свойство этого правила доступа.
1
2
Приведем пример использования правил доступа модулем контроля приложений 140. Пусть объект 106 входит в несколько категорий, назовем их «категория 1» и «категория 2» соответственно. Для объектов операционной системы из этих категорий существуют правила доступа R и R соответственно. Пусть
,
2
R = ((user2, доступ запрещен), default access)}.
1
2
1
2
1
2
Где user1, user2 - обозначения учетных записей (1 и 2 соответственно), а group1 - группа пользователей. При этом пользователи user1 и user2 входят в группу пользователей group1. Если к объекту операционной системы 106 осуществляется доступ с использованием учетной записи user1, то в соответствии с правилом R этот доступ будет запрещен («user1, доступ запрещен») модулем контроля приложений 140 несмотря на то, что в соответствии с правилом R доступ должен быть разрешен (из-за свойства default access), но модуль контроля приложений 140 анализирует все правила доступа к объекту 106 (а именно правила доступа ко всем категориям, в которые попадает объект 106), и решение о блокировании доступа является более приоритетным. Если к объекту 106 осуществляется доступ с использованием учетной записи user2 (входящей в group1), то доступ будет запрещен как в соответствии с правилом R (group1, доступ разрешен), так и в соответствии с правилом R (user2, доступ запрещен). Пусть есть еще одна учетная запись пользователя user3, при чем эта учетная запись входит в group1. В таком случае доступ будет разрешен в соответствии с правилом R (group1, доступ разрешен) и правилом R (default access). Если для объекта 106 нет подходящих правил доступа - объект 106 входит в категории, для которых нет правил доступа, или же объект не входит ни в одну известную категорию - то решение блокировать или не блокировать доступ принимается модулем контроля приложений 140 на основании параметра работы модуля 140 «default access» или «default deny)), в одном из вариантов изобретения, если параметр работы не задан явным образом, он считается равным «default access)). С учетом вышеупомянутых особенностей правил доступа основная задача средства трансляции - сформировать такой набор ACL для объекта операционной системы 106, применение которого средством контроля 110 к учетной записи пользователя, используемой для осуществления доступа к объекту 106, приводило бы к принятию такого же решения средством 110 о блокировании (или разрешении доступа, т.е решение не блокировать), как и при использовании модулем контроля приложений 140 правил доступа, на основании которых был сформирован упомянутый набор ACL.
С учетом принятых обозначений список контроля доступа (ACL) для j-ого объекта операционной системы (некоторого объекта операционной системы) можно представить в следующем виде:
j
ACL = {(U, А)}.
Список контроля доступа в данном контексте можно описать следующим образом: список контроля доступа к j-му объекту операционной системы содержит множество пар, хранящих режим доступа А от имени некоторого пользователя или группы пользователей - U, при этом список контроля доступа по умолчанию обладает свойством «запрет по умолчанию».
Отличие в структуре правила доступа и списка контроля доступа (наличие обязательного свойства «запрет по умолчанию» в ACL) диктует особенности формирования набора ACL, состоящего из по меньшей мере одного ACL, на основании по меньшей мере одного правила доступа.
Схема преобразования правил доступа в набор ACL выглядит следующим образом. Пусть R - множество правил доступа к объекту операционной системы 106. Стоит отметить, что множество R правил доступа к объекту 106 содержит только правила доступа к каждой категории, в которую попадает указанный объект 106.
i
i
i
1. Для всех правил доступа к объекту операционной системы 106 из R производится сортировка наборов (U, А) таким образом, что первыми в этих наборах следуют пары (U, А), где А - «доступ запрещен».
1
2. Выбирается первое правило R доступа из R, формируется текущий ACL, пустой, а также пустой временный ACL.
j
3. Если правило R (на первой итерации j=1) доступа обладает свойством «default access», то:
i
i
j
i
a. все пары (U, A) из R, в которых A - «доступ запрещен», копируются в текущий ACL;
deny
i
i
j
i
b. при этом, если для модуля контроля приложения 140 установлен параметр работы «default deny», и еще не было найдено ранее «запрещающего» правила доступа R, для которого свойство Р - «default deny», то все пары (U, А) из R, в которых А - «доступ разрешен», копируются во временный ACL.
j
4. Если правило R (на первой итерации j=1) доступа обладает свойством «default deny», то:
deny
i
i
deny
а. если ранее было найдено «запрещающее» правило доступа R, для которого свойство Р - «default deny», то все пары (U, A) из R копируются в текущий ACL, который сохраняется в результирующий набор ACL, а также создается новый, пустой «текущий ACL»;
j
deny
deny
j
b. текущее правило R признается «запрещающим» правилом R (иными словами, далее при помощи R обозначается правило, рассмотренное в текущей итерации как R).
j
5. В качестве R выбирается следующее правило доступа из R (значение j при этом увеличивается на единицу), если такое правило есть, то возвращаемся на этап 3 (следующая итерация), иначе переходим к следующему этапу 6.
deny
i
i
deny
6. Если ранее было найдено «запрещающее» правило доступа R, для которого свойство Р - «default deny», то все пары (U, A) из R копируются в текущий ACL.
deny
7. Если же ранее не было найдено «запрещающее» правило доступа R, для которого свойство Р - «default deny», то:
i
i
a. если для модуля контроля приложения 140 установлен параметр работы «default deny», то все пары (U, A) из временного ACL копируются в текущий ACL;
i
i
b. если для модуля контроля приложения 140 установлен параметр работы «default access», то в текущий ACL добавляется такая пара (U, A), где Ai - «доступ разрешен», а в качестве Ui выступает группа пользователей «EVERYONE» (например, в качестве строки, указатель на которую является членом структуры TRUSTEE, см. https://msdn.microsoft.com/ru-ru/library/windows/desktop/аа379636(v=vs.85).aspx, указывается строка «EVERYONE»).
8. Полученный результирующий набор ACL, взятый вместе с текущим ACL, является набором ACL для объекта операционной системы 106, формируемым на основании правил доступа к упомянутому объекту операционной системы 106.
Полученный вышеуказанный набор из ACL и есть результат формирования набора из по меньшей мере одного ACL на основании по меньшей мере одного правила доступа к объекту операционной системы 106. При формировании для каждого отдельного объекта операционной системы, к которому осуществляется доступ от лица пользователя 105, набора ACL этот набор формируется средством трансляции 120 на основании правил доступа к этому объекту (а именно к категориям объектов), которые хранятся в базе данных правил доступа 130.
Упомянутый выше способ формирования набора ACL гарантирует, что формируемый набор ACL для объекта операционной системы 106 состоит из минимально возможного числа ACL, которое описывает контроль доступа к объекту операционной системы 106 в соответствии с правилами доступа для этого же объекта 106.
Средство трансляции 120 способно передавать средству контроля 110 набор ACL в ответ на идентификатор объекта операционной системы 106, к которому осуществляется доступ. При этом каждый ACL из передаваемого набора ACL является ACL для упомянутого объекта 106, а именно для каждой категории объектов операционной системы, в которую входит объект 106 (указанные ACL описывают ограничения доступа в отношении упомянутого объекта 106).
Стоит отметить, что средство трансляции 120 может формировать на основании правил доступа наборы ACL для разных объектов без получения какого-либо идентификатора объекта операционной системы 106 от средства контроля 110 и сохранять полученные наборы ACL, например в базе данных правил доступа 130, или передавать полученный наборы ACL напрямую средству контроля 110. В одном из вариантов реализации изобретения средство трансляции 120 следит за изменением базы данных правил доступа 130, которые используются модулем контроля приложений 140, и при появлении нового правила доступа (или изменении существующего) к некоторому объекту операционной системы 106 формирует либо новый набор ACL для доступа к упомянутому объекту операционной системы, либо обновляет существующий набор (с учетом вышеописанных правил отображения метаданных объекта 106 в категории объектов операционной системы), при этом обновление существующего набора ACL осуществляется также в соответствии с вышеописанным алгоритмом формирования набора ACL. В одном из вариантов реализации изобретения сформированные таким образом наборы ACL средство трансляции 120 может сохранить в базе данных правил доступа 130 и предоставить эти наборы, например, по запросу от средства контроля 110. В еще одном варианте реализации средство трансляции 120 способно формировать наборы ACL для объектов операционной системы без получения каких-либо идентификаторов упомянутых объектов, например, при появлении на вычислительном устройстве (в памяти вычислительного устройства) нового, ранее неизвестного (для которого нет подходящего набора ACL) объекта операционной системы. В еще одном варианте реализации поводом для повторного формирования наборов ACL для объектов операционной системы 106 на вычислительном устройстве средством трансляции 120 является изменение параметров работы модуля контроля приложений (с «default deny» на «default access» и обратно). После формирования набора ACL для объекта операционной системы 106 средство трансляции может сохранить этот набор как базе данных правил доступа 130, так и передать средству контроля 110 для хранения, при этом средство контроля 110 способно сохранять наборы ACL в своем собственном внутреннем хранилище.
Фиг. 2 иллюстрирует примерный вариант реализации способа контроля доступа на основе ACL. На этапе 201 средство трансляции 120 формирует набор из по меньшей мере одного ACL для объекта операционной системы 106 на основании по меньшей мере одного правила доступа к упомянутому объекту 106. Этот набор ACL передается средству контроля 110. На этапе 202 средство контроля 110 перехватывает доступ к объекту операционной системы 106, определяет учетную запись пользователя 105, используемую для осуществления упомянутого доступа. Далее, на этапе 203, средство контроля 110 применяет полученный от средства трансляции 120 набор ACL для объекта 106 к результатам определения учетной записи пользователя 105, при этом применение набора ACL формирует решение блокировать ли доступ к объекту 106 или нет. Если на этапе 204 средство контроля 110 сформировало решение о блокировке доступа к объекту операционной системы 106, то на этапе 205 средство контроля 110 блокирует доступ, осуществляемый от лица пользователя 105 к объекту операционной системы 106. В противном случае средство контроля 110 не блокирует доступ к объекту операционной системы 106.
В одном из вариантов реализации изобретения, когда в базе данных правил доступа 130 нет правил доступа, средство контроля 110 формирует решение блокировать доступ к объекту операционной системы 106 или нет на основании параметра работы модуля контроля приложений 140 (если таковой параметр установлен), принимающего значения «доступ по умолчанию» (англ. «default access») или «запрет по умолчанию» (англ. default deny). Если в базе данных правил доступа 130 нет правил доступа для объекта операционной системы 106, доступ к которому перехвачен средством контроля 110, то средство контроля принимает решение о блокировании доступа к упомянутому объекту 106, если для модуля контроля приложений 140 установлен параметр работы «запрет по умолчанию». Если в базе данных правил доступа 130 нет правил доступа для объекта операционной системы 106, доступ к которому перехвачен средством контроля 110, то средство контроля принимает решение не блокировать доступ к упомянутому объекту 106, если для модуля контроля приложений 140 установлен параметр работы «доступ по умолчанию».
В одном из вариантов реализации сформированный средством трансляции 120 набор ACL передается не средству контроля 110 напрямую, а сохраняется, например, в базе данных правил доступа 130 вместе с идентификатором объекта 106. В таком случае после этапа 202 средство контроля, используя идентификатор объекта 106, получает из базы данных 130 необходимый для дальнейшей работы набор ACL.
Стоит отметить, что упомянутая выше последовательность шагов, где некоторые шаги выполняются в режиме пользователя, а некоторые - в режиме ядра, исключает необходимость при обнаружении доступа к некоторому объекту операционной системы 106, принимать решение о его блокировании с переключением режимов работы средств - из режима ядра в режим пользователя и обратно, так как этапы, выполненные в режиме пользователя для формирования набора ACL для объекта 106 могут быть выполнены заранее, а полученный набор ACL становится доступен компонентам системы, работающим в режиме ядра, которые при перехвате доступа к объекту 106 смогут сразу принять решение о блокировании или разрешении доступа к объекту 106 без переключения режима работы.
В частном случае реализации при блокировании доступа к объекту операционной системы 106 упомянутый объект исключается при помощи средства контроля 110 из проверки, которая проводится модулем контроля приложений 140.
Стоит отметить, что в одном из вариантов реализации изобретения этап формирования набора ACL средством трансляции 120 осуществляется после того, как средство контроля 110 осуществит перехват доступа к объекту операционной системы 106 и передаст средству трансляции 120 идентификатор объекта операционной системы 106, к которому осуществляется доступ.
В еще одном варианте реализации изобретения в ситуации, когда компоненты средства контроля 110 загружаются в оперативную память вычислительного устройства первыми по отношению к компонентам средства трансляции 120, средство контроля 110 сохраняет всю необходимую для дальнейшей работы средства 120 информацию (например, идентификатор объекта 106, к которому перехвачен доступ средством контроля 110). После полной загрузки средства трансляции 120 (а именно компонентов средства 120) это средство продолжает работать в соответствии с вышеописанной схемой, при этом вышеупомянутая сохраненная средством контроля 110 информация используется средством трансляции 120 для последующего формирования набора ACL для всех объектов операционной системы, доступ к которым был перехвачен средства контроля 110 до момента полной загрузки средства трансляции 120.
В еще одном из вариантов реализации изобретения при получении средством трансляции 120 от средства контроля 110 идентификатора объекта операционной системы 106 средство трансляции 120 формирует набор ACL не только для объекта, идентификатор которого получен от средства 110, но и для других объектов операционной системы: если объект операционной системы 106 - файл или ключ реестра, то средство трансляции формирует набор ACL не только для объекта 106, но также формирует наборы ACL для объектов операционной системы, находящихся вместе с объектом 106 на одном уровне древовидной структуры хранения объектов операционной системы (древовидная система каталогов для файлов и ключей реестра) - например для файлов в одном каталоге с объектом 106, при условии, что объектом 106 является файл. Такой вариант работы средства трансляции 120 позволит при следующем обращении к нему средством контроля 110 не тратить время на формирование набора ACL для объекта операционной системы, если он находится на одном уровне с объектом 106, так как такой набор ACL уже будет сформирован заранее. При этом как только средство трансляции 120 сформирует набор ACL для объекта 106, этот набора будет сразу же передан средству контроля 110, формирование других наборов ACL будет осуществляться в параллельно с выполнением других этапов способа изобретения средством контроля 110 (в «фоновом режиме»). Преимущество в скорости выполнения способа изобретения достигается, исходя из следующего предположения: если был осуществлен доступ к некоторому объекту операционной системы 106, то существует вероятность, что после этого будет осуществлен доступ к «соседним» объектам - объектам операционной системы, находящимся вместе с объектом 106 на одном уровне древовидной структуры хранения объектов операционной системы (например, к файлам в том же каталоге). Таким образом, при последовательном доступе к нескольким «соседним» объектам операционной системы скорость принятия решения о блокировании доступа к указанным объектам будем уменьшена за счет одновременного выполнения этапов способа изобретения.
Фиг. 3 представляет пример компьютерной системы общего назначения - вариант вычислительного устройства -, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26, содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.
Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.
Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.
Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканнер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например, при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47, персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например, колонками, принтером и т.п.
Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг. 3. В вычислительной сети могут присутствовать также и другие устройства, например, маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.
Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой.