СИСТЕМА И СПОСОБ ОБНАРУЖЕНИЯ УГРОЗ В КОДЕ, ИСПОЛНЯЕМОМ ВИРТУАЛЬНОЙ МАШИНОЙ
SYSTEM AND METHOD OF DETECTING THREAT IN CODE EXECUTED BY VIRTUAL MACHINE

Область техники
Изобретение относится к системам и способам обнаружения вредоносного программного обеспечения, код которого исполняется виртуальной машиной.
Уровень техники
В настоящее время наблюдается резкое увеличение количества компьютерных угроз, программный код которых исполняется виртуальной машиной (например, Java Virtual Machine, Common Language Runtime, ActionScript Virtual Machine). Наибольшую опасность среди подобных угроз представляют эксплоиты.
Эксплоитом называется фрагмент программного кода или последовательность команд, использующая уязвимости в программном обеспечении и применяемая для проведения атаки на вычислительную систему. Опасность представляют не сами эксплоиты, а "полезная нагрузка", которую они с собой несут. Полезная нагрузка эксплоита - реализованный злоумышленником функционал, который при эксплуатации уязвимости на атакованной системе приводит к несанкционированной активации функционала. В качестве примера такого функционала можно привести загрузку вредоносного ПО. Эксплоиты могут использоваться как самостоятельно - для тестирования безопасности компьютерных систем, так и совместно с вредоносным программным обеспечением.
Из большого многообразия эксплоитов особо следует отметить те, для исполнения кода которых необходима виртуальная машина. Данный вид эксплоитов чаще всего используется для атак и является наиболее опасным по причине сложности его обнаружения.
Существуют два основных способа борьбы с подобного рода угрозами. Первый способ подразумевает устранение уязвимости, которая используется эксплоитом. Второй способ заключается в использовании специальных средств обнаружения эксплоитов и пресечения их активности. Средства могут быть как встроенные в само программное обеспечение (например, модель безопасности виртуальной машины Java), так и сторонние. Например, в патенте US 8239939 описана система, которая реализована в виде отдельного компонента, встраиваемого между клиентом и сервером, и путем модификации посылаемой клиенту информации позволяет снизить риск исполнения вредоносного кода браузером клиента.
Первый предложенный способ является самым надежным и логически верным, но у него есть два существенных недостатка. Во-первых, с момента обнаружения уязвимости до момента выпуска исправленной версии программного обеспечения проходит достаточно большой промежуток времени. Весь этот период пользователи уязвимого продукта остаются незащищенными. И, во-вторых, данный способ никак не защищает от уязвимостей "нулевого дня" (угроз, использующих ошибку или уязвимость в приложении или операционной системе и появившихся сразу после обнаружения данной уязвимости, но до выпуска соответствующего обновления).
Второй способ лишен указанных недостатков, но то, насколько он будет надежен, зависит от качества его технической реализации и, следует отметить, что подобные средства защиты сами могут быть уязвимы. Самыми распространенными решениями, использующими данный способ, являются обнаружение эксплоитов с использованием эвристических правил и сигнатурного анализа (анализа на идентичность анализируемого кода образцам кода известных компьютерных угроз); встроенные средства безопасности виртуальных машин. Применение сигнатур хорошо подходит для обнаружения уже известных эксплоитов. В случае если атакующий код будет модифицирован, данное решение окажется бесполезным. Указанного недостатка лишен эвристический метод, но и он неэффективен при более глубокой модификации кода (например, путем обфускации), изменении алгоритма работы вредоносного кода, применении методов, препятствующих эмуляции кода.
Виртуальная машина - это программное обеспечение, которое формирует необходимый уровень абстракции, где достигается независимость от платформы, используемого оборудования. Виртуальные машины имеют собственные встроенные модели безопасности. Особо стоит отметить модель безопасности Java Virtual Machine (JVM), ее составляют четыре компонента -верификатор файлов классов (class file verifier), загрузчик классов (ClassLoader), менеджер безопасности (SecurityManager) и сама архитектура JVM. Поскольку байт-коды Java интерпретируются, то можно контролировать индексы массивов, что позволяет избежать переполнения буфера - самой распространенной и опасной ошибки периода выполнения ПО. Встроенные механизмы обработки исключительных ситуаций позволяют эффективно решать возникающие конфликты, а "сборщик мусора", который очищает неиспользуемую память, не дает возможности злоумышленнику просмотреть "мусорные" блоки памяти, которые могут содержать полезную информацию.
Менеджер безопасности, наиболее важный элемент в модели безопасности, это компонент, предоставляющий приложениям права в соответствии с установленной политикой безопасности. При возникновении ситуации, когда приложение пытается выполнить привилегированную операцию, менеджер безопасности проверяет права приложения и определяет легитимность подобного поведения. Менеджером безопасности по умолчанию является Java класс Java. long. SecurityManager, он включает в себя несколько методов для проверки критичных к политике безопасности операций.
Начиная с 2010 года, число направленных атак на JVM с применением эксплоитов резко возросло, и, как показали эти атаки, модель безопасности, предложенная создателями Java, на практике имеет серьезные недостатки в реализации, активно используемые злоумышленниками при проведении атак.
Таким образом, используемые в настоящее время способы обнаружения эксплоитов либо имеют ограниченную область применения, либо имеют недостатки, которые создают угрозу безопасности и в целом не обеспечивают надлежащей защиты.
Раскрытие изобретения
Настоящее изобретение предназначено для обнаружения эксплоитов и других угроз, программный код которых исполняется виртуальной машиной.
Технический результат заключается в повышении безопасности виртуальной машины за счет обнаружения угрозы в программном коде, выполняемом машиной, путем контроля модификаций кода виртуальной машины.
Способ обнаружения угроз в коде, исполняемом виртуальной машиной, в котором модифицируют код виртуальной машины для отслеживания исключений внутри виртуальной машины и управления виртуальной машиной; отслеживают исключения внутри виртуальной машины; останавливают виртуальную машину при наступлении исключения; получают информацию о контексте исключения, содержащего данные о событиях виртуальной машины, приведших к этому исключению; анализируют контекст исключения на наличие поведения характерного для угрозы; обнаруживают угрозу на основании анализа;
В частном случае к исключениям внутри виртуальной машины относятся критические события, которые могут вызвать нарушение правил, установленных политикой безопасности.
В другом частном случае модификацию кода виртуальной машины используют для сбора статистической информации о выявленных угрозах.
Еще в одном частном случае модификация кода виртуальной машины осуществляется путем перегрузки методов класса.
Система обнаружения угроз в коде, исполняемом виртуальной машиной, содержит виртуальную машину, модифицированную модулем контроля, предназначенную для исполнения анализируемого кода; модуль контроля, предназначенный для модификации кода виртуальной машины, отслеживания исключений в виртуальной машине, сбора информации о контексте исключения, отправки информации о контексте исключения модулю анализа и остановки работы виртуальной машины по указанию модуля анализа; модуль анализа, предназначенный для анализа информации о контексте исключения, полученной от модуля контроля на наличие угрозы и обнаружения угроза по результатам анализа.
В частном случае реализации системы модуль контроля используется для сбора статистической информации о выявленных угрозах.
В другом частном случае реализации системы наполнение баз осуществляется на основании собранной статистики о выявленных угрозах.
Еще в одном частном случае реализации системы анализ информации о контексте исключения осуществляется путем сравнения с внешней обновляемой базой шаблонов.
В другом частном случае реализации системы модификация виртуальной машины осуществляется путем перегрузки методов класса.
Краткое описание чертежей
Сопровождающие чертежи включены для обеспечения дополнительного понимания изобретения и составляют часть этого описания, показывают варианты осуществления изобретения и совместно с описанием служат для объяснения принципов изобретения.
Заявленное изобретение поясняется следующими чертежами.
Фиг.1 показывает структурную схему способа обнаружения угроз в коде, исполняемом виртуальной машиной.
Фиг.2 показывает пример системы обнаружения угроз в коде, исполняемом виртуальной машиной.
Фиг.3 показывает пример реализации частного случая системы обнаружения угроз в коде, исполняемом виртуальной машиной, которым является модификация кода Java Virtual Machine (JVM).
Фиг.4 показывает пример компьютерной системы общего назначения.
Хотя изобретение может иметь различные модификации и альтернативные формы, характерные признаки, показанные в качестве примера на чертежах, будут описаны подробно. Следует понимать, однако, что цель описания заключается не в ограничении изобретения конкретным его воплощением. Наоборот, целью описания является охват всех изменений, модификаций, входящих в рамки данного изобретения, как это определено приложенной формуле.
Описание изобретения
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Приведенное описание предназначено для помощи специалисту в области техники для исчерпывающего понимания изобретения, которое определяется только в объеме приложенной формулы.
Для обнаружения вредоносного кода и блокирования его исполнения виртуальной машиной необходимо осуществлять контроль над самой виртуальной машиной и кодом, который она интерпретирует. Один из способов, позволяющих это сделать, - модификация кода самой виртуальной машины. На Фиг.1 изображен алгоритм, который позволяет обнаруживать вредоносный код, исполняемый виртуальной машиной. На этапе 101 осуществляется модификация кода виртуальной машины. Данное изменение позволяет контролировать исполнение кода виртуальной машиной, отслеживать события виртуальной машины, останавливать виртуальную машину, запускать и т.д. Далее на этапе 102 отслеживаются исключения виртуальной машины. События проверяются на этапе 103, если событие, вызванное виртуальной машиной, является исключением, то на этапе 104 работа виртуальной машины будет приостановлена. Под исключениями здесь и далее понимаются критические события, которые могут вызвать нарушение правил, установленных политикой безопасности. Пока виртуальная машина остановлена, собирается информация о контексте исключения 105, а затем на этапе 106 анализируется. Под контекстом понимается информация, описывающая условия возникновения исключения (как и чем вызвано, что предшествовало возникновению критического события и т.д.). Анализ контекста исключения происходит путем сравнения информации из контекста исключения, полученной на этапе 105, с шаблоном (например, стек вызовов, предшествовавших исключению, со стеком вызовов, перечисленных в шаблоне). Анализ производится с целью выявления угрозы в коде, вызвавшем исключение. Если код содержит угрозу 107, исполнение кода виртуальной машиной будет завершено 108, если код безопасен, виртуальной машине будет разрешено продолжить работу, и тогда на этапе 109 виртуальная машина снова будет запущена.
На Фиг.2 изображен частный случай реализации предложенного алгоритма. В код виртуальной машины 203 внедряется код модуля контроля 201, который отслеживает исключения и при их наступлении собирает информацию о контексте исключения, после чего передает собранную информацию модулю анализа 202. Модуль анализа производит сравнение полученного контекста с шаблонами, которые содержатся в постоянно обновляемой базе 204. На основании сравнения модуль анализа 202 делает вывод о безопасности кода, вызвавшего исключение, и сообщает о принятом решении модулю контроля 201. Модуль контроля 201 в зависимости от решения модуля анализа 202 разрешает виртуальной машине продолжить исполнение кода либо завершает ее работу.
На Фиг.3 показана схема реализации частного случая метода модификации кода JVM 302 путем внедрения кода модуля контроля 201 в адресное пространство виртуальной машины с целью обнаружения угроз. Внедрение кода осуществляет модуль управления 303, который постоянно загружен в системе и отслеживает запуск виртуальной машины. При старте JVM в системе модуль управления 303 модифицирует код виртуальной машины. Модуль контроля 201 является расширением уже существующей встроенной системы безопасности 301, на недостатки которой указывалось выше, и является надстройкой над ней. Модификация кода JVM заключается в перегрузке ряда методов класса SecurityManager. Модуль контроля 201 отслеживает исключения, характерные для вредоносного кода (доступ к файловой системе, работа с сетью и т.д.) и, в случае возникновения такого исключения, передает контекст исключения модулю анализа 202 через модуль управления 303. Модулем анализа 202 принимается решение о безопасности поведения кода, вызвавшего исключение, на основании анализа данных, полученных от модуля контроля 201, и в том случае, если поведение признается вредоносным, модуль управления дает команду модулю контроля 201 завершить исполнение кода. Модуль анализа 202 для сравнения использует шаблоны, содержащиеся в постоянно обновляемой базе 204.
В еще одном частном случае система анализа для проверки может не использовать обновляемую базу, а осуществлять обнаружение на основе жестко заданных шаблонов.
В другом частном случае модификация виртуальной машины может осуществляться прежде, чем виртуальная машина будет загружена в память (например, на диске).
Кроме того, в частном случае реализации настоящего изобретения модуль контроля 201 может использоваться для сбора статистической информации о выявленных угрозах, на основе этой информации будет происходить наполнение базы 204.
Фиг.4 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26 содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.
Персональный компьютер 20, в свою очередь, содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.
Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.
Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканнер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например, при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47, персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например колонками, принтером и т.п.
Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании сущности персонального компьютера 20, представленного на Фиг.4. В вычислительной сети могут присутствовать также и другие устройства, например маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.
Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой. Специалисту в данной области становится понятным, что могут существовать и другие варианты осуществления настоящего изобретения, согласующиеся с сущностью и объемом настоящего изобретения.