СИСТЕМА И СПОСОБ ЗАЩИТЫ КОМПЬЮТЕРНЫХ ПРИЛОЖЕНИЙ
SYSTEM AND METHOD OF PROTECTING COMPUTER APPLICATIONS

Область техники
Настоящее изобретение относится к системам и способам защиты информации и, более конкретно, к системам и способам виртуализации приложений с целью обеспечения безопасности информации, обрабатываемой данным приложением.
Уровень техники
Ускоренный рост вредоносных программ и атак на информационные ресурсы приводит к тому, что специалисты по информационной безопасности не способны обработать все новые файлы для их последующего обнаружения даже с применением автоматизированных средств.
При работе с конфиденциальной информацией безопасность приобретает еще большую актуальность. Эффективность средства обнаружения угроз колеблется в зависимости от новизны и сложности вредоносного кода и не является абсолютной. Появляется необходимость в новом рубеже защиты, который должен оградить критические объекты системы или приложения от несанкционированного доступа. Подобным средством может являться «песочница» - средство для исполнения инструкций приложения в виртуальной среде с заданными правилами. Исполнение программы может быть ограничено, что исключает доступ к критической области памяти и процессам. Основной целью применения подобных средств является защита системы от непроверенного программного кода, в том числе от вредоносных программ.
Вероятность того, что компьютерная система заражена и содержит вирус (тут и далее под вирусом понимается любой вид вредоносной программы), существует всегда. Этот случай указывает новое направление развития средств безопасности, когда на зараженной компьютерной системе необходимо совершить действия с конфиденциальной или секретной информацией в безопасном режиме, т.е. ограничить процессы, память, файлы и другие объекты защищаемого приложения от других программ, сохранив при этом работоспособность данного приложения. Подобное решение раскрывается в данном изобретении.
Существуют технологии, определяющие предшествующий уровень техники. Описанные в заявках US 20100024936 и US 20100192224 системы и способы виртуализации приложений, и более детально веб-браузеров, направлены на защиту хостовой системы от угроз, исходящих из сети Интернет, но не позволяют безопасно работать с приложением, когда хостовая система уже является зараженной вредоносной программой. В заявке US 20090300307 более детально описан способ виртуализации на лету за счет внедрения уровня виртуализации между операционной системой и модулем памяти, который контролирует команды чтения/записи в область памяти. Данная технология не позволяет фильтровать запросы по видам операций, отличным от чтения/записи, анализировать запросы по алгоритмам антивирусной проверки и динамически изменять правила фильтрации запросов.
Данное изобретение устраняет описанные недостатки предшествующего уровня техники и позволяет повысить уровень защищенности приложений и его объектов.
Сущность изобретения
Настоящее изобретение предназначено для защиты приложений от других процессов, исполняющихся на компьютере. Техническим результатом настоящего изобретения является предотвращение несанкционированного доступа к объектам защищаемого приложения. Описанное далее изобретение позволяет перехватывать программные запросы к объектам защищаемого приложения, анализировать их на вредоносный характер и в случае опасности блокировать запрос, виртуализировать объекты приложения и хостовой системы и в зависимости от результатов анализа запроса предоставлять ссылку на объект или его виртуальную копию. Система защиты компьютерных приложений состоит из: (а) драйвера защиты, который предназначен для перехвата программных запросов; (б) обработчика безопасной среды исполнения, который предназначен для выделения программных запросов к объектам защищаемого приложения от процессов хостовой системы, обработки выделенных запросов в соответствии с установленными ограничениями и отправки ответа на перехваченный запрос, включающего запрашиваемый объект, ошибку или виртуальный объект в зависимости от установленных ограничений; (в) безопасной среды исполнения, предназначенной для создания виртуальных копий объектов, к которым адресуются перехваченные запросы.
Система защиты компьютерных приложений также может быть настроена на обработку запросов от приложений к хостовой системе.
Вариант реализации изобретения предполагает перехват запросов, включающих операцию открытия процесса, или операцию открытия потока, или операцию чтения памяти процесса, или операцию прямого доступ к памяти, или операцию доступа к файловой системе, или операцию доступа к реестру, или операцию доступа к объектам ядра ОС, или операцию на получение привилегий, имя объекта в качестве операнда.
В одном из вариантов реализации система защиты приложений содержит средство обнаружения угроз, предназначенное для определения вредоносного характера перехваченного запроса и блокирования запроса в том случае, если вредоносный характер перехваченного запроса установлен.
В другом варианте реализации безопасная среда исполнения контролирует изменения виртуальных объектов и позволяет применить изменения путем переноса виртуальных объектов в хостовую систему или отменить изменения, удалив редактированные виртуальные объекты.
В одном из примеров системы защиты приложений объектами хостовой системы или объектами приложения являются запись реестра, каталоги файловой системы, ядро операционной системы и сервисы пользователя.
Краткое описание прилагаемых чертежей
Сопровождающие чертежи, которые включены для обеспечения дополнительного понимания изобретения и составляют часть этого описания, показывают варианты осуществления изобретения и совместно с описанием служат для объяснения принципов работы изобретения.
Заявленное изобретение поясняется следующими чертежами, на которых:
Фиг.1 показывает пример архитектуры компьютерной системы с установленной операционной системой и работающими в ней приложениями.
Фиг.2 показывает пример архитектуры компьютерной системы с установленной операционной системой, работающими в ней приложениями и системой защиты приложений.
Фиг.3 показывает пример виртуализации СОМ-подсистемы.
Фиг.4 показывает один из вариантов схемы перехватов и обработки запросов приложения.
Фиг.5 показывает состав виртуальных объектов в безопасной среде исполнения.
Фиг.6 показывает способ переадресации запросов за счет изменения имен портов.
Фиг.7 показывает функциональную схему системы защиты приложений.
Фиг.8 показывает блок-схему способа защиты приложений.
Фиг.9 показывает схему системы защиты приложений.
Фиг.10 показывает пример компьютерной системы общего назначения.
Описание предпочтительных вариантов осуществления
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется только в объеме приложенной формулы.
Система защиты компьютерной программы представляет собой устройство, предназначенное для безопасной работы приложения в программной среде, подверженной угрозам вирусного заражения и несанкционированного доступа.
Система защиты компьютерной программы осуществляет защиту файлов, процессов приложения от других приложений и служб за счет виртуализации приложения и за счет набора правил, по которым осуществляется взаимодействие приложения с компьютерной системой.
При отсутствии в компьютере системы защиты программа, исполняемая в режиме пользователя, остается уязвимой, например, для троянских вредоносных программ, которые перехватывают информацию ввода/вывода, данные из программных файлов, которые могут содержать конфиденциальную информацию, и отсылают их злоумышленнику.
На Фиг.1 показан пример архитектуры компьютерной системы с установленной операционной системой и работающими в ней приложениями 100, которые в совокупности составляют хостовую систему. Управление аппаратными средствами 120, в том числе процессором, памятью, осуществляется программно. Процессоры и операционные системы поддерживают несколько уровней привилегий исполнения программ. В частности, операционная система (ОС) Windows поддерживает два режима исполнения программ: режим ядра 110 и режим пользователя 115. Приложения запускаются в режиме пользователя. Это увеличивает степень защищенности всей системы от критических ошибок и защищает системные службы 130, драйверы 140 и другие процессы, необходимые для корректной работы компьютера. В системе пользователя также работают сервисы 150, например, службы безопасности, такие как антивирус, которые контролируют работу приложений и состояние системы в целом.
На Фиг.2 показан пример реализации системы защиты приложения в хостовой системе. Под хостовой системой в данной заявке следует понимать основную операционную систему, приложения, работающие в ней, и обрабатываемые ей файлы. В операционную систему встраивается драйвер защиты 230, который перехватывает все программные запросы к приложению 100 и от него, а также переправляет их в среду безопасного исполнения 220, которая работает в режиме пользователя. Безопасная среда исполнения (БСИ) 220 обрабатывает запрос в виртуальной системе, после чего отсылается ответ на запрос без воздействия на хостовую систему. Под хостовой системой понимается операционная система, работающие в данной операционной системе приложения и их объекты. Объектами хостовой системы и, в частности, объектами приложения являются каталоги и файлы, процессы, ключи реестра, библиотеки, область памяти и т.д.
БСИ 220 является сервисом операционной системы 150, работающим на уровне пользователя. Пример виртуализации СОМ-подсистемы показан на Фиг.3. Модель СОМ предоставляет возможность создания многократно используемых компонентов. Такие компоненты представляют собой исполняемые файлы или динамические библиотеки, которые созданы с возможностью их вызова из любой программы, поддерживающей модель СОМ. Примером такой программы является Internet Explorer или другой браузер. Через СОМ возможно получить доступ к запущенной копии приложения и управлять ею. При обращении к сервису СОМ 300 запрос переадресуется в виртуальную копию СОМ 301, созданную безопасной средой исполнения. Благодаря этому доступ к СОМ-объектам операционной системы и отдельных приложений осуществляется не напрямую. Виртуальный сервис СОМ не отличается от оригинального сервиса. При запросе от приложения он запускает СОМ-сервер 310, который возвращает приложению 100 требуемый объект. Виртуальный сервис соответственно создает виртуальный сервер 311 и возвращает виртуальный объект.
На Фиг.4 показана общая схема работы безопасной среды исполнения для защиты хостовой системы от заражения. Во время исполнения приложения 100 перехватываются следующие запросы:
- открытие процесса/потока;
- чтение памяти процесса;
- прямой доступ к памяти/диску;
- доступ к файловой системе, реестру и объектам ядра ОС 400;
- запрос на получение привилегий.
Приложение посылает запрос ОС 400, где его должен обработать обработчик 405 ОС. Указанные выше запросы перехватываются и не попадают в обработчик 405. Перехват осуществляется драйвером защиты 230, после чего запрос перенаправляется в безопасную среду исполнения 220, где выполняется виртуализация необходимых объектов системы. Запрос попадает к обработчику 410 безопасной среды исполнения, где процесс исполняется.
Ход выполнения программы зависит от уровня детализации виртуализации хостовой системы. Для эффективной работы без возникновения ошибок необходимо создать виртуальную копию файловой системы, реестра и некоторых служб ОС. На Фиг.5 показан состав виртуальных объектов, входящих в безопасную среду исполнения 220. В нее входят виртуализация сервисов пользователя 500 и СОМ подсистемы 505, виртуализация объектов ядра 510 (port, pipe, event, mutex, section, smaphore), виртуализация реестра 520 и виртуализация файловой системы 530. Виртуализация происходит без процесса инсталляции, перезагрузки системы, т.к. не требует изменений в ядре ОС.
Виртуализация подразумевает, что изменения, которые приложение совершает в системе, реально в системе не совершаются. Оригинальная информация в хостовой системе (файл или ключ реестра) не меняется. Под виртуализацией процесса понимается виртуализация его доступа к объектам ОС (в том числе к файлам и реестру). Виртуализация объекта предполагает создание его виртуальной копии, если это необходимо (может быть также предоставлен доступ к реальному объекту). Создание копии выполняется по решению обработчика безопасной среды исполнения. Реальный объект возвращается, как правило, при доступе только на чтение. Виртуальные файлы хранятся в специальной директории, а ключи реестра в специальной ветке реестра. Другие объекты ОС хранятся в оперативной памяти.
Драйвер защиты 230 перехватывает также локальные вызовы процедур (LPC). Это позволяет системе защиты приложения изолировать приложения за счет подмены имен портов. Пример подобного перехвата отражен на Фиг.6. Приложение отправляет запрос на создание объекта в библиотеку внедрения объектов OLE32.dll 600 (в ОС Windows). Данная библиотека вызывает функцию установления соединения с портом NtConnectPort("\\RPC_Control\epmapper"), где "\\RPC_Control\epmapper" - имя порта. Запрос перехватывается и заменяется имя порта. После подмены имени порта запрос поступает не в сервис удаленного вызова процедур RPCSS 610 (в ОС Windows), а в виртуальный сервис удаленного вызова процедур Virtual RPCSS 615. Виртуальный сервис 615 возвращает приложению интерфейс epmapper для дальнейшего взаимодействия с виртуальной системой.
Предыдущие примеры рассматривались в отношении взаимодействия приложения с ОС. Подобные примеры раскрывают возможность защиты ОС от вредоносного воздействия на нее со стороны приложений. Однако виртуализировать все приложения на компьютере чрезвычайно ресурсоемкая задача и это нецелесообразно для решения задачи безопасной работы с конфиденциальной информацией. Существует ограниченный набор приложений на компьютере, которые хранят, передают и принимают информацию, содержащую личные данные, которые пользователь пожелал бы скрыть. К подобной информации относятся личная переписка, персональные данные, секретные коды, пароли, номера кредитных карт и другие данные. Виртуализация приложений и их взаимодействие с другими приложениями и ОС по определенным правилам является необходимым слоем защиты в условиях постоянного роста риска информационной безопасности. Описываемое изобретение позволяет ограничить приложение от потенциально вредоносного программного обеспечения без потери функциональности, не требует дополнительного процесса инсталляции и перезагрузок.
Система защиты приложений, являясь средством виртуализации приложения, организует в первую очередь защиту хостовой системы от заражения через уязвимости и ошибки в запущенном приложении по следующим принципам:
- ограничение доступа к защищенным объектам - объектам, содержащим конфиденциальные данные пользователя;
- защита хостовой системы от изменений: создание и предоставление копии объекта приложению, запущенному в безопасной среде исполнения при попытке модификации объекта в хостовой системе;
- защита критичных процессов и служб, запущенных в хостовой системе, от доступа со стороны приложения, запущенного в безопасной среде исполнения с целью исключения утечки вредоносных процессов в хостовую систему.
В данном случае система защиты приложений представляет собой фильтр запросов, поступающих от приложения, запущенного в безопасной среде исполнения, к объектам хостовой системы.
С другой стороны, за счет дополнительных ограничений и интеграции со средством обнаружения угроз, система защиты приложений позволяет получить новый технический результат, заключающийся в фильтрации запросов, поступающих к приложению, исполняемому в безопасной среде исполнения, от процессов, запущенных в хостовой системе.
Реализация нового подхода к защите приложений дополнительно характеризуется следующими положительными факторами:
- защита от проникновения вредоносных программ в ходе работы приложения в сети Интернет в хостовую систему;
- очистка временных файлов, журналов посещений и других данных, хранящих историю работы приложения;
- защита пользовательских данных, обрабатываемых защищаемым приложением, от несанкционированного доступа процессов из хостовой системы;
- безопасный запуск программ из защищаемого приложения, которые автоматически будут запущены в безопасной среде исполнения.
На Фиг.7 показана работа песочницы для защиты приложения от вредоносной программы, которая не была обнаружена антивирусными средствами защиты хостовой системы. В качестве примера выбрано приложение браузер 700, как наиболее распространенное. Аналогично осуществляется защита для банковских приложений, средств быстрого обмена сообщениями, веб-агентов и других программ. Алгоритм кражи конфиденциальной информации, обрабатываемой программой, может содержать считывание памяти процесса и передача информации в сеть 711 вредоносной программой 710, установленной в хостовую систему. Когда некая программа обращается к браузеру, например, на чтение памяти одного из процессов, данный запрос перехватывается драйвером защиты 230. Среда безопасного исполнения 220 переправляет запрос и имя вызвавшей программы в средство проверки 210, которое должно определить характер запроса и установить вердикт - разрешить запрос, заблокировать запрос или перенаправить запрос в виртуальную систему. Средство проверки представляет собой экспертную систему правил 720, учитывающую запрос (действие), объект запроса, статистику запросов, атрибуты и поведение обращающейся к приложению программы. Простым примером подобных правил является исключение доступа в зависимости от объекта, отмеченного в примере угловыми скобками:
Если {доступ к<объекту ядра ОС>}, то {доступ блокировать}
В зависимости от вердикта запрос либо направляется обработчику ОС без модификации, либо блокируется, либо запрос направляется в виртуальную систему, созданную в безопасной среде исполнения. Обращения к процессам, данным и памяти приложений фильтруются в соответствии с правилами, что усиливает защиту доступа к конфиденциальным данным 730 приложения.
Алгоритм защиты приложения в виде блок-схемы показан на Фиг.8. Происходит перехват запроса 800 к приложению (памяти приложения, его процессам, файлам приложения) или от него. Запрос проверяется на соответствие правилам безопасности 810 и в результате проверки принимается решение 815 - запрос блокируется 825, если он не соответствует условиям безопасности, запрос разрешается 820 (посылается обработчику ОС), если не представляет угрозы, запрос виртуализируется, если запрос не соответствует первым двум условиям. Безопасная среда исполнения создает виртуальную систему 830, состав которой показан на Фиг.5. В виртуальной системе запрос обрабатывается виртуальным обработчиком 835 и подменяет память, процессы, файлы и другие объекты на виртуальные копии, которые возвращаются вызывающей программе. Производимые действия с виртуальной системой сохраняются 840 и далее по желанию могут быть применены 845 к хостовой системе. В случае применения изменений, объекты виртуальной системы переносятся 850 в хостовую. На этом цикл операций завершается 855 до следующего запроса, после чего цикл повторяется.
Итоговая схема системы защиты приложений представлена на Фиг.9. Драйвер защиты 230 перехватывает программные запросы, которые и являются входными параметрами системы. Перехваченные запросы поступают в безопасную среду исполнения, в которой происходит виртуализация защищаемых приложений и обработка запроса обработчиком безопасной среды исполнения 900. Примеры перехватываемых запросов описаны выше. Если запрос направлен к критическому объекту с ограниченным доступом, создается виртуализированный объект, возвращаемый программе, от которой поступил запрос. Как показано на Фиг.9, объектами виртуализации являются файловая система 530, ядро операционной системы 510, реестр 520 и сервисы пользователя 500. Помимо ограничений, накладываемых безопасной средой исполнения на объекты защищаемого приложения, в системе также присутствует средство обнаружения угроз 210. Оно необходимо для определения подозрительной активности программ, обращающихся к защищаемому приложению, и анализа активности защищаемого приложения, на случай, чтобы оно не осуществляло действий, способных нанести ущерб хостовой системе. Обнаружение происходит по обновляемым правилам, составляющим рейтинг опасности того или иного процесса. Получив запрос, безопасная среда исполнения направляет его в средство обнаружения угроз, которое возвращает вердикт о том, является ли данный запрос безопасным или может составлять угрозу для приложения и обрабатываемых данных. Более подробное описание работы упомянутого средства обнаружения угроз содержится в патенте номер US7530106 «System and method for security rating of computer processes». Если запрос адресован от безопасного процесса и не попадает под ограничения безопасной среды исполнения, то он без изменений возвращается обработчику операционной системы. Другим случаем является необходимость блокировать запрос, когда процесс, сделавший запрос, может быть вредоносным. Еще одна ситуация возникает, когда запрос попадает под ограничения безопасной среды исполнения, например, чтение памяти процесса. Для того чтобы защитить данные приложения и сохранить при этом функциональность, запрос направляется в обработчик безопасной среды исполнения, который осуществляет взаимодействие с виртуальными объектами.
Фиг.10 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 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, представленного на Фиг.10. В вычислительной сети могут присутствовать также и другие устройства, например, маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.
Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.
В заключение следует отметить, что приведенные в описании сведения являются только примерами, которые не ограничивают объем настоящего изобретения, описанного формулой. Специалисту в данной области становится понятным, что могут существовать и другие варианты осуществления настоящего изобретения, согласующиеся с сущностью и объемом настоящего изобретения.