УПРАВЛЕНИЕ БЕЗОПАСНОСТЬЮ КОМПЬЮТЕРА, НАПРИМЕР, В ВИРТУАЛЬНОЙ МАШИНЕ ИЛИ РЕАЛЬНОЙ ОПЕРАЦИОННОЙ СИСТЕМЕ
COMPUTER SECURITY CONTROL, FOR INSTANCE IN VIRTUAL MACHINE OR REAL OPERATING SYSTEM

Область техники, к которой относится изобретение
Описанная технология относится, в общем случае, к поддержанию безопасности и целостности операционных систем (ОС) компьютеров.
Предшествующий уровень техники
Когда программное обеспечение, которое разработано специально для повреждения или разрушения системы (например, злонамеренное программное обеспечение или "злонамеренное ПО") вторгается в компьютерную систему, целостность операционной системы компьютера, а следовательно, и вся компьютерная система, получает большое повреждение. Хотя вопросы и требования безопасности пользователей компьютеров варьируются в широком диапазоне, с учетом повышения опасности заражения вирусами, червями и троянами, большинство пользователей компьютеров обращают внимание на целостность важных компонентов инфраструктуры своих компьютеров, например процессов операционной системы, процессов памяти и т.д.
Некоторые типы злонамеренного ПО используют привилегированные операции операционной системы для атаки на компьютер. Такие привилегированные операции обычно состоят из команд или наборов команд, доступных только привилегированному пользователю или процессу. Например, когда злонамеренное ПО способно каким-то образом осуществлять доступ к одной или нескольким из этих привилегированных операций, это может привести к удалению или повреждению файлов операционной системы, атаке на компоненты операционной системы, хранящиеся в памяти, удалению файлов пользователя и многим другим пагубным последствиям. В некоторых случаях, даже незлонамеренные процессы могут повредить компьютерную систему вследствие непреднамеренного поведения, при котором осуществляется доступ к привилегированным операциям. В более общем случае, почти любой процесс может иметь возможность получить доступ к привилегированным операциям, просто допуская истинность привилегированного пользователя.
Обычно, операционные системы обеспечивают инфраструктуру для вмещения процессов и предоставления системных служб этим процессам. Операционные системы обычно обеспечивают базовую защиту безопасности, например, применяя контроль доступа и прав собственности в отношении системных ресурсов. Например, в обычных средах операционной системы, защитные службы безопасности, например, сетевой брандмауэр, оценивание уязвимости, обнаружение заплаток, блокировка поведения, обнаружение проникновения в сетевой узел или сеть и антивирусные технологии, выполняются в качестве собственных приложений в операционной системе. Несмотря на эти меры, операционная система иногда не способна точно определить, была ли она атакована. В частности, когда экземпляр злонамеренного кода или другого злонамеренного ПО атакует компьютерную систему и получает достаточный контроль (например, доступ администраторского уровня), все дальнейшие попытки операционной системы определить, подверглась ли она атаке, уже не будут заслуживать доверия, поскольку механизмы для таких попыток также могут быть повреждены. Дело в том, что злонамеренный код может эффективно изменять любые структуры, хранящиеся в памяти или на диске, используемые операционной системой или приложениями, используемыми для ее защиты.
Один подход к защите компьютерной системы и ее операционной системы предусматривает установку набора приложений безопасности, например, антивирусного программного обеспечения, персональных брандмауэров и систем обнаружения проникновения. В системах с множественными компьютерными системами, например, компьютерной сети или кластере компьютерных систем, развернутых в массиве, в каждой отдельной компьютерной системе выполняется собственный набор приложений безопасности. Дело в том, что каждая компьютерная система в сети или массиве является физически отдельной сущностью со своим собственным сетевым присоединением, собственным(и) центральным(и) процессором (ами), собственным экземпляром операционной системы и т.д. Хотя такие приложения безопасности можно устанавливать на каждой компьютерной системе, чтобы предотвратить повреждение компьютерной системы и ее операционной системы, таким приложениям безопасности может быть слишком сложно защитить компьютерную систему, поскольку, наподобие любого другого приложения, выполняющегося в компьютерной системе, они также уязвимы для атаки.
В другом подходе к защите компьютерной системы и ее операционной системы, такие аспекты компьютерной системы, как память, защищаются посредством аспектов изоляции компьютерной системы.
Сущность изобретения
Описанные здесь методики защиты компьютера обеспечивают различные функциональные возможности безопасности, включая использование единого процесса безопасности (или набора процессов безопасности) для мониторинга, защиты и исправления множественных логически изолированных виртуальных машин (ВМ), выполняющихся на хост-системе. В некоторых вариантах осуществления, методики безопасности обеспечивают безопасность одного или нескольких экземпляров самостоятельной рабочей среды, выполняющихся на компьютере. Методики безопасности могут включать в себя реализацию приложения безопасности, которым может управлять надзирающий процесс. Приложение безопасности может отслеживать одну или несколько виртуальных машин. Этот мониторинг может осуществляться различными методами, включая автономное сканирование виртуальных машин приложением безопасности, реализацию агентского процесса безопасности, выполняющегося на каждой виртуальной машине, и т.д.
В некоторых вариантах осуществления набор приложений безопасности и надзирающий процесс могут функционировать на хост-системе компьютера, что может также обеспечивать платформу для выполнения одной или несколько самостоятельных рабочих сред. Методики безопасности могут защищать процессы, выполняющиеся в одной или нескольких самостоятельных рабочих средах, и процессы, выполняющиеся на компьютере вне самоограниченных рабочих сред.
Перечень фигур
Фиг.1 - блок-схема примера системы для реализации методик безопасности в одном варианте осуществления.
Фиг.2 - блок-схема примера автономного сканирования виртуальных машин в системе, показанной на фиг.1.
Фиг.3А - блок-схема альтернативного примера автономного сканирования виртуальных машин в системе, показанной на фиг.1.
Фиг.3В - блок-схема другого примера сканирования виртуальных машин в системе, показанной на фиг.1.
Фиг.3С - блок-схема еще одного примера сканирования виртуальных машин в системе, показанной на фиг.1.
Фиг.4 - логическая блок-схема процедуры, осуществляемой надзирающим процессом, который отслеживает операционную систему в системе, показанной на фиг.1.
Фиг.5 - логическая блок-схема примера процедуры мониторинга безопасности, который отслеживает виртуальные машины в системе, показанной на фиг.1, с использованием периодического сканирования.
Фиг.6 - логическая блок-схема второго примера процедуры мониторинга безопасности, который отслеживает виртуальные машины в системе, показанной на фиг.1, с использованием монтирования структуры виртуальной машины.
Фиг.7 - логическая блок-схема третьего примера процедуры мониторинга безопасности, который отслеживает виртуальные машины в системе, показанной на фиг.1, без использования монтирования структуры виртуальной машины.
Фиг.8 - логическая блок-схема второго примера процедуры мониторинга безопасности, который отслеживает виртуальные машины в системе, показанной на фиг.1, с использованием агентского процесса, выполняющегося на виртуальной машине.
На чертежах одинаковые позиции обозначают одинаковые или по существу аналогичные элементы или действия. Для облегчения рассмотрения любого конкретного элемента или действия, старшая значащая цифра или цифры в позиции обозначают номер фигуры, в которой этот элемент впервые представлен (например, элемент 204 впервые представлен и рассмотрен в связи с фиг.2).
Подробное описание
Изобретение будет описано в отношении различных вариантов осуществления. Нижеследующее описание обеспечивает конкретные детали для полного понимания и описания этих вариантов осуществления изобретения. Однако специалистам в данной области понятно, что изобретение можно осуществлять на практике без этих деталей. В других примерах, общеизвестные структуры и функции не показаны и не описаны подробно во избежание ненужного затемнения описания вариантов осуществления изобретения.
Терминологию, используемую в представленном описании, следует интерпретировать в самом широком возможном смысле, даже если она используется в связи с подробным описанием определенных конкретных вариантов осуществления изобретения. Некоторые термины могут даже быть подчеркнуты ниже, однако любая терминология, подлежащая интерпретации в каком-либо ограниченном смысле, будет открыто и конкретно определена как таковая в этом разделе Подробного описания.
I. Обзор
Описанные здесь методики защиты компьютера обеспечивают различные функциональные возможности безопасности, включая использование единого процесса безопасности (или набора процессов безопасности) для мониторинга, защиты и исправления множественных логически изолированных виртуальных машин, выполняющихся на хост-системе.
В некоторых вариантах осуществления, хост-система, выполняющаяся на физической машине, обеспечивает виртуальную машину, на которой могут выполняться операционная система и приложения. Хотя многие процессы могут выполняться на виртуальной машине, в общем случае, операционная система и приложения, выполняющиеся на виртуальной машине, не могут осуществлять доступ к ресурсам (например, памяти и устройствам) иначе, как по разрешению хост-системы, которая обеспечивает виртуальную машину, или по указанию гостя, который назначен виртуальной машине.
Если виртуальная машина выполняет злонамеренное ПО, то любое повреждение ограничивается операционной системой, приложениями и доступными ресурсами виртуальной машины. Таким образом, компьютер, по существу, защищен от эффектов злонамеренного ПО, выполняющегося на виртуальной машине.
В некоторых вариантах осуществления, хост-система может препятствовать операционной системе и приложениям, выполняющимся на виртуальной машине, в осуществлении привилегированных операций, которые могут приводить к нежелательным изменениям ресурсов или операционной системы физической машины. Например, операционной системе, выполняющейся на виртуальной машине, могут быть даны администраторские привилегии в виртуальной машине, но не в физической машине.
В некоторых вариантах осуществления, хост-система реализует профилактические процессы безопасности. Примеры таких процессов безопасности включают в себя мониторы сетевого брандмауэра, мониторы оценивания уязвимости, мониторы обнаружения заплаток, мониторы блокировки поведения, мониторы проникновения в сетевой узел или сеть и антивирусные технологии. В общем, процессы безопасности сконфигурированы на повышение безопасности виртуальных машин, хост-системы и, следовательно, физической машины.
В некоторых вариантах осуществления, процессы безопасности реализованы как находящиеся под управлением надзирающего процесса, выполняющегося на хост-системе. Надзирающий процесс может предоставлять или обеспечивать процессам безопасности некоторый уровень доступа и видимости к компонентам виртуальных машин, включая виртуальную память, виртуальный диск, виртуальные сетевые адаптеры, виртуальные драйверы и т.д. Например, надзирающий процесс может позволять процессу безопасности сканировать структуру данных в памяти или хранящуюся на диске, соответствующую виртуальному жесткому диску виртуальной машины, на предмет признаков злонамеренного ПО или нарушений безопасности. Дополнительно (или альтернативно), когда обеспечена объектная модель, поддерживаемая хост-системой, надзирающий процесс может облегчать возвращение информации о состоянии виртуальной машины (например, состояния памяти или состояния связи) хост-системе. В общем случае, поскольку хост-система и надзирающий процесс обеспечивают некоторый уровень изоляции, процессы безопасности могут контролировать и отслеживать безопасность виртуальных машин, в то же время оставаясь недоступными губительным программам, выполняющимся в этих виртуальных машинах. Таким образом, процессы безопасности защищаются от тайных действий или поражения со стороны программ, которые им надлежит отслеживать.
В некоторых вариантах осуществления, процессы безопасности могут использоваться для мониторинга и исправления виртуальной машины, которая находится в сохраненном состоянии, в котором выполнение монитора виртуальной машины остановлено и в котором вся информация, касающаяся состояния памяти, устройства и центрального процессора (ЦП) виртуальной машины, записана в физический файл. Процессы безопасности также могут использоваться для мониторинга и исправления виртуальной машины, которая находится в приостановленном состоянии, которые обычно вызываются менеджером виртуальных машин. В приостановленном состоянии виртуальная машина прекращает выполнение, но остается готовой возобновить следующую команду и обработку. В сценарии приостановленного или сохраненного состояния виртуальная операционная система внутри виртуальной машины не знает об изменении состояния. Аналогично, процессы безопасности могут иметь возможность сканировать и исправлять или очищать виртуальную машину до ее загрузки в хост-систему.
В некоторых вариантах осуществления, хост-система может осуществлять монтирование жесткого диска виртуальной машины, как если бы он был физическим диском, и затем сканировать виртуальный жесткий диск на уровне блоков (как любой другой смонтированный диск). Например, хост-система может использовать драйвер диска, который может быть загружен в операционную систему физической машины. Этот драйвер диска может затем интерпретировать виртуальный жесткий диск и представлять его хост-системе как локально присоединенный диск.
Другой подход к мониторингу виртуальных машин состоит в выполнении «агентского» процесса безопасности на каждой виртуальной машине. В этом подходе агентский процесс безопасности ассоциирован с основным процессом безопасности на хост-системе. Агентский процесс безопасности открывает канал связи с основным процессом безопасности и способствует в обнаружении атаки на виртуальную машину и восстановлении после нее. Хотя этот сценарий может быть сопряжен с опасностью повреждения агентского процесса безопасности во время атаки, агент все же может иметь опцию внешнего восстановления, доступную ему через основной процесс безопасности. В некоторых сценариях (например, сценариях, предусматривающих использование гипервизора (программного средства управления операционными системами)), агент может выполняться на другой виртуальной машине, отличной от той, в отношении которой он фактически в текущий момент выполняет мониторинг.
В некоторых вариантах осуществления, хост-система может делать периодические снимки полного состояния каждой виртуальной машины. Теоретически, это делание снимков может осуществляться мгновенно, с минимальной потерей производительности. Однако возможны многочисленные варианты этого метода. Если процесс безопасности обнаруживает аномалию в виртуальной машине (например, злонамеренное ПО, переписывающее операционную систему, или злонамеренное ПО, объявляющее себя как программа в памяти), то хост-система может восстановить состояние виртуальной машины до состояния последнего снимка, предпринять действие по предотвращению повторения аномалии и перезапустить виртуальную машину.
II. Иллюстративная система
На фиг.1-5 и в нижеприведенном описании обеспечено краткое, общее описание подходящей среды, в которой можно реализовать изобретение. Хотя это и не требуется, аспекты изобретения описаны в общем контексте машиноисполняемых команд, например процедур, выполняемых компьютером общего назначения (например, компьютером-сервером, беспроводным устройством или персональным/портативным компьютером). Специалистам в данной области техники очевидно, что изобретение можно осуществлять на практике с использованием других сред связи, обработки данных или конфигураций компьютерной системы, включая пункты доступа в Интернет, карманные устройства (включая карманные персональные компьютеры (КПК)), переносные компьютеры, сотовые или мобильные телефоны любых типов, встроенные компьютеры (включая подключенные к автомобилям), многопроцессорные системы, телевизионные приставки, сетевые ПК, миникомпьютеры, универсальные компьютеры и пр.
Аспекты изобретения могут быть реализованы в компьютере специального назначения или процессоре данных, который конкретно запрограммирован, сконфигурирован или сконструирован для выполнения одной или нескольких машиноисполняемых команд, подробно объясненных ниже. Аспекты изобретения также могут быть применены на практике в распределенных вычислительных сетях, где задачи или модули выполняются удаленными устройствами обработки данных, соединенными через сеть связи. В распределенной вычислительной среде программные модули могут размещаться в локальных и удаленных запоминающих устройствах.
Аспекты изобретения могут храниться или распространяться на машиночитаемых носителях, включающих в себя магнитно или оптически считываемые компьютерные диски, в качестве машинного кода в полупроводниковой памяти, нанотехнологической памяти, органической или оптической памяти или других переносных носителях данных. Действительно, реализуемые компьютером команды, структуры данных, изображения экрана дисплея и другие данные, отвечающие аспектам изобретения, могут быть распространены по Интернету или другим сетям (включая беспроводные сети) на распространяемом сигнале в среде распространения сигнала (например, электромагнитной (ых) волне(ах), звуковой волне и т.д.) в течение периода времени, либо могут быть обеспечены в любой аналоговой или цифровой сети (с коммутацией пакетов, с коммутацией каналов или другой схемой). Специалистам в данной области техники очевидно, что части изобретения размещаются на компьютере-сервере, тогда как соответствующие части размещаются на компьютере-клиенте, например, мобильном устройстве.
Согласно фиг.1, компьютерная система (физическая машина) 100, на которой могут быть реализованы методики защиты компьютера, обеспечивает различные компоненты. Эти компоненты включают в себя хост-систему 102, сконфигурированную для выполнения в компьютерной системе 100 в дополнение, в сочетании с или вместо стандартной или общего назначения операционной системы 104 компьютера. В некоторых вариантах осуществления хост-система 102 может быть сконфигурирована так, чтобы она была недоступна никому, кроме собственных и/или привилегированных надзирающих функций или функций безопасности. Хост-система 102 может взаимодействовать с одним или несколькими компьютерными ресурсами, например процессором 106 с блоком управления памятью (БУП) 108, диском 110, памятью 112, подсистемой 114 связи и одним или несколькими системными драйверами 116.
В некоторых вариантах осуществления одна или несколько виртуальных машин 118 выполняются под управлением хост-системы 102 и могут подчиняться хост-системе 102. Каждая из виртуальных машин 118 может содержать совокупность компонентов, которые облегчают виртуализацию или эмуляцию процессора и других машинных ресурсов. Например, как показано в иллюстрируемом варианте осуществления, каждая из виртуальных машин 118 может осуществлять доступ к набору эмулированных ресурсов, включая виртуальные сетевые адаптеры 119, виртуальную память 120 (которая может представлять собой выделенную часть памяти 112 физической машины), виртуальный диск 122 и один или несколько виртуальных драйверов 124, каждый из которых представляет виртуальный экземпляр невиртуальных системных драйверов 116. На каждой из этих виртуальных машин 118 выполняется экземпляр 126 виртуальной операционной системы. В некоторых вариантах осуществления, экземпляр 126 виртуальной операционной системы может быть полной или частичной копией операционной системы 104 физической машины.
В общем случае, виртуальные машины 118 могут зависеть от БУП 108 для обеспечения различных защит страничного уровня. В общем случае, приложения или процессы 129, выполняющиеся на каждой из виртуальных машин, используют только эмулированные ресурсы (например, виртуальную память 120, виртуальный диск 122, виртуальные драйверы 124, операционную систему 126, и т.д.) соответствующей виртуальной машины. Такие приложения или процессы 129 иногда называют «гостевым» кодом. Эмулированные ресурсы обычно предполагают заслуживающими доверия в том смысле, что они согласуются со стандартными защитными механизмами на хост-системе 102 и не предоставляют данные пользователя хост-системы гостевому коду, если им в явном виде не предписано делать это.
В некоторых вариантах осуществления эмулированные ресурсы могут обеспечивать обмен данными между хост-системой 102 и гостевым кодом, выполняющимся на виртуальной машине 118, с использованием нескольких методик интеграции, например, доступов к порту ввода/вывода, регистров, отображенных в память, прямого доступа к памяти (DMA), прерываний и т.д. Другие методики обмена данными включают в себя совместное использование буфера обмена, перетаскивание файлов, синхронизацию по времени и т.д. Для поддержки таких методик обмена данными, виртуальные машины 118 могут обеспечивать ряд служб, включая асинхронные гостевые события, синхронные хост-вызовы, перенос данных между гостевым кодом и хост-системой 102, реестр интеграционных услуг и т.д.
Виртуальные машины 118 могут создаваться или инициироваться на хост-системе 102 с использованием любой из нескольких возможных методик. Например, в одном варианте осуществления хост-система 102 может создавать и запускать экземпляр виртуальной машины и конфигурировать параметры для виртуальной машины во время создания. В некоторых вариантах осуществления, хост-система 102 может помещать образ существующей виртуальной машины на диск 110 (возможно, совместно используемый) и загружать этот образ в качестве нового экземпляра виртуальной машины. В некоторых случаях, эта загрузка называется «импортом» экземпляра виртуальной машины и некоторым образом аналогична функции «импорта», которая переносит данные из одного приложения в другое.
В некоторых вариантах осуществления на хост-системе 102 выполняется набор из одного или нескольких надзирающих процессов 128. В некоторых вариантах осуществления один или несколько надзирающих процессов 128 могут иметь полный или частичный доступ к экземплярам 126 виртуальной операционной системы и могут предоставлять услугу безопасности каждой виртуальной машине 118. В некоторых вариантах осуществления надзирающие процессы 128 могут также выполнять такие функции, как регулирование цифровых прав (DRM) и контроль прослушивания. Поскольку эта конфигурация предусматривает, что любое злонамеренное ПО, выполняющееся на виртуальных машинах 118, не может осуществлять доступ к ресурсам вне каждой виртуальной машины, надзирающий процесс 128, в общем случае, уберегается от повреждения злонамеренным ПО.
В некоторых вариантах осуществления один или несколько надзирающих процессов 128 управляют набором приложений безопасности (например, антивирусным программным обеспечением, персональными брандмауэрами, системами обнаружения проникновения и т.д.), которые могут защищать и/или контролировать все виртуальные машины 118 на хост-системе 102. Например, один или несколько надзирающих процессов 128 могут обеспечивать автономное сканирование множественных виртуальных машин набором приложений безопасности. Автономное сканирование может включать в себя конфигурирование набора приложений безопасности, чтобы они знали о каждом из виртуальных ресурсов виртуальных машин, поскольку они размещаются как виртуальные объекты на компьютерной системе (физической машине). Таким образом, набор приложений безопасности может проверять (сканировать) эти виртуальные ресурсы извне виртуальной машины (например, зная внутренний формат структур данных виртуальной машины).
Хотя здесь используются термины "приложение безопасности" и "надзирающий процесс", такие понятия не ограничиваются приложениями или процессами. Напротив, любая утилита или служба, способная предоставлять услуги виртуальной машине и/или ее, ресурсам, может быть реализована на хост-системе для достижения нужных результатов без отхода от объема изобретения. Некоторые примеры такой утилиты или службы включают в себя утилиту по борьбе с рекламным ПО, утилиту по борьбе со шпионским ПО, дефрагментатор диска и т.д.
Автономное сканирование ресурсов виртуальной машины может иметь место в то время, как виртуальные машины выполняются или находятся в спящем режиме (например, в приостановленном или сохраненном состоянии). Например, в случае, когда виртуальная машина может быть создана путем нахождения и загрузки образа существующей виртуальной машины в хост-систему 102, автономное сканирование (и любые необходимые очистка или исправления) могут происходить до «импорта» экземпляра виртуальной машины. Ресурсы виртуальной машины, которые можно сканировать в приостановленном или сохраненном состоянии, включают в себя виртуальные жесткие диски, содержимое памяти виртуальной машины, структуры буфера виртуального связного порта и т.д. В некоторых реализациях может быть невозможно осуществлять доступ к памяти приостановленной виртуальной машины. Однако память виртуальной машины все же может быть доступна, когда виртуальная машина находится в сохраненном состоянии, или через снимок виртуальной машины.
На фиг.2 показан один пример конфигурации 200 автономного сканирования, иллюстрирующий различные компоненты по фиг.1. В этой конфигурации приложение 202 безопасности и необязательный надзирающий процесс 128 размещены на хост-системе 102. Приложение 202 безопасности, которое может, по меньшей мере, частично находиться под управлением надзирающего процесса 128, рассматривает ресурсы виртуальной машины 118 как структуру данных или набор структур данных, которую (ый) можно сканировать на предмет признаков нарушений безопасности. Чтобы можно было осуществлять доступ к ресурсам виртуальной машины 118 в необработанном виде и точно обнаруживать нарушения безопасности, приложение 202 безопасности может опираться на информацию о семантике и конфигурации структур данных, связанных с ресурсами. В некоторых вариантах осуществления эта информация обновляется, чтобы отражать любые намеренные изменения семантики и конфигурации структур данных.
Например, приложение 202 безопасности, показанное на фиг.2, может представлять собой средство антивирусного сканирования, которое сканирует виртуальную машину 118, чтобы определить, заражена ли она одним или несколькими известными вирусами или червями. Чтобы начать процесс сканирования, антивирусное средство 202 загружает текущий файл определения сигнатур в свою программную память. Например, файл определения сигнатур может задавать семантику и конфигурацию структуры виртуального жесткого диска виртуальной машины, тем самым обеспечивая точку отсчета для антивирусного средства при сканировании жесткого диска виртуальной машины в его текущем состоянии.
Затем антивирусное средство направляет свое сканирование на считывание части жесткого диска физической, машины, которая соответствует виртуальному жесткому диску виртуальной машины. Таким образом, антивирусное средство эффективно считывает содержимое виртуального жесткого диска и сравнивает это содержимое (например, объект содержимого) со своим списком известного злонамеренного содержимого, используя способы и методики, применяемые специалистами в данной области техники при обнаружении злонамеренного программного обеспечения. В целях этого примера, объект содержимого на виртуальном жестком диске может представлять собой файл или другой объект, манипулируемый операционной системой, например ключ из системного реестра Microsoft Windows, или любой другой объект на диске, который можно идентифицировать как часть экземпляра злонамеренного или нежелательного программного обеспечения. Обнаружив злонамеренное программное обеспечение, антивирусное средство может попытаться удалить любые вредные объекты или удалить инфекцию, присутствующую в объекте.
На фиг.3А показан второй пример конфигурации 300 автономного сканирования. В этой конфигурации, объектный интерфейс 302 виртуальной машины, поддерживаемый надзирающим процессом 128, обеспечивает универсальный интерфейс, через который приложение 304 безопасности может осуществлять доступ к ресурсам виртуальных машин. Объектный интерфейс 302 виртуальной машины может отображать структуры данных виртуальной машины, которые могут варьироваться от виртуальной машины к виртуальной машине, в общий формат, к которому может осуществлять доступ приложение 304 безопасности для сканирования и других действий. Таким образом, приложение 304 безопасности должно быть разработано только для доступа к этому общему формату, а не к каждому варианту формата, который может иметь виртуальная машина. Например, хост-система 102 может обнаружить информацию о состоянии виртуальных машин 118 (например, состоянии диска, состоянии памяти или состоянии связи), чтобы приложение 304 безопасности могло отслеживать его на предмет нарушений безопасности или других проблем. Кроме того, объектный интерфейс 302 виртуальной машины может обеспечивать функциональные возможности, которые могут использовать множественные приложения безопасности. Например, объектный интерфейс 302 виртуальной машины может обеспечивать функцию, которая позволяет другому процессу безопасности сканировать виртуальные сетевые адаптеры виртуальной машины на предмет входящих сетевых пакетов, имеющих злонамеренное содержимое, например полезную нагрузку в виде червей.
Эта конфигурация обеспечивает некоторую гибкость для разработчика виртуальной машины и разработчика приложения безопасности. Например, разработчик виртуальной машины может изменить структуры данных виртуальной машины без последствий для разработчика приложения безопасности. Таким образом, приложение безопасности 304 нужно разрабатывать только для доступа к этому общему формату, а не к каждому варианту формата, который может иметь виртуальная машина.
В некоторых вариантах осуществления методика автономного сканирования обеспечивает синхронизацию текущего состояния виртуальной машины с тем, что приложение безопасности воспринимает как текущее состояние виртуальной машины, тем самым обеспечивая возможности более точного и согласованного сканирования. Эта синхронизация может быть полезна в случае, когда состояния виртуальной машины быстро изменяются.
Согласно фиг.3В, один способ осуществления этой синхронизации состоит в выполнении агентского процесса 322, который обеспечивает самосогласованный вид виртуальной машины в режиме, близком к реальному времени. Агентский процесс 322, который может выполняться на виртуальной машине 118, может затем экспортировать этот вид виртуальной машины в объектный интерфейс 302 виртуальной машины, который затем может предоставлять соответствующую информацию надзирающему процессу и/или приложению безопасности. В некоторых вариантах осуществления, агентский процесс 322 может обеспечивать интерфейс прикладного программирования (API) для использования объектным интерфейсом 302 виртуальной машины. (Альтернативно, приложение безопасности может обеспечивать аналогичный API для использования объектным интерфейсом 302 виртуальной машины.)
Альтернативный способ осуществления этой синхронизации состоит в том, что виртуальная машина 118 создает постоянные снимки своего состояния и сохраняет эти снимки в памяти или на диске. Хотя такие снимки могут быть на несколько секунд «устаревшими», они, тем не менее, будут самосогласованными.
Согласно фиг.3С, альтернативная методика обеспечения сканирования безопасности виртуальных машин предусматривает систему 330, сконфигурированную так, что приложение 336 безопасности и надзирающий процесс 334 выполняются на указанной виртуальной машине 332 (а не непосредственно на хост-системе 102). Тогда приложение 336 безопасности и надзирающий процесс 334 могут отслеживать и/или сканировать другие виртуальные машины 118 для обнаружения проблем. Таким образом, указанная виртуальная машина 332 (которая может быть предназначена для обеспечения мониторинга безопасности) может оставаться защищенной от атак.
III. Системные последовательности операций
На фиг.4-8 изображены иллюстративные логические блок-схемы, где показаны процессы, происходящие в системе, изображенной на фиг.1. На этих логических блок-схемах не показаны все функции или обмены данными, но зато они позволяют понять команды и данные, обмен которыми происходит в системе. Специалистам в данной области очевидно, что некоторые функции или обмены командами и данными можно повторять, изменять, опускать или дополнять, и что можно легко реализовать другие, не показанные, аспекты.
Согласно фиг.4, надзирающая процедура 400, выполняемая, например, надзирающим процессом, показанным на фиг.1, может выполняться в хост-системе (или вне ее) для мониторинга, изменения и/или конфигурирования процессов или виртуальных операционных систем, выполняющихся на виртуальной машине. Альтернативно, надзирающая процедура 400 может отслеживать изменять и/или конфигурировать процессы, выполняющиеся на реальной (а не виртуальной) операционной системе.
На этапе 401 процедура 400 приостанавливает операционную систему виртуальной машины. На этапе 402 принятия решения процедура 400 проверяет изменения, которые могут быть вызваны разрушительными действиями (например, нестандартными процессами), имеющими место в виртуальной машине. Например, процедура 400 может сканировать часть ядра операционной системы виртуальной машины для выявления проблем. В порядке альтернативы (или дополнительно к) мониторингу ядра виртуальной операционной системы, процедура 400 может отслеживать другие аспекты, связанные с виртуальной (или реальной) операционной системой. Например, процедура 400 может отслеживать пространства виртуальных адресов, отслеживать эмулированные устройства, отслеживать эмулированный жесткий диск, осуществлять проверки целостности (например, проверять контрольные суммы), проверять целостность файлов, находящихся на виртуальном диске или в памяти, и т.д.
Если на этапе 402 принятия решения процедура 400 не обнаруживает изменений, которые могут быть следствием вредоносных действий, то процедура 400 переходит к этапу 404 для перезапуска ядра виртуальной операционной системы, прежде чем закончить. Однако в некоторых вариантах осуществления (не проиллюстрированных) процедура 400 может возвращаться к этапу 401 (по истечении периода времени для повторного осуществления этапов приостановки и проверки (пока экземпляр виртуальной операционной системы не закончит работу). Если же на этапе 402 принятия решения, процедура 400 обнаруживает изменения, которые могут быть следствием вредоносных действий, то процедура переходит к этапу 403, где процедура инициирует ограничительные действия. Пример ограничительных действий может включать в себя такие действия, как временная приостановка гостевой операционной системы для осуществления дополнительного сканирования, временная приостановка процессов выбора, очистка злонамеренного ПО и переформатирование виртуальной операционной системы для исправления любого повреждения, отключение виртуальной машины после взятия снимка, чтобы среду виртуальной машины можно было в большей или меньшей степени восстановить после перезапуска виртуальной машины.
На фиг.5 показан пример процедуры 500 автономного сканирования, обеспечиваемого надзирающим процессом, который управляет набором приложений безопасности (например, антивирусным программным обеспечением), способных осуществлять автономное сканирование и исправление виртуальной машины, выполняющейся на хост-системе. На этапе 501 процедура 500 извлекает периодический снимок текущего состояния выполняющейся виртуальной машины. На этапе 502 процедура сканирует извлеченный периодический снимок. На этапе 503 принятия решения, если проблема обнаружена, то процедура переходит к этапу 504, где процедура извещает выполняющуюся виртуальную машину о проблеме или, альтернативно, предписывает виртуальной машине выполнить откат к последнему сохраненному состоянию, которое было до возникновения проблемы. Если на этапе 503 принятия решения процедура 500 не обнаруживает проблему, то процедура возвращается к этапу 501 для извлечения следующего периодического снимка.
На фиг.6 показан пример процедуры 600 автономного сканирования, обеспечиваемого надзирающим процессом, который управляет набором приложений безопасности (например, антивирусным, программным обеспечением), способных осуществлять автономное сканирование и исправление множественных виртуальных машин, выполняющихся на хост-системе. Например, процедуру 600 можно использовать для обнаружения и восстановления виртуальной машины, которая была отключена вследствие заражения злонамеренным ПО. На этапе 601 процедура 600 монтирует следующую структуру или компонент виртуальной машины к хост-системе по аналогии с монтированием физического диска. Таким образом, структура или компонент включается в состав операционной системы компьютера, а не рассматривается как внешний сканируемый объект. Структура или компонент может быть эмулированным компонентом, если смотреть с точки зрения хост-системы. В некоторых вариантах осуществления структуры или компоненты виртуальной машины могут быть реализованы так, что хост-система может обеспечивать интерфейс для набора приложений безопасности, чтобы сканировать их. Например, память виртуальной машины можно реализовать так, чтобы ее можно было сканировать на предмет злонамеренного ПО, хранящегося в памяти.
На этапе 602 набор приложений безопасности сканирует структуру виртуального жесткого диска (или структуру, хранящуюся в памяти, и т.д.). На этапе 603 принятия решения, если сканируемая структура повреждена, то процедура 600 переходит к этапу 604, где приложения безопасности исправляют структуру виртуального жесткого диска (или структуру, хранящуюся в памяти). Если же согласно этапу 603 принятия решения сканируемый компонент не поврежден, то процедура переходит к этапу 605 принятия решения.
На этапе 605 принятия решения, если все структуры или компоненты виртуальной машины просканированы, то процедура заканчивается. В противном случае, процедура возвращается к этапу 601 для монтирования следующей структуры или компонента виртуальной машины.
В некоторых вариантах осуществления, процедуру 600 можно использовать в сочетании с методами оптимизации, которые отслеживают изменения, происходящие между сканированиями, на каждом жестком диске виртуальной машины. Таким образом, процедура 600 может сканировать только изменения, произошедшие после последнего сканирования, что повышает эффективность сканирования. Например, процедура оптимизации может отслеживать изменения на жестком диске виртуальной машины на уровне блоков. Изменения на уровне блоков можно затем отображать изменения на уровне файлов для целей сканирования (поскольку обычное антивирусное программное обеспечение сканирует на уровне файлов). Альтернативно, изменения можно отслеживать, просматривая изменения структур главной файловой таблицы. Для этого может потребоваться хранилище контрольных точек предыдущих главных файловых таблиц в хост-системе.
На фиг.7 показан пример процедуры 700 автономного сканирования, обеспечиваемого надзирающим процессом, который управляет набором приложений безопасности (например, антивирусным программным обеспечением), способных осуществлять автономное сканирование и исправление множественных виртуальных машин, выполняющихся на хост-системе. Например, процедуру 700 можно использовать для обнаружения и восстановления виртуальной машины, которая была отключена вследствие заражения злонамеренным ПО. В отличие от процедуры автономного сканирования, показанной на фиг.6, которая монтирует структуру или компонент виртуальной машины до сканирования, процедура, показанная на фиг.7, сканирует структуру или компонент извне. На этапе 701 процедура 700 сканирует следующую структуру или компонент виртуальной машины. Структура или компонент может быть эмулированным компонентом, если смотреть с точки зрения хост-системы. В некоторых вариантах осуществления структуры или компоненты виртуальной машины могут быть реализованы так, что хост-система может обеспечивать интерфейс для набора приложений безопасности, чтобы сканировать их. Например, память виртуальной машины можно реализовать так, чтобы ее можно было сканировать на предмет злонамеренного ПО, хранящегося в памяти.
На этапе 702 принятия решения, если сканируемая структура повреждена, то процедура 700 переходит к этапу 703, где приложения безопасности исправляют структуру виртуального жесткого диска (или структуру, хранящуюся в памяти). Если же согласно этапу 702 принятия решения сканируемый компонент не поврежден, то процедура переходит к этапу 704 принятия решения. На этапе 704 принятия решения, если все структуры или компоненты виртуальной машины просканированы, то процедура заканчивается. В противном случае, процедура возвращается к этапу 701 для монтирования следующей структуры или компонента виртуальной машины.
На фиг.8 показана логическая блок-схема, которая представляет второй пример процедуры 800 автономного сканирования, обеспечиваемого надзирающим процессом, который управляет набором приложений безопасности (например, антивирусным программным обеспечением), способных осуществлять автономное сканирование и исправление множественных виртуальных машин, выполняющихся на хост-системе. В процедуре 800 агентский процесс, например, агентский процесс 322, показанный на фиг.3В, позволяет синхронизировать фактическое состояние виртуальной машины при сканировании и состояние виртуальной машины, воспринимаемое приложениями безопасности.
На этапе 801 процедура 800 устанавливает связь между приложением безопасности (например, приложением 304 безопасности, показанным на фиг.3В, которое выполняется на хост-системе или на объектном интерфейсе виртуальной машины) и агентским процессом через некоторый интерфейс межмашинной связи. На этапе 802 процедура 800 устанавливает доступ к памяти виртуальной машины. Например, агентский процесс, выполняющийся на хост-системе, может обеспечивать доступ к виртуальному буферу, который соответствует памяти приложений виртуальной машины. Процедура переходит к этапу 803, где приложение безопасности сканирует память на предмет проблем безопасности. Например, когда приложение безопасности является средством антивирусного сканирования, средство антивирусного сканирования может сканировать память на предмет структур кода, которые совпадают с сигнатурами известного злонамеренного программного обеспечения. На этапе 804 принятия решения, если какие-либо структуры или компоненты виртуальной машины повреждены, то процедура 800 переходит к этапу 805, где приложение безопасности и/или агентский процесс очищает память компьютера. Альтернативно, приложение безопасности может сигнализировать агентскому процессу, чтобы тот предпринял корректирующее действие по отношению к виртуальной машине. Если же согласно этапу 804 принятия решения никакие структуры или компоненты не были повреждены, то процедура заканчивается.
IV. Заключение
Если в контексте явно не требуется обратное, то на протяжении описания и формулы изобретения слова «содержит», «содержащий» и т.п.следует рассматривать во включительном смысле, а не в исключительном или исчерпывающем смысле; т.е., скажем, в смысле «в том числе, но без ограничения». Кроме того, слова «здесь», «выше», «ниже» и слова аналогичного значения, используемые в данной заявке, должны относиться к этой заявке в целом, а не к каким-либо конкретным частям этой заявки. Когда в формуле изобретения используется слово «или» в отношении списка из двух или более элементов, это слово охватывает все из следующих интерпретаций слова: любой из элементов списка, все элементы списка и любая комбинация элементов списка.
Вышеприведенное подробное описание вариантов осуществления изобретения не призвано исчерпывать или ограничивать изобретение именно той формой, которая раскрыта выше. Хотя конкретные варианты осуществления и примеры изобретения описаны выше в иллюстративных целях, в пределах объема изобретения возможны различные эквивалентные модификации, что очевидно специалистам в данной области. Например, хотя процессы или блоки представлены в данном порядке, альтернативные варианты осуществления могут осуществлять процедуры, имеющие этапы, или использовать системы, имеющие блоки, в другом порядке, и некоторые процессы или блоки могут быть удалены, перемещены, добавлены, подразделены, объединены и/или изменены. Каждый из этих процессов или блоков можно реализовать различными путями. Кроме того, хотя процессы или блоки иногда показаны как осуществляемые последовательно, эти процессы или блоки можно вместо этого осуществлять параллельно или можно осуществлять в разное время. Когда контекст позволяет, слова в вышеприведенном подробном описании, использующем единственное или множественное число, также могут включать в себя множественное или единственное число, соответственно, когда позволяет контекст.
Принципы изобретения, обеспеченные здесь, можно применять к другим системам, не обязательно системе, описанной здесь. Элементы и действия различных вариантов осуществления, описанных выше, можно комбинировать для обеспечения дополнительных вариантов осуществления.
Данная заявка относится к находящейся в общей собственности патентной заявке США под названием "Method and System for a Self-healing Device", поданной 21 декабря 2004 г. Все вышеупомянутые патенты и заявки и другие ссылки, включая перечисленные в прилагаемых документах подачи, включены сюда посредством ссылки. Аспекты изобретения можно, при необходимости, изменять, чтобы использовать системы, функции и понятия различных ссылок, описанные выше, для обеспечения других дополнительных вариантов осуществления изобретения.
Эти и другие изменения можно делать в изобретении в свете вышеприведенного Подробного описания. Хотя вышеприведенное описание детализирует определенные варианты осуществления изобретения и описывает режим, считающийся наилучшим, вне зависимости от того, насколько подробно они изложены в тексте, изобретение можно осуществлять на практике многими способами. Как отмечено выше, конкретную терминологию, используемую при описании определенных признаков или аспектов изобретения, не следует рассматривать как терминологию, которая переопределена здесь для ограничения какими-либо конкретными характеристиками, признаками или аспектами изобретения, с которыми связана эта терминология. В общем, термины, используемые в нижеследующей формуле изобретения, не следует рассматривать в плане ограничения изобретения конкретными вариантами осуществления, раскрытыми в описании изобретения, если в вышеприведенном разделе Подробное описание такие термины явно не определены. Соответственно, фактический объем изобретения охватывает не только раскрытые варианты осуществления, но также эквивалентные способы практической реализации изобретения в соответствии с формулой изобретения.
Хотя определенные аспекты изобретения представлены ниже в определенных пунктах формулы изобретения, изобретатели рассматривают различные аспекты изобретения в любом количестве форм формулы изобретения. Например, хотя только один аспект изобретения изложен как реализованный в машиночитаемом носителе, другие аспекты могут аналогично быть реализованы в машиночитаемом носителе. Соответственно, изобретатели присвоили себе право добавлять дополнительные пункты формулы изобретения после подачи заявки для рассмотрения таких дополнительных форм формулы изобретения для других аспектов изобретения.