способ и система для воплощения политики безопасности с помощью виртуальной машины безопасности
Классы МПК: | G06F21/00 Устройства защиты компьютеров или компьютерных систем от несанкционированной деятельности G06F9/445 загрузка или запуск программы |
Автор(ы): | БЕЙКЕР Артур Х. (US) |
Патентообладатель(и): | МАЙКРОСОФТ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2005-03-16 публикация патента:
27.05.2010 |
Обеспечены способ и система для воплощения политики безопасности, закодированной в наборе команд виртуальной машины безопасности. Система безопасности обеспечивает виртуальную машину безопасности, которая исполняет программы безопасности, выраженные в наборе команд виртуальной машины безопасности. Техническим результатом изобретения является усовершенствованный метод воплощения политик безопасности, в частности политик безопасности, которые задают условия правильности параметров интерфейсов прикладных программ. Система безопасности сохраняет программу безопасности в хранилище команд виртуальной машины безопасности. При наступлении события воплощения безопасности виртуальная машина безопасности исполняет команды из своего хранилища команд с использованием данных события воплощения безопасности для воплощения политики безопасности. 3 н. и 22 з.п. ф-лы, 11 ил., 2 табл.
Формула изобретения
1. Выполняемый в компьютерном устройстве, имеющем первый набор команд, способ воплощения политики безопасности, содержащий этапы, на которых
обеспечивают политику безопасности на языке высокого уровня, причем данная политика безопасности указывает параметры системных вызовов, которые могут привести к нежелательному поведению,
компилируют политику безопасности в программу безопасности на основе второго набора команд, являющегося набором команд виртуальной машины безопасности, причем этот второй набор команд виртуальной машины отличается от упомянутого первого набора команд компьютерного устройства, при этом виртуальная машина безопасности реализована с использованием команд первого набора команд компьютерного устройства,
загружают программу безопасности в хранилище команд виртуальной машины безопасности,
по перехвату системного вызова операционной системы с параметрами, выданного приложением, исполняющимся на компьютерном устройстве вне виртуальной машины безопасности,
загружают упомянутые параметры в хранилище данных виртуальной машины безопасности,
исполняют средством обработки из состава виртуальной машины безопасности команды второго набора команд из хранилища команд на основе параметров, загруженных в хранилище данных, чтобы сгенерировать набор действий, которые должны быть предприняты для воплощения политики безопасности, и выполняют действия из упомянутого набора действий.
2. Способ по п.1, в котором данные программы безопасности сохраняют в хранилище данных в структуре литеральных данных, в которой хранятся литеральные данные, которые являются постоянными при загрузке программы безопасности.
3. Способ по п.2, в котором команда в хранилище команд содержит ссылку на литеральные данные, хранящиеся в структуре литеральных данных.
4. Способ по п.1, в котором данные программы безопасности сохраняют в хранилище данных в структуре динамических данных, в которой хранятся динамические данные, которые могут быть изменены без загрузки новой программы безопасности.
5. Способ по п.4, в котором команда в хранилище команд содержит ссылку на динамические данные, хранящиеся в структуре динамических данных.
6. Способ по п.1, в котором команда в хранилище команд идентифицирует местоположение следующей команды, подлежащей исполнению.
7. Способ по п.1, в котором виртуальная машина безопасности поддерживает типы данных, соответствующие булевому значению, целому числу, строке и необработанному двоичному объекту.
8. Способ по п.1, в котором виртуальная машина безопасности поддерживает сравнения на основе совпадения по шаблону регулярного выражения.
9. Способ по п.1, в котором исполнение команд осуществляется в режиме ядра.
10. Способ по п.1, в котором команда в хранилище команд включает в себя код операции, параметры и поля условного перехода.
11. Способ по п.10, в котором поля условного перехода включают в себя поле перехода по условию «истина», которое задает следующую команду, когда условие команды равно «истина», и поле перехода по условию «ложь», которое задает следующую команду, когда условие команды равно «ложь».
12. Способ по п.1, в котором упомянутые действия задают поведение, соответствующее блокированию упомянутого системного вызова.
13. Система безопасности, приспособленная для воплощения политики безопасности и реализованная в компьютерном устройстве, имеющем первый набор команд, при этом система безопасности содержит
виртуальную машину безопасности, содержащую: хранилище команд, хранилище данных и средство обработки,
компилятор политик, выполненный с возможностью компиляции, представленной на языке высокого уровня политики безопасности, указывающей параметры системных вызовов, которые могут привести к нежелательному поведению, в программу безопасности на основе второго набора команд, являющегося набором команд виртуальной машины безопасности, причем этот второй набор команд виртуальной машины отличается от упомянутого первого набора команд компьютерного устройства, при этом скомпилированная программа безопасности загружается в хранилище команд виртуальной машины безопасности, и
компонент перехвата системного вызова, выполненный с возможностью перехватывать системный вызов операционной системы с параметрами, выданный приложением, исполняющимся на компьютерном устройстве вне виртуальной машины безопасности, и загружать эти параметры в хранилище данных виртуальной машины безопасности,
при этом средство обработки из состава виртуальной машины безопасности выполнено с возможностью исполнять программу безопасности посредством извлечения команд второго набора команд из хранилища команд и выполнения операций, заданных этими командами, на основе параметров, загруженных в хранилище данных, чтобы сгенерировать набор действий, которые должны быть предприняты для воплощения политики безопасности,
при этом компонент перехвата системного вызова дополнительно выполнен с возможностью осуществлять действия из упомянутого набора действий.
14. Система безопасности по п.13, в которой язык высокого уровня отвечает формату на основе XML (расширяемого языка разметки).
15. Система безопасности по п.13, в которой виртуальная машина безопасности выполнена с возможностью исполнения в режиме ядра.
16. Система безопасности по п.13, в которой второй набор команд является сокращенным набором команд.
17. Система безопасности по п.13, в которой в хранилище данных хранится информация управления процессом, используемая при исполнении команд.
18. Система безопасности по п.13, в которой хранилище данных включает в себя структуру литеральных данных и структуру динамических данных, при этом в структуре литеральных данных хранятся литеральные данные, которые являются постоянными при загрузке программы безопасности, а в структуре динамических данных хранятся динамические данные, которые могут быть изменены без загрузки новой программы безопасности.
19. Система безопасности по п.13, в которой команды в хранилище команд содержат ссылку на хранилище данных.
20. Система безопасности по п.13, в которой каждая команда в хранилище команд идентифицирует местоположение следующей команды, подлежащей исполнению.
21. Система безопасности по п.13, в которой виртуальная машина безопасности поддерживает типы данных, соответствующие булевому значению, целому числу, строке и необработанному двоичному объекту.
22. Система безопасности по п.13, в которой виртуальная машина поддерживает сравнения на основе совпадения по шаблону регулярного выражения.
23. Система безопасности по п.13, в которой команда в хранилище команд включает в себя код операции, параметры и поля условного перехода.
24. Система безопасности по п.23, в которой поля условного перехода включают в себя поле перехода по условию «истина», которое задает следующую команду, когда условие команды равно «истина», и поле перехода по условию «ложь», которое задает следующую команду, когда условие команды равно «ложь».
25. Машиночитаемый носитель, содержащий команды, которые при их исполнении в компьютере предписывают компьютеру выполнять этапы способа по одному из пп.1-12.
Описание изобретения к патенту
Область техники, к которой относится изобретение
Описанная технология относится, в целом, к воплощению политики безопасности для блокирования нежелательного поведения компьютерной программы.
Предшествующий уровень техники
Системы программного обеспечения, например операционные системы и файловые системы, обеспечивают интерфейсы прикладного программирования, посредством которых прикладные программы могут осуществлять доступ к службам систем программного обеспечения. Интерфейс прикладной программы может обеспечивать функции с параметрами для выполнения заданной службы. Например, файловая система может иметь функцию (также именуемую "системным вызовом") для создания файла. Эта функция может иметь параметры, которые задают местоположение файла, имя файла, тип файла, размер файла и т.д. для создаваемого файла. Когда прикладная программа вызывает функцию, она передает фактические параметры, соответствующие формальным параметрам, заданным для этой функции. Функция может осуществлять определенные проверки фактических параметров, чтобы гарантировать их правильность. Например, функция создания файла может гарантировать, что заданный тип файла правильный. Если параметр неправильный, функция возвращает ошибку прикладной программе.
Системы программного обеспечения могут быть чрезвычайно сложны по разным причинам. К системе программного обеспечения можно предъявлять требование обратной совместимости со всеми более ранними версиями этой системы программного обеспечения. В этом случае может потребоваться, чтобы система программного обеспечения поддерживала все функции интерфейса прикладной программы более ранних версий. Поскольку в новой версии обычно добавляются новые функции, количество функций может быть очень большим, а их взаимодействие сложным. Некоторые системы программного обеспечения также включают в себя программные компоненты, разработанные разными подразделениями одной и той же компании или разными компаниями. Взаимодействие этих компонентов также может быть весьма сложным.
Для систем программного обеспечения становится все более важным гарантировать, что их интерфейсы прикладного программирования неуязвимы как для непреднамеренного неправильного использования, так и для преднамеренной атаки. Одно слабое место системы программного обеспечения может быть связано с параметрами ее интерфейса прикладного программирования. Когда функции более ранних версий объединяются с функциями новых версий и когда компоненты от разных разработчиков объединяются, существующая проверка параметров, осуществляемая функциями, может оказаться недостаточной для гарантирования правильного поведения функций. Например, интерфейс прикладного программирования файловой системы, разработанный одной компанией, может быть объединен с файловым сервером, разработанным другой компанией. Параметр максимального размера файла для интерфейса прикладного программирования может оказаться больше, чем поддерживаемый файловым сервером. В этом случае размер файла, допустимый в интерфейсе прикладного программирования, может приводить к проблемам с файловым сервером. В другом примере системный администратор может пожелать дополнительно ограничить максимальный размер файла, но системный администратор может не располагать средствами для воплощения этого ограничения.
Желательно иметь механизм воплощения политик безопасности и, в частности, политик безопасности, которые задают условия правильности параметров интерфейсов прикладных программ.
Сущность изобретения
Способ и система для воплощения политики безопасности обеспечиваются виртуальной машиной безопасности. Виртуальная машина безопасности включает в себя средство обработки, хранилище команд, хранилище данных и указатель команды. Виртуальная машина безопасности исполняет программу безопасности, заданную с использованием промежуточного языка, которая компилируется из представления политики безопасности на языке высокого уровня. Программа безопасности загружается в хранилище команд для исполнения. При наступлении события воплощения безопасности, например при вызове функции интерфейса прикладного программирования, данные из события воплощения безопасности сохраняются в хранилище данных, и средство обработки начинает извлекать и исполнять команды для программы безопасности из хранилища команд. Команды задают действия, которые следует предпринимать для воплощения политики безопасности, на основании данных события воплощения безопасности.
Перечень фигур
Фиг. 1 - блок-схема компонентов системы безопасности согласно одному варианту осуществления.
Фиг. 2 - блок-схема структуры данных хранилища данных согласно одному варианту осуществления.
Фиг. 3 - схема формата команды виртуальной машины безопасности согласно одному варианту осуществления.
Фиг. 4 - логическая блок-схема порядка работы компонента загрузки программы согласно одному варианту осуществления.
Фиг. 5 - логическая блок-схема порядка работы компонента перехвата системного вызова согласно одному варианту осуществления.
Фиг. 6 - логическая блок-схема порядка работы средства обработки виртуальной машины безопасности согласно одному варианту осуществления.
Фиг. 7 - логическая блок-схема порядка работы компонента разыменовывания виртуальной машины безопасности согласно одному варианту осуществления.
Фиг. 8 - логическая блок-схема порядка работы компонента оценивания теста виртуальной машины безопасности согласно одному варианту осуществления.
Фиг. 9 - логическая блок-схема порядка работы тестирующего компонента виртуальной машины безопасности согласно одному варианту осуществления.
Фиг. 10 - логическая блок-схема порядка работы компонента совпадения строк виртуальной машины безопасности согласно одному варианту осуществления.
Фиг. 11 - логическая блок-схема порядка работы нетестирующего компонента виртуальной машины безопасности согласно одному варианту осуществления.
Подробное описание
Обеспечены система и способ в компьютерной системе для воплощения политики безопасности, закодированной в виде набора команд виртуальной машины безопасности. Согласно одному варианту осуществления система безопасности обеспечивает виртуальную машину безопасности, которая исполняет программы безопасности, выраженные в наборе команд (т.е. на промежуточном языке) виртуальной машины безопасности. Система безопасности может включать в себя компилятор, который принимает политику безопасности, представленную на языке высокого уровня, и генерирует программу безопасности, которая является представлением политики безопасности на промежуточном языке виртуальной машины безопасности. Система безопасности сохраняет программу безопасности в хранилище команд виртуальной машины безопасности. При наступлении события воплощения безопасности (т.е. действия, которое нужно проверить, чтобы гарантировать, что оно согласуется с политикой безопасности) виртуальная машина безопасности исполняет команды для программы безопасности из своего хранилища команд с использованием данных из события воплощения безопасности для воплощения политики безопасности. Если событие воплощения безопасности указывает, что предпринимается попытка осуществления нежелательного поведения (например, действие, которое может использовать слабое место операционной системы), программа безопасности может блокировать эту попытку. Согласно одному варианту осуществления виртуальная машина безопасности системы безопасности исполняется в режиме ядра операционной системы, чтобы идентифицировать и предотвратить попытки со стороны приложений и внешних систем осуществлять нежелательное поведение для компьютерной системы, на которой исполняется система безопасности.
Согласно одному варианту осуществления система безопасности идентифицирует, когда параметры системного вызова, выданного приложением системной службе (например, файловой системе и системе управления памятью), могут привести к нежелательному поведению. Политика безопасности содержит правила, каждое из которых задает условие на основе параметров системного вызова и действие, которое следует предпринять в случае выполнения условия. Например, условие правила может быть выполнено, когда системный вызов создания файла выдается с параметром, задающим размер файла, превышающий 1 ГБ. Действие, связанное с этим правилом, может состоять в блокировании создания этого файла. Язык высокого уровня может быть языком на основе XML (расширяемого языка разметки), и каждое правило можно идентифицировать по правилу, условию и тегам (неотображаемым элементам разметки) действий. При компиляции правил политики безопасности, представленных на языке высокого уровня, каждое правило транслируется в команды промежуточного языка для формирования программы безопасности. Например, правило можно транслировать в последовательность команд. Одна из них сравнивает системный вызов со значением, показывающим, что функция представляет собой "создание файла", другая сравнивает параметр размера файла с константой, имеющей значение 1 ГБ, и еще одна выводит указание блокировать системный вызов.
Согласно одному варианту осуществления виртуальная машина безопасности включает в себя средство обработки, хранилище команд, указатель команды и хранилище данных. При инициализации виртуальной машины безопасности для воплощения политики безопасности система безопасности загружает в хранилище команд программу безопасности, которая реализует политику безопасности. Система безопасности также загружает данные программы безопасности в хранилище данных. При приеме системного вызова система безопасности сохраняет параметры системного вызова (в том числе значение, идентифицирующее системный вызов) в хранилище данных. Система безопасности может также сохранять информацию управления процессом для процесса, выдавшего системный вызов, в хранилище данных. Система безопасности инициализирует указатель команды так, чтобы он указывал на начальную команду программы безопасности. Средство обработки начинает программу безопасности, извлекая и исполняя начальную команду, на которую указывает указатель команды. Исполнение каждой команды меняет указатель команды так, чтобы он указывал на следующую команду, подлежащую исполнению. Команды ссылаются на данные хранилища данных для воплощения политики безопасности. При исполнении программы безопасности генерируется выходной набор действий, который задает действия (например, блокирование системного вызова), которые следует предпринять для воплощения политики безопасности.
Согласно одному варианту осуществления политика безопасности может содержать подполитику для каждого системного вызова, параметры которого подлежат проверке. Система безопасности может компилировать каждую подполитику в отдельную подпрограмму безопасности, которая может загружаться в хранилище команд независимо от других подпрограмм безопасности. Каждая подполитика может соответствовать воплощению безопасности для одного системного вызова. Система безопасности может поддерживать отображение каждого системного вызова в начальный указатель команды в хранилище команд и начальный указатель данных на данные в хранилище данных соответствующей подпрограммы безопасности. При воплощении политики безопасности для системного вызова система безопасности инициализирует указатель команды соответствующим начальным указателем команды и указатель данных соответствующим начальным указателем данных. Подпрограммы безопасности могут использовать методы ссылки на команды и данные, которые сродни указателю команды и указателю данных. Таким образом, команды и данные каждой подпрограммы безопасности являются переместимыми. В нижеследующем описании единичная программа безопасности обрабатывает все системные вызовы, декодируя каждый системный вызов и осуществляя безусловный переход в соответствующее местоположение команды для обработки этого системного вызова. Специалисту в данной области очевидно, что описанную систему можно выполнить с возможностью поддержки подпрограммы для каждого системного вызова.
На фиг. 1 изображена блок-схема, которая иллюстрирует компоненты системы безопасности согласно одному варианту осуществления. Система безопасности включает в себя некоторые компоненты, которые исполняются в режиме 100 пользователя, и другие, которые исполняются в режиме 120 ядра. Компилятор 102 политик - это компонент, который исполняется в режиме пользователя для компиляции политик безопасности из хранилища 103 политик в программы безопасности, исполняемые виртуальной машиной безопасности. Компоненты режима ядра включают в себя компонент 121 перехвата системного вызова, компонент 122 загрузки программы и виртуальную машину 125 безопасности. Виртуальная машина безопасности включает в себя указатель 126 команды (УК), средство 127 обработки, хранилище 128 команд и хранилище 129 данных. Компонент загрузки программы загружает программы безопасности, скомпилированные компилятором политик, в хранилище команд виртуальной машины безопасности, сохраняет программные данные в хранилище данных и задает начальный указатель команды. Компонент перехвата системного вызова перехватывает системные вызовы, выданные прикладными программами 101, и сохраняет параметры каждого системного вызова и информацию управления процессом прикладных программ в хранилище данных. После перехвата системного вызова и сохранения его параметров компонент перехвата системного вызова предписывает средству обработки исполнять программу безопасности из хранилища команд. Процессор исполняет программу безопасности, извлекая команды, на которые указывает указатель команды, и осуществляет операции, заданные командами. Операции включают в себя сохранение действий, которые следует предпринимать для воплощения политики безопасности, в выходном наборе действий хранилища данных. По завершении исполнения программы безопасности компонент перехвата системного вызова осуществляет действия выходного набора действий.
Вычислительное устройство, на котором может быть реализована система безопасности, может включать в себя центральный процессор, память, устройства ввода (например, клавиатуру и указательные устройства), устройства вывода (например, устройства отображения) и запоминающие устройства (например, дисководы). Память и запоминающие устройства являются машиночитаемыми носителями, которые могут содержать команды, реализующие систему безопасности. Кроме того, структуры данных и структуры сообщений могут храниться или передаваться посредством среды передачи данных, например, в виде сигнала по линии связи. Можно использовать различные линии связи, например Интернет, локальную сеть, глобальную сеть или двухточечное коммутируемое соединение.
На фиг. 1 показан пример подходящей рабочей среды, в которой может быть реализована система безопасности. Эта рабочая среда может быть лишь одним примером подходящей рабочей среды и не призвана накладывать какие-либо ограничения на объем использования или функции системы безопасности. Другие общеизвестные вычислительные системы, среды и конфигурации, которые могут быть пригодны для использования, включают в себя персональные компьютеры, компьютеры-серверы, карманные или портативные устройства, многопроцессорные системы, системы на основе микропроцессора, программируемую бытовую электронику, сетевые персональные компьютеры (ПК), мини-компьютеры, универсальные компьютеры, распределенные вычислительные среды, которые включают в себя любые из вышеописанных систем и устройств, и т.п.
Система безопасности может быть описана в общем контексте машиноисполняемых команд, например программных модулей, исполняемых одним или несколькими компьютерами или другими устройствами. В общем случае программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и прочее, которые осуществляют определенные действия или реализуют определенные абстрактные типы данных. Обычно функциональные возможности программных модулей могут объединяться или распределяться, как описано в различных вариантах осуществления.
На фиг. 2 показана блок-схема структуры данных хранилища данных согласно одному варианту осуществления. Хранилище данных включает в себя структуру 201 литеральных данных, структуру 211 динамических данных, структуру 221 данных параметров системного вызова, структуру 231 данных блока управления процессом и выходной набор 241 действий. Структура литеральных данных включает в себя таблицу 202 литеральных данных и хранилище 203 литеральных данных. Таблица литеральных данных содержит записи фиксированного размера, которые ссылаются на литеральные данные, хранящиеся в хранилище литеральных данных. Под "литеральными данными" подразумевают данные программы безопасности, которые остаются постоянными на период действия загруженной в данный момент политики безопасности. Литеральные данные могут изменяться только при загрузке новой политики безопасности. Структура динамических данных имеет организацию, сходную с организацией структуры литеральных данных, но в ней хранятся «динамические» данные, а не "литеральные данные". Под "динамическими данными" подразумеваются данные программы безопасности, которые могут изменяться без загрузки новой политики безопасности. Например, динамические данные могут включать в себя имена приложений, которые не подлежат контролю со стороны политики безопасности. Каждая запись таблиц литеральных и динамических данных указывает на данные в соответствующем хранилище данных. Данные хранилищ литеральных и динамических данных представлены в формате самоописания. Этот формат включает в себя информацию типа данных и размера данных. Согласно одному варианту осуществления виртуальная машина безопасности поддерживает такие типы данных, как булево значение, целое число, строка и необработанный двоичный объект (именуемый также "большой двоичный объект" («blob»)), а также массивы целых чисел, строк и больших двоичных объектов. Команды ссылаются на литеральные и динамические данные с использованием индексов литеральных и динамических таблиц. При исполнении команды виртуальная машина безопасности разыменовывает индекс литеральной и динамической таблицы, извлекая индексированную запись и используя ее значение в качестве указателя начала элемента данных в хранилище литеральных или динамических данных. Поскольку данные имеют свойство самоописания, можно определить тип и размер данных. Структура данных параметров системного вызова включает в себя таблицу 222 строк, таблицу 223 целых чисел и таблицу 224 необработанных двоичных объектов. Параметры системного вызова сохраняются в этих таблицах в соответствии с их типом данных. Структура данных блока управления процессом - это таблица, которая содержит запись для каждой порции информации управления процессом, доступной виртуальной машине безопасности. Согласно одному варианту осуществления информация управления процессом включает в себя идентификатор приложения и идентификатор потока. Выходной набор действий может представлять собой набор флагов действия, генерируемых при исполнении программы безопасности и показывающих действия, подлежащие осуществлению для воплощения политики безопасности для системного вызова. Действия могут включать в себя блокирование системного вызова и извещение пользователя.
На фиг. 3 показана схема формата команды виртуальной машины безопасности согласно одному варианту осуществления. Каждая команда включает в себя поле 310 операции, поле 320 параметра 1, поле перехода 330 по условию «истина» (true), поле 340 перехода по условию «ложь» (salse) и поле 350 параметра 2. Поле параметра 1 ссылается на данные, связанные с системным вызовом (т.е. хранящиеся в структуре данных системного вызова или в структуре данных управления процессом), и поле параметра ссылается на данные, связанные с программой безопасности (т.е. непосредственно получаемые данные или данные, хранящиеся в структурах литеральных или динамических данных). Поле операции включает в себя описатель 311 параметра 2 ("m") и код 312 операции. Описатель параметра 2 задает, как интерпретировать параметр 2. Параметр 2 может содержать непосредственно получаемые данные, ссылку на динамические данные или ссылку на литеральные данные. Когда ссылка задана, виртуальная машина безопасности разыменовывает параметр прежде, чем осуществить операцию команды. Код операции идентифицирует операцию команды, что более подробно изложено ниже. Поле параметра 1 содержит описатель 321 параметра 1 ("s") и индекс 322. Описатель параметра 1 показывает, относится ли параметр 1 к параметру системного вызова или к информации управления процессом. Если описатель параметра 1 показывает параметр системного вызова, то старшие биты индекса задают, подлежит ли индексированию таблица строк, таблица целых чисел или таблица необработанных двоичных объектов структуры данных параметров системного вызова, а младшие биты указывают индексированную запись таблицы. Если описатель параметра 1 показывает информацию управления процессом, то индекс показывает конкретную информацию управления процессом. Поле перехода по условию «истина» и поле перехода по условию «ложь» содержат смещения, которые задают следующую команду, подлежащую выполнению, в зависимости от того, равен ли код условия этой команды «истина» или «ложь». Смещение прибавляется к текущему указателю команды для того, чтобы он указывал на следующую команду, подлежащую выполнению.
Таблицы 1 и 2 иллюстрируют команды виртуальной машины безопасности согласно одному варианту осуществления. Команды можно подразделить на выполняющие тестирование данных и не выполняющие его. Таблица 1 иллюстрирует нетестирующие команды.
Таблица 1 | ||
Код операции | Описание | Параметры |
HALT | Останавливает обработку | p2: код состояния |
ACTION | Добавляет код действия в выходной набор действий | p2: код действия |
JMP | Осуществляет безусловный переход к новой команде | p2: смещение перехода из текущего местоположения |
RESET | Очищает выходной набор действий | p2: игнорируется |
Таблица 2 иллюстрирует тестирующие команды. Команда шаблона может задавать регулярное выражение для сравнения двух строк, которое полезно для сравнений по типу групповых символов для имен файлов (например, "*.DAT").
Таблица 2 | |
Код операции | Описание |
TEST | Булево выражение: тестировать, равен ли p2 «истина» |
CMPEQ | Целое число: сравнить p1==p2 |
CMPNE | Целое число: сравнить p1 !=p2 |
CMPLT | Целое число: сравнить p1<p2 |
CMPLE | Целое число: сравнить p1<=p2 |
CMPGE | Целое число: сравнить p1>=p2 |
CMPGT | Целое число: сравнить p1>p2 |
BLOB_MATCH | большой двоичный объект: p1==p2 |
STRING_MATCH | строка: p1==p2 |
PATTERN_MATCH | строка: p1 совпадает с p2 по шаблону групповых символов |
BLOB_MEMBEROF | большой двоичный объект: p1==p2[i] |
INT_MEMBEROF | Целое число: p1==p2[i] |
STRING_MEMBEROF | строка: p1==p2[i] |
PATTERN_MEMBEROF | строка: p1 совпадает с p2[i] по шаблону групповых символов |
На фиг.4 изображена логическая блок-схема порядка работы компонента загрузки программы согласно одному варианту осуществления. Компонент вызывается, когда программа безопасности должна загружаться в виртуальную машину безопасности. Программа безопасности содержит виртуальные команды, блок литеральных данных и блок динамических данных. Блок литеральных данных включает в себя информацию таблицы литеральных данных, а также информацию хранилища литеральных данных. Компонент копирует блок литеральных данных в литеральное хранилище, начиная с начального положения. Затем компонент прибавляет это базовое положение к каждому смещению в таблице литеральных данных для преобразования смещений в указатели. Компонент обрабатывает блок динамических данных аналогичным образом. Виртуальные команды содержат смещения относительно начала литерального хранилища и динамического хранилища. На этапе 401 компонент идентифицирует начальное положение в литеральном хранилище и копирует блок литеральных данных программы безопасности, начиная с этого начального положения. На этапе 402 компонент прибавляет начальное положение каждого смещения таблицы литеральных данных для преобразования смещений программы безопасности в указатели. На этапе 403 компонент идентифицирует начальное положение в динамическом хранилище и копирует блок динамических данных программы безопасности, начиная с этого начального положения. На этапе 404 компонент прибавляет начальное положение к каждому смещению таблицы динамических данных для преобразования смещений программы безопасности в указатели. На этапе 405 компонент копирует виртуальные команды программы безопасности в хранилище команд, после чего завершает обработку.
На фиг. 5 изображена логическая блок-схема порядка работы компонента перехвата системного вызова согласно одному варианту осуществления. Компонент вызывается при перехвате системного вызова. Компонент инициализирует структуру данных параметра системного вызова и структуру данных управления процессом, после чего запускает виртуальную машину безопасности. Компонент также может обеспечивать указатель команды для команды начала исполнения для обработки системного вызова. При использовании подпрограмм безопасности компонент может иметь отображение системных вызовов в начальные указатели команд и в начальные указатели данных для структур литеральных и динамических данных для этого системного вызова. Компонент загрузки программы можно вызывать неоднократно для загрузки различных подпрограмм программы безопасности для обработки разных системных вызовов. Поскольку доступ к командам и данным осуществляется на основании смещения, команды и данные можно сохранять в следующих доступных местах хранилища команд и структур данных. На этапе 501 компонент задает текущий указатель команды как начальный указатель команды программы безопасности и сбрасывает выходной набор действий в начальное состояние (например, пустое). На этапах 502-504 компонент выполняет цикл по сохранению параметров системного вызова в структуру данных параметров системного вызова. На этапе 502 компонент выбирает следующий параметр системного вызова. На этапе ветвления 503, если все параметры системного вызова уже выбраны, компонент переходит к этапу 505, в противном случае компонент переходит к этапу 504. На этапе 504 компонент сохраняет выбранный параметр в соответствующей таблице структуры данных параметров системного вызова, а затем возвращается к этапу 502 для выбора следующего параметра системного вызова. На этапах 505-507 компонент выполняет цикл по сохранению информации управления процессом в структуре данных управления процессом. На этапе 505 компонент выбирает следующую информацию управления процессом для процесса, выдавшего системный вызов. На этапе ветвления 506, если вся информация управления процессом уже выбрана, компонент переходит к этапу 508, в противном случае компонент переходит к этапу 507. На этапе 507 компонент сохраняет выбранную информацию управления процессом в структуре данных управления процессом, а затем возвращается к этапу 505 для выбора следующей информации управления процессом. Альтернативно, вместо того, чтобы использовать инициализацию внутренней структуры данных управления процессом, система безопасности может по мере необходимости извлекать информацию управления процессом непосредственно из блока управления процессом (БУП). Специалисту в данной области очевидно, что блок управления процессом создается операционной системой при создании процесса. На этапе 508 компонент запускает виртуальную машину (ВМ) безопасности для воплощения политики безопасности для перехваченного системного вызова. По завершении исполнения программы безопасности виртуальной машиной безопасности компонент осуществляет действия из выходного набора действий.
На фиг. 6 изображена логическая блок-схема порядка работы средства обработки виртуальной машины безопасности согласно одному варианту осуществления. Средство обработки инициализирует структуру данных параметра системного вызова на основании перехваченного системного вызова, запускает виртуальную машину безопасности и осуществляет действия из выходного набора действий. На этапах 601-607 средство обработки выполняет цикл по загрузке и исполнению команд программы безопасности, хранящейся в хранилище команд, пока не будет исполнена команда останова. Согласно одному варианту осуществления политика безопасности может задавать, что всякий раз при выполнении условия правила никакие другие правила не тестируются. На этапе 601 средство обработки извлекает команду, на которую указывает текущий указатель команды. На этапе 602 средство обработки вызывает компонент для разыменовывания параметра 1 и параметра 2. На этапе ветвления 603 если код операции команды соответствует тестирующей операции, то средство обработки переходит к этапу 604. Если код операции команды соответствует нетестирующей операции (за исключением операции останова), то средство обработки переходит к этапу 608. Если код операции команды соответствует операции останова, то средство обработки переходит к этапу 609. На этапе 604 средство обработки вызывает компонент оценивания теста, чтобы определить, «истину» или «ложь» возвратила тестирующая операция. Вызванный компонент устанавливает флаг кода условия (КУ) равным «истина» или «ложь». На этапе ветвления 605 если код условия равен «истина», то средство обработки переходит к этапу 607, в противном случае средство обработки переходит к этапу 606. На этапе 606 средство обработки прибавляет смещение поля перехода по условию «ложь» (ЛП) к текущему указателю команды, после чего возвращается к этапу 601 для извлечения следующей команды. На этапе 607 средство обработки прибавляет смещение поля перехода по условию «истина» (ИП) к текущему указателю команды, после чего возвращается к этапу 601 для извлечения следующей команды. На этапе 608 средство обработки вызывает компонент выполнения без тестирования, а затем возвращается к этапу 601 для извлечения следующей команды. Компонент выполнения без тестирования осуществляет операцию команды и задает текущий указатель команды так, чтобы он указывал на следующую команду, подлежащую исполнению. Компонент выполнения без тестирования прибавляет смещение перехода по условию «истина» (или параметр 2 в случае команды безусловного перехода) команды к указателю команды. На этапе 609 компонент выполняет команду останова и завершает работу.
На фиг. 7 изображена логическая блок-схема порядка работы компонента разыменовывания виртуальной машины безопасности согласно одному варианту осуществления. Этот компонент разыменовывает параметр 1 и параметр 2 извлеченной команды. На этапах 701-708 компонент разыменовывает параметр 1. На этапе ветвления 701 если параметр 1 является параметром системного вызова, что указано описателем параметра 1, то компонент переходит к этапу 703, в противном случае компонент переходит к этапу 702. На этапе 702 компонент устанавливает разыменованный параметр 1 равным информации управления процессом, заданной индексом параметра 1, после чего переходит к этапу 709. На этапе ветвления 703 если индекс параметра 1 показывает, что параметр системного вызова является целым числом, то компонент переходит к этапу 704, в противном случае компонент переходит к этапу 705. На этапе 704 компонент устанавливает разыменованный параметр 1 равным целому числу, заданному индексом, и переходит к этапу 709. На этапе ветвления 705 если индекс параметра 1 показывает, что параметр системного вызова является строкой, то компонент переходит к этапу 706, в противном случае компонент переходит к этапу 707. На этапе 706 компонент устанавливает разыменованный параметр 1 равным строке, заданной индексом, и переходит к этапу 709. На этапе ветвления 707 если индекс параметра 1 показывает, что параметр системного вызова является необработанным двоичным объектом, то компонент переходит к этапу 708, в противном случае возникает ошибка. На этапе 708 компонент устанавливает разыменованный параметр 1 равным необработанному двоичному объекту, заданному индексом, и переходит к этапу 709. На этапах 709-714 компонент разыменовывает параметр 2. На этапе ветвления 709 если описатель параметра 2 показывает непосредственно получаемые данные, то компонент переходит к этапу 710, в противном случае компонент переходит к этапу 711. На этапе 710 компонент задает разыменованный параметр равным значению параметра в извлеченной команде и переходит к возвращению. На этапе ветвления 711 если описатель параметра 2 показывает литеральные данные, то компонент переходит к этапу 712, в противном случае компонент переходит к этапу 713. На этапе 712 компонент устанавливает разыменованный параметр равным литеральным данным, заданным параметром 2 в извлеченной команде, и переходит к возвращению. На этапе ветвления 713 если описатель параметра 2 показывает динамические данные, то компонент переходит к этапу 714, в противном случае возникает ошибка. На этапе 714 компонент устанавливает разыменованный параметр равным динамическим данным, заданным параметром 2 в извлеченной команде, и переходит к возвращению.
На фиг. 8 изображена логическая блок-схема порядка работы компонента оценивания теста виртуальной машины безопасности согласно одному варианту осуществления. Компонент декодирует код операции загруженной команды и вызывает компонент для реализации теста этого кода операции. Вызванный компонент устанавливает код условия равным «истина» или «ложь». На этапах ветвления 801-803 компонент декодирует код операции загруженной команды. На этапах 804-806 компонент вызывает компоненты для реализации декодированного кода операции и переходит к возвращению.
На фиг. 9 изображена логическая блок-схема порядка работы тестирующего компонента виртуальной машины безопасности согласно одному варианту осуществления. Тестирующий компонент реализует код тестирующей операции. На этапе 911 компонент задает код условия равным значению разыменованного параметра 2 и переходит к возвращению.
На фиг. 10 изображена логическая блок-схема порядка работы компонента совпадения строк виртуальной машины безопасности согласно одному варианту осуществления. Компонент определяет, совпадает ли разыменованный параметр 1 с разыменованным параметром 2. Согласно одному варианту осуществления виртуальная машина безопасности может использовать совпадение по шаблону. Например, параметр может включать в себя описание посредством "группового символа" или в более общем случае регулярное выражение. На этапе ветвления 1001 если длины параметра 1 и параметра 2 совпадают, то компонент переходит к этапу 1003, в противном случае разыменованные параметры не могут совпадать и компонент переходит к этапу 1002. На этапе 1002 компонент устанавливает код условия равным «ложь» и переходит к возвращению. На этапах 1003-1006 компонент выполняет цикл, проверяя каждый символ строк разыменованных параметров. На этапе 1003 компонент выбирает следующий символ каждой строки. На этапе ветвления 1004 если все символы строк уже выбраны, то компонент переходит к этапу 1008, в противном случае компонент переходит к этапу 1005. На этапе 1005 компонент нормализует выбранные символы. Например, компонент может переводить каждый символ в нижний регистр для реализации сравнения, не зависящего от регистра. На этапе ветвления 1006 если выбранные символы совпадают, то компонент переходит к этапу 1003, чтобы выбрать следующий символ строк, в противном случае компонент переходит к этапу 1007. На этапе 1007 компонент устанавливает код условия равным «ложь» и переходит к возвращению. На этапе 1008 все символы строк совпадают, и компонент задает код условия равным «истина» и переходит к возвращению.
На фиг. 11 изображена логическая блок-схема порядка работы нетестирующего компонента виртуальной машины безопасности согласно одному варианту осуществления. Компонент осуществляет операцию кода нетестирующей операции извлеченной команды, в том числе устанавливает текущий указатель команды так, чтобы он указывал на следующую команду, подлежащую исполнению. На этапе ветвления 1101, если код операции соответствует операции действия, то компонент переходит к этапу 1102, в противном случае компонент переходит к этапу 1103. На этапе 1102 компонент добавляет параметр извлеченной команды в выходной набор действий, а затем переходит к этапу 1107. На этапе ветвления 1103 если код операции соответствует операции сброса, то компонент переходит к этапу 1104, в противном случае компонент переходит к этапу 1105. На этапе 1104 компонент очищает выходной набор действий, а затем переходит к этапу 1107. На этапе ветвления 1105 если код операции соответствует операции безусловного перехода, то компонент переходит к этапу 1106, в противном случае компонент продолжает декодировать другие коды операции. На этапе 1106 компонент прибавляет параметр 2 (П2) к текущему указателю команды и затем переходит к возвращению. На этапе 1107 компонент прибавляет значение поля перехода по условию «истина» к текущему указателю команды и переходит к возвращению.
Специалисту в данной области очевидно, что, хотя в иллюстративных целях здесь были описаны конкретные варианты осуществления системы безопасности, можно предложить различные модификации, не отклоняясь от сущности и объема изобретения. Специалисту в данной области очевидно, что систему безопасности, использующую виртуальную машину безопасности, можно использовать для воплощения широкого круга политик безопасности. Например, систему безопасности можно использовать для воплощения безопасности сообщений, принимаемых по сети, транзакций, принятых процессором транзакций, и в более общем случае любого приложения, которое обеспечивает интерфейс прикладного программирования. Соответственно, изобретение не ограничивается ничем, кроме прилагаемой формулы изобретения.
Класс G06F21/00 Устройства защиты компьютеров или компьютерных систем от несанкционированной деятельности
Класс G06F9/445 загрузка или запуск программы