KR101489244B1 - 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어방법 - Google Patents

가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어방법 Download PDF

Info

Publication number
KR101489244B1
KR101489244B1 KR20070136612A KR20070136612A KR101489244B1 KR 101489244 B1 KR101489244 B1 KR 101489244B1 KR 20070136612 A KR20070136612 A KR 20070136612A KR 20070136612 A KR20070136612 A KR 20070136612A KR 101489244 B1 KR101489244 B1 KR 101489244B1
Authority
KR
South Korea
Prior art keywords
application program
domain
virtual machine
machine monitor
trust level
Prior art date
Application number
KR20070136612A
Other languages
English (en)
Other versions
KR20090068833A (ko
Inventor
황주영
서상범
Original Assignee
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자 주식회사 filed Critical 삼성전자 주식회사
Priority to KR20070136612A priority Critical patent/KR101489244B1/ko
Priority to US12/127,901 priority patent/US8327438B2/en
Publication of KR20090068833A publication Critical patent/KR20090068833A/ko
Application granted granted Critical
Publication of KR101489244B1 publication Critical patent/KR101489244B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/02Digital computers in general; Data processing equipment in general manually operated with input through keyboard and computation using a built-in program, e.g. pocket calculators
    • G06F15/025Digital computers in general; Data processing equipment in general manually operated with input through keyboard and computation using a built-in program, e.g. pocket calculators adapted to a specific application
    • G06F15/0275Digital computers in general; Data processing equipment in general manually operated with input through keyboard and computation using a built-in program, e.g. pocket calculators adapted to a specific application for measuring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Abstract

가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어 방법이 제공된다. 본 발명의 실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템은, 신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인을 포함하는 복수의 도메인으로 구분하는 가상 머신 모니터(Virtual Machine Monitor) 및 적어도 하나의 루트 도메인에 존재하며 운영 체제에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 신뢰 수준 측정부를 포함하며, 가상 머신 모니터는 측정된 응용 프로그램의 신뢰 수준에 따라 복수의 도메인 중 어느 하나의 도메인에서 응용 프로그램을 실행시킨다.
또한, 본 발명의 실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법은, 가상 머신 모니터(Virtual Machine Monitor)를 이용하여 신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인을 포함하는 복수의 도메인으로 구분하는 단계와, 적어도 하나의 루트 도메인이 운영 체제에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 단계 및 측정된 응용 프로그램의 신뢰 수준에 따라 복수의 도메인 중 어느 하나의 도메인에서 응용 프로그램을 실행하는 단계를 포함한다.
Figure R1020070136612
운영 체제, 가상 머신 모니터, 도메인, 신뢰 수준

Description

가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어 방법{System and method for controlling program execution based on virtual machine monitor}
본 발명은 프로그램 실행 시스템 및 그 제어 방법에 관한 것으로, 보다 상세하게는 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어 방법에 관한 것이다.
일반적으로 안티 바이러스 소프트웨어(Anti-Virus software, AVS) 등의 보안 프로그램 또는 침입 탐지 시스템(Intrusion Detection System, IDS)은 운영 체제(Operating System, OS)와 응용 프로그램의 영역에 걸쳐 존재하여 운영 체제 및 응용 프로그램의 바이러스의 체크 및 치료를 수행하였다.
또는, 보안 프로그램 또는 침입 탐지 시스템은 가상 머신 모니터(Virtual Machine Monitor, VMM) 내에 존재하여 바이러스의 체크 및 치료를 수행하였다. 가상 머신 모니터는 하드웨어와 운영 체제 사이에 존재하며, 하나의 하드웨어를 가상화시켜 다수의 운영 체제가 동시에 동작할 수 있도록 한다. 이러한 가상 머신 모니터는 통상적으로 펌 웨어(Firm ware)를 대체하거나, 펌 웨어와 운영 체제 사이에서 동작하게 된다. 통상적인 하드웨어는 입출력 포트(IO port), 저장 장치 및 메모리 등이 포함된다. 따라서, 입출력 포트, 메모리 및 저장 장치로부터 모든 데이터가 가상 머신 모니터를 거쳐서 운영 체제 및 응용 프로그램으로 전달되고, 가상 머신 모니터 내의 보안 프로그램이 이러한 모든 데이터에 대하여 바이러스 검사를 수행하고, 감염 여부에 따라 감염된 데이터를 치료하였다.
그러나, 종래에 보안 프로그램 또는 침입 탐지 시스템과 응용 프로그램이 동일한 운영 체제 상에서 동작되는 경우에는 운영 체제 감염으로 인해 보안 프로그램이 감염되거나, 보안 프로그램이 바이러스 검사를 지나치는 경우가 있었다.
또한, 보안 프로그램 또는 침입 탐지 시스템은 가상 머신 모니터 내에 존재하는 경우에도 응용 프로그램의 악의성을 판단하는 수준이 두가지, 즉, 악의적인가 또는 호의적인가만을 판단하였고, 응용 프로그램에 대해 단기간의 모니터링을 통해 악의성을 판단하였다. 따라서, 응용 프로그램에 대한 악의성 판단에 있어서 정확성이 떨어져 잘못된 결과(False Alarm)가 발생하는 경우가 잦았다. 즉, 악의적인 응용 프로그램에 대해 호의적인 것으로 오인(False negative)함으로써, 악의적인 응용 프로그램이 시스템을 망가뜨리는 현상이 발생하였고, 반대로 호의적인 응용 프로그램에 대해 악의적인 것으로 오인(False positive)함으로써, 호의적인 프로그램을 사용할 수 없는 현상이 발생하였다.
더욱이, 최근에는 보안 프로그램 또는 침입 탐지 시스템이 동작하는지 확인하여 호의적인 응용 프로그램으로 속이는 악성 응용 프로그램도 출현하고 있는 실정이어서, 응용 프로그램에 대한 잘못된 판단을 줄이는 것이 필요하게 되었다.
본 발명은 상기한 문제점을 개선하기 위해 고안된 것으로, 본 발명이 해결하고자 하는 과제는 장기적인 모니터링을 통하여 응용 프로그램에 대한 신뢰 수준을 주기적으로 측정함으로써 시스템의 안정성을 향상시킬 수 있는 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어 방법을 제공하는 것이다.
본 발명의 기술적 과제는 이상에서 언급한 것들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제는 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 달성하기 위하여, 본 발명의 실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템은, 신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인을 포함하는 복수의 도메인으로 구분하는 가상 머신 모니터(Virtual Machine Monitor) 및 상기 적어도 하나의 루트 도메인에 존재하며 상기 운영 체제에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 신뢰 수준 측정부를 포함하며, 상기 가상 머신 모니터는 상기 측정된 응용 프로그램의 신뢰 수준에 따라 상기 복수의 도메인 중 어느 하나의 도메인에서 상기 응용 프로그램을 실행시킨다.
상기 과제를 달성하기 위하여, 본 발명의 실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법은, 가상 머신 모니터(Virtual Machine Monitor)를 이용하여 신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인을 포 함하는 복수의 도메인으로 구분하는 단계와, 상기 적어도 하나의 루트 도메인이 상기 운영 체제에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 단계 및 상기 측정된 응용 프로그램의 신뢰 수준에 따라 상기 복수의 도메인 중 어느 하나의 도메인에서 상기 응용 프로그램을 실행하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어 방법에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
첫째, 장기적인 모니터링을 통하여 응용 프로그램에 대한 신뢰 수준을 주기적으로 측정함으로써, 응용 프로그램의 악의성 판단에 대한 정확성을 향상시킬 수 있다.
둘째, 가상 머신 모니터를 이용하여 운영 체제를 복수의 도메인으로 구분하고 응용 프로그램의 신뢰 수준에 대응하는 도메인에서 실행함으로써 시스템의 안정성을 향상시킬 수 있다.
셋째, 각 도메인에 대해 신뢰 수준에 따라 시스템 리소스의 할당을 차별화하여 응용 프로그램을 실행시킴으로써 시스템 리소스의 사용을 효율적으로 할 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 당업자에게 명확하게 이해될 수 있 을 것이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 의하여 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어 방법을 설명하기 위한 도면들을 참고하여 본 발명에 대해 설명하도록 한다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
도 1은 본 발명의 일실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템의 구성을 개략적으로 나타내는 블록도이다.
본 발명의 일실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템은, 하드웨어 플랫폼(100)과, 가상 머신 모니터(200)와, 루트 도메인(300) 및 복수의 도메인(400)을 포함할 수 있다.
하드웨어 플랫폼(100)은 CPU, 메모리, 입출력 포트(IO port), 저장 장치 등을 포함하는 실제의 하드웨어 장치를 의미할 수 있다.
가상 머신 모니터(Virtual Machine Monitor)(200)는 하드웨어 플랫폼(100)과 운영 체제 사이에 존재하며, 하나의 하드웨어를 가상화(Virtualization)시켜 다수의 운영 체제가 동시에 동작할 수 있도록 할 수 있다. 여기서, 운영 체제는 Windows, Linux 등으로 하나의 운영 체제를 의미할 수도 있고, 복수의 운영 체제로 이루어질 수도 있다. 각 운영 체제는 가상화를 통해 실제 물리적으로 하나의 자원을 이용하는 것이 아니라 가상화 계층(Virtualization Layer)를 통해서 접근할 수 있다. 즉, 하나의 물리적인 시스템 리소스(Physical system resource)를 여러 개의 가상화 시스템 리소스(Virtual system resources)로 사용할 수 있다.
본 발명의 일실시예에 의하면, 가상 머신 모니터(200)는 신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인(300)을 포함하는 복수의 도메인(400)으로 구분할 수 있다.
루트 도메인(300)은 신뢰 수준 측정부(340)를 포함할 수 있다. 신뢰 수준 측정부(Trust Manager)(340)는 각 도메인(400)에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정하고 조정하는 역할을 할 수 있다. 이에 대해서는 자세히 후술하기로 한다.
또한, 루트 도메인(300)은 도메인 제어부(330)를 더 포함할 수 있다. 도메인 제어부(Domain Controller)(330)는 가상 머신 모니터(200)의 도메인 상태 감시부(Domain Status Monitor)(210)로부터 각 도메인(400)의 상태를 파악할 수 있다. 예를 들면, 도메인(400)의 상태에 이상이 있는 경우(Abnormal 상태)에는, 해당 도메인(400)에서 동작하는 모든 응용 프로그램의 신뢰 수준을 낮추도록 신뢰 수준 측정부(340)에 요구할 수 있다. 이 때에는 가상 머신 모니터(200)의 프로세스 이동 제어부(240)가 해당하는 도메인(400)의 프로세스 제어부(413 내지 453)를 통해 응용 프로그램의 프로세스를 이동시킬 수 있다.
또한, 복수의 도메인(400) 각각은 프로세스 제어부(413 내지 453)를 포함할 수 있다. 프로세스 제어부(413 내지 453)는 가상 머신 모니터(200)의 프로세스 이동 제어부(240)로부터 프로세스의 이동 요청을 받아 응용 프로그램의 프로세스를 동결(Freeze) 또는 복원(Restore)할 수 있다. 이에 대해서는 자세히 후술하기로 한다.
한편, 루트 도메인(300)은 가상 네트워크 관리자(Virtual Network Manager)(310) 및 가상 파일 시스템 관리자(Virtual File System Manager)(320)를 더 포함할 수 있고, 이에 대응하여 복수의 도메인(400)은 각각 가상 네트워크 클라이언트(Virtual Network Client)(411 내지 451) 및 가상 파일 시스템 클라이언트(Virtual File System Client)(412 내지 452)를 더 포함할 수 있다.
가상 파일 시스템 관리자(320)는 모든 도메인(400)에게 단일한 가상 파일 시스템의 볼륨 뷰(Volume view)를 제공함으로써, 응용 프로그램의 프로세스가 도메인(400)을 이동하여도 접근이 가능하게 할 수 있다. 즉, 루트 도메인(300)이 가상 파일 시스템의 볼륨을 관리하며, 각 도메인(400)의 가상 파일 시스템 클라이언트(412 내지 452)가 루트 도메인(300)을 통해서 볼륨에 접근할 수 있도록 할 수 있 다. 한편, 가상 파일 시스템 관리자(320)는 응용 프로그램의 실행 바이너리 코드의 수정 요청을 허용하지 않을 수 있다. 왜냐하면 실행 바이너리 코드가 수정될 경우 신뢰 수준을 믿을 수 없기 때문이다. 또한, 가상 머신 모니터(200)는 실행 바이너리 코드가 아닐 경우, 실행을 막도록 할 수 있다.
도 1에 도시된 바와 같이, 본 발명의 일실시예에 의하면, 가상 머신 모니터(200)는, 도메인 상태 감시부(210)와, 실행 패턴 분석부(220)와, 실행 영역 감시부(230)와, 프로세스 이동 제어부(240)와, 시스템 리소스 제어부(250) 및 시스템 리소스 정보 저장부(260)를 포함할 수 있다.
도메인 상태 감시부(210)(Domain Status Monitor)는 각 도메인의 상태를 모니터링하여 이상(Abnormal) 동작을 보이거나 오랜 시간 동작이 중지(Hang)되어 있는 도메인들이 있는 경우, 루트 도메인(300)의 도메인 제어부(330)로 그 상태를 전송할 수 있다.
실행 패턴 분석부(220)(Behavior Profiler)는 응용 프로그램의 런타임 실행(Runtime Behavior) 패턴을 분석하는 역할을 할 수 있다.
실행 영역 감시부(230)(Coverage Monitor)는 응용 프로그램을 구성하는 바이너리 코드의 전체 코드 중 실행 영역(Coverage)을 판단하는 역할을 할 수 있다.
프로세스 이동 제어부(240)는 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인으로 응용 프로그램의 프로세스 상태를 이동시키는 역할을 할 수 있다. 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인이란 도메인의 신뢰도 범위 내에 측정된 응용 프로그램의 신뢰 수준을 포함하는 도메인을 의미할 수 있다.
시스템 리소스 제어부(250)는 복수의 도메인(400) 각각에 대해 신뢰도에 따른 시스템 리소스(System Resource)를 할당할 수 있다. 또한, 시스템 리소스 제어부(250)는 측정된 응용 프로그램의 신뢰 수준에 따라 응용 프로그램이 시스템 리소스에 접근하는 것을 제어할 수 있다.
시스템 리소스 정보 저장부(260)는 복수의 도메인(400) 각각에 대한 신뢰도에 따른 시스템 리소스의 할당 정보를 저장할 수 있다.
상기와 같이 구성되는 본 발명의 일실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법을 설명하면 다음과 같다.
도 2는 본 발명의 일실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템에서 신뢰 수준에 따라 응용 프로그램을 실행하는 방법을 나타내는 순서도이다.
먼저, 시스템을 부팅하는 경우와 같이 초기화 단계에서, 가상 머신 모니터(200)를 이용하여 신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인(300)을 포함하는 복수의 도메인(400)으로 구분할 수 있다(S501).
도 3은 가상 머신 모니터가 운영 체제를 하나의 루트 도메인을 포함하는 복수의 도메인으로 구분한 예를 나타내는 블록도이다.
루트 도메인(300)은 최고의 신뢰 수준을 가지는 도메인을 의미하며, Ring 0의 시스템 사용 권한을 가질 수 있다. 즉, 루트 도메인(300)에서는 모든 하드웨어로의 접근이 허용되고, 가장 많은 시스템 리소스의 할당을 받을 수 있다. 또한, 루트 도메인(300)에는 모든 응용 프로그램의 실행에 필요한 바이너리 코드와 데이터 가 저장될 수 있다.
복수의 도메인(400)은 각각 신뢰 수준에 따라 구분된 도메인들을 의미할 수 있다. 예를 들면, 도 1에 도시된 바와 같이, 운영 체제를 루트 도메인(300)을 제외하고 N 개의 도메인(410 내지 450)으로 구분할 수 있다. 또한, 도메인 1(410) 내지 도메인 N(450)은 각각 다른 시스템 사용 권한, 예를 들면 Ring 1 내지 Ring N까지의 권한을 가질 수 있다.
이 때, 가상 머신 모니터(200)는 하드웨어 플랫폼(100)에 대한 가상 머신 인터페이스(Virtual machine interface)를 각 도메인에 제공하며, 각 도메인(400)들 간의 주소 공간(Address Space)을 분리하여 보호하는 기능을 할 수 있다. 각 도메인(400)들은 가상 머신 모니터(200)에 하드웨어 플랫폼(100)에 대한 접근 서비스를 호출함으로써(이를 Hypercall이라 한다.), 하드웨어 플랫폼(100)에 액세스할 수 있다. 이와 같이, 가상 머신 모니터(200)를 사용하기 때문에 각 도메인(400)에서 실행되는 응용 프로그램은 해당 도메인(400)에만 영향을 미치게 된다.
가상 머신 모니터(200)에 의해 운영 체제를 복수의 도메인(400)으로 구분을 한 후에, 가상 머신 모니터(200)의 시스템 리소스 제어부(250)는 복수의 도메인(400) 각각에 신뢰도에 따른 시스템 리소스를 할당할 수 있다(S502). 시스템 리소스 제어부(250)는 신뢰도에 따른 시스템 리소스 할당 정책을 결정하고, 이에 따라 각각의 도메인에 시스템 리소스를 할당할 수 있다.
예를 들면, 루트 도메인(300)에는 가장 높은 신뢰도를 가지고 Ring 0의 시스템 사용 권한을 가지므로, 이에 따라 가장 많은 시스템 리소스를 할당할 수 있다. 그리고, 도메인 1(410)부터 도메인 N(450)까지는 각각 Ring 1부터 Ring N까지 시스템 사용 권한을 가지므로, 각각 그에 따른 시스템 리소스를 할당할 수 있다. 여기서는, 도메인 1(410)로부터 도메인 N(450)으로 갈수록 신뢰도가 낮아진다고 가정한다. 이러한 시스템 리소스의 할당 정보는 시스템 리소스 정보 저장부(260)에 저장될 수 있다.
본 발명의 일실시예에 따르면, 가상 머신 모니터(200)가 신뢰도에 따라 구분된 복수의 도메인(400)에 응용 프로그램을 설치하기 때문에, 악의적인 응용 프로그램에 대해 호의적인 것으로 오인(False negative)하는 경우에도, 해당 응용 프로그램이 위치한 도메인(400)에 대해서만 영향을 미치고 다른 도메인(400)들에는 영향을 주지 않으므로 시스템의 안정성을 향상시킬 수 있다. 또한, 반대로 호의적인 응용 프로그램에 대해 악의적인 것으로 오인(False positive)하는 경우에도, 해당 응용 프로그램을 무조건 차단하지 않고 낮은 신뢰도를 가지는 도메인(400)에서 실행함으로써 추후 응용 프로그램의 신뢰 수준이 높아질 수 있는 기회가 있으므로, 악의성 판단에 대한 정확성을 향상시킬 수 있다.
도 4는 응용 프로그램을 다운로드 할 때에 응용 프로그램이 시스템에 설치되는 예를 나타내는 블록도이다.
도 4에 도시된 바와 같이, 인터넷 등을 통하여 응용 프로그램을 다운로드 할 때에는 보안 프로그램 또는 침입 감지 시스템(도시되지 않음)을 통해서 응용 프로그램의 인증 여부를 판단할 수 있다. 프로그램 인증 여부는 응용 프로그램을 다운로드 하는 시스템의 내부에 설치된 보안 프로그램 또는 침입 감지 시스템을 통해서 판단할 수 있으나, 시스템의 외부에 설치된 네트워크 침입 감지 시스템(Network Intrusion Detection System, NIDS)에 의해서도 판단될 수 있다.
응용 프로그램의 인증 여부를 판단한 결과 인증된 응용 프로그램인 경우에는, 루트 도메인(300)에 바로 설치될 수 있다. 반면에, 공지된 바이러스 등 악의성이 있는 소프트웨어(Malicious Software, Malware)로 판단되는 경우에는 다운로드를 차단할 수 있다. 마지막으로, 공지되지 않은 응용 프로그램으로 판단되는 경우에는, 복수의 도메인(400) 중 소정의 신뢰도를 가지는 도메인, 예를 들면, Ring k의 시스템 사용 권한을 가지는 도메인 k(430)에 다운로드 할 수 있다. 이 때, 다운로드 되는 도메인 k(430)는 시스템의 정책에 따라 결정될 수 있다. 다운로드가 완료된 응용 프로그램은 도메인 k(430)에서 실행될 수 있다. 응용 프로그램을 다운로드 할 때에 시스템에 설치되는 방법은 상술한 바와 국한되지 않으며, 당업자에 의해 변경 가능하다.
다시 도 2를 참조하면, 응용 프로그램이 설치된 후에는 루트 도메인(300)의 신뢰 수준 측정부(340)는 도메인 k(430)에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정할 수 있다(S503). 또한, 신뢰 수준을 측정한 결과를 바탕으로 응용 프로그램의 신뢰 수준을 조정할 수 있다. 즉, 응용 프로그램의 신뢰 수준을 측정한 결과, 바로 이전의 측정 때보다 특별한 이상(Abnormal) 행동을 보이지 않는 경우에는 신뢰 수준을 증가(Promotion)시키고, 특별한 이상 행동을 보이는 경우에는 신뢰 수준을 감소(Demotion)시킬 수 있다.
바람직하게는, 응용 프로그램의 신뢰 수준은 가상 머신 모니터(200)의 실행 패턴 감시부가 응용 프로그램의 런타임 실행(Runtime Behavior) 패턴을 분석한 결과를 전송 받아 측정할 수 있다. 즉, 응용 프로그램이 실행되는 동안 시스템에 요청하는 시스템 콜(System call)들을 모니터링하여 시스템 리소스에 접근하는 패턴 등을 분석하여 악의성이 있는 소프트웨어인지 판단하여 신뢰 수준을 측정할 수 있다. 신뢰 수준을 측정한 결과, 호의성이 있는 소프트웨어로 판단되는 경우에는 신뢰 수준을 증가시키고, 악의성이 있는 소프트웨어로 판단되는 경우에는 신뢰 수준을 감소시킬 수 있다.
한편, 신뢰 수준의 증가 또는 감소 정도를 결정함에 있어서, 가상 머신 모니터(200)의 실행 영역 감시부(230)가 응용 프로그램을 구성하는 바이너리 코드의 전체 코드 중 실행 영역을 판단한 결과를 참조할 수 있다. 즉, 응용 프로그램의 바이너리 코드의 전체가 실행되는 경우에는 신뢰 수준의 증가 비율을 높게 할 수 있다. 반면에, 전체 코드 중 실행 영역이 적은 경우에는 아직 호의성이 있는 프로그램인지 분명하지 않으므로 그 증가 비율을 낮게 할 수 있다.
또한, 신뢰 수준의 증가 또는 감소 정도를 결정함에 있어서, 응용 프로그램이 실행된 시간을 참조할 수 있다. 즉, 응용 프로그램의 실행 시간이 길수록 신뢰 수준의 측정 결과가 정확하다고 볼 수 있으므로 신뢰 수준의 증가 비율을 높게 할 수 있다.
상술한 바와 같이, 응용 프로그램의 신뢰 수준이 측정하고 난 후, 측정된 신뢰 수준에 변화가 있는 경우에는, 응용 프로그램의 프로세스를 측정된 신뢰 수준에 해당하는 신뢰도를 가지는 도메인(400)으로 이동시킬 수 있다. 먼저, 신뢰 수준 측 정부(340)는 응용 프로그램이 실행되는 도메인(400)을 판단하고, 이를 기준으로 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인(400)을 결정할 수 있다(S504). 그리고, 가상 머신 모니터(200)의 프로세스 이동 제어부(240)에 응용 프로그램의 프로세스를 이동시킬 것을 요청할 수 있다(S505).
도 5는 신뢰 수준 측정부에서 응용 프로그램의 신뢰 수준을 주기적으로 측정하여 신뢰 수준을 조정하는 예를 나타내는 블록도이다.
도 5에 도시된 바와 같이, 다운로드가 완료된 응용 프로그램은 최초(t0)에 도메인 k(430)에서 실행될 수 있다. 일정 시간이 지난 후, 신뢰 수준 측정부(340)에서 응용 프로그램의 신뢰 수준을 측정할 수 있다. 상술한 바와 같이, 응용 프로그램의 런타임 실행 패턴을 분석하여 신뢰 수준을 측정할 수 있는데, 이전 측정 때보다 특별한 이상 행동을 보이지 않는 경우에는 신뢰 수준을 증가시켜 높게 조정할 수 있다.
주기적으로 응용 프로그램의 신뢰 수준을 측정한 결과, 어느 시점(t1)에서 응용 프로그램의 신뢰 수준이 도메인 k(430)의 신뢰도의 최대값(Ak -1)을 넘게 되면, 신뢰 수준 측정부(340)는 가상 머신 모니터(200)의 프로세스 이동 제어부(240)로 응용 프로그램의 프로세스를 도메인 k-1(420)로 이동시킬 것을 요청할 수 있다. 마찬가지로, 어느 시점(t2)에서 응용 프로그램의 신뢰 수준이 도메인 k-1(420)의 신뢰도의 최대값(Ak -2)을 넘게 되면, 신뢰 수준 측정부(340)는 프로세스 이동 제어 부(240)로 응용 프로그램의 프로세스를 도메인 k-2로 이동시킬 것을 요청할 수 있다.
만약, 어느 시점(t3)에서 응용 프로그램의 신뢰 수준을 측정한 결과, 이전 단계(t2) 이후로 악의성을 보인 경우에는 응용 프로그램의 신뢰 수준을 감소시킬 수 있다. 예를 들어, 도메인 k(430)의 신뢰도의 최대값(Ak) 이하로 신뢰 수준이 감소되는 경우에는, 신뢰 수준 측정부(340)는 프로세스 이동 제어부(240)로 응용 프로그램의 프로세스를 도메인 k+1(440)로 이동시킬 것을 요청할 수 있다.
다시 도 2를 참조하면, 프로세스 이동 제어부(240)로 응용 프로그램의 프로세스 상태를 이동하라는 요청이 있는 경우(S505), 가상 머신 모니터(200)의 프로세스 이동 제어부(240)는 응용 프로그램의 신뢰 수준에 대응하는 도메인에 응용 프로그램의 프로세스를 이동할 수 있다(S506).
도 6는 신뢰 수준 측정부에서 응용 프로그램의 신뢰 수준에 따라 응용 프로그램의 프로세스를 이동시키는 예를 나타내는 블록도이다.
예를 들어, 응용 프로그램의 신뢰 수준을 측정하고 조정한 결과, 응용 프로그램의 프로세스를 도메인 k(430)로부터 도메인 k+1(440)로 이동시킨다고 가정한다.
먼저, 루트 도메인(300)의 신뢰 수준 측정부(340)는 가상 머신 모니터(200)의 프로세스 이동 제어부(240)로 응용 프로그램의 프로세스를 이동시킬 것을 요청할 수 있다(S601).
요청을 받은 프로세스 이동 제어부(240)는 현재 응용 프로그램이 실행되는 도메인 k(430)의 프로세스 제어부(413 내지 453)로 응용 프로그램의 프로세스 상태에 대한 체크포인트(Checkpoint) 요청을 할 수 있다(S602). 체크포인트란 실행 중에 정지되거나 중단된 프로그램을 다시 시작할 수 있도록 프로그램의 실행 상태를 검사하고 기록을 유지하는 것을 의미할 수 있다. 즉, 여기에서 체크포인트란 응용 프로그램의 프로세스 상태를 이동하기 위해 프로세스 상태를 저장하는 것으로 이해할 수 있다.
체크포인트 요청을 받은 도메인 k(430)의 프로세스 제어부(413 내지 453)는 응용 프로그램의 프로세스 상태를 저장할 메모리 객체를 할당하고(S603), 메모리 객체에 프로세스 상태를 저장(체크포인트)할 수 있다(S604). 그리고, 도메인 k(430)의 프로세스 제어부(413 내지 453)는 프로세스 이동 제어부(240)로 체크포인트 완료 통지를 할 수 있다(S605). 그리고, 프로세스 이동 제어부(240)는 도메인 k(430)에서 할당된 메모리 내에 저장된 응용 프로그램의 프로세스 상태를 동결(Freeze)시킬 수 있다(S606). 이는 응용 프로그램의 프로세스 상태를 동결시켜 프로세스 상태가 이동 중에 변경되는 것을 방지하기 위한 것으로, 예를 들면, 메모리를 읽기 모드(Read only mode)로 설정할 수 있다. 그리고, 프로세스 이동 제어부(240)는 복수의 도메인(400)에서 메모리를 공유할 수 있도록 설정하고(S607), 이동할 도메인 k+1(440)에 메모리에 대한 통지를 할 수 있다(S608). 통지를 받은 도메인 k+1(440)에서는 메모리로부터 응용 프로그램의 프로세스 상태를 복원(Restore)하고(S609), 프로세스 이동 제어부(240)로 복원 완료 통지를 할 수 있 다(S610). 도메인 k+1(440)로부터 복원 완료 통지를 받은 프로세스 이동 제어부(240)는 도메인 k(430)로 복원 완료 통지를 하고(S611), 도에인 k+1은 할당된 메모리를 해제할 수 있다(S612). 마지막으로, 프로세스 이동 제어부(240)는 신뢰 수준 측정부(340)에 응용 프로그램의 프로세스의 이동이 완료되었음을 통지할 수 있다(S613).
한편, 프로세스 이동 제어부(240)는 응용 프로그램의 프로세스 상태를 휘발성 상태와 비휘발성 상태로 구분하고 휘발성 상태의 프로세스 상태를 이동시킬 수 있다. 휘발성의 프로세스 상태는 복수의 도메인(400) 각각에 존재하는 것으로서 응용 프로그램의 신뢰 수준에 따라 이동을 할 수 있는 상태를 의미하며, 예를 들면, CPU 레지스터 상태, 메모리 상태(Data, Stack, Heap 등), 타 프로세스와의 통신 채널(IPC), 네트워크 커넥션, 입출력 디바이스 상태 등일 수 있다. 반면에, 비휘발성의 프로세스 상태는 루트 도메인(300)에서 서비스를 받는 것으로서 응용 프로그램의 신뢰 수준에 무관하게 이동을 할 수 없는 것으로서, 바이너리 코드 또는 응용 프로그램이 생성하거나 참조하는 데이터 파일 등일 수 있다.
다시 도 2을 참조하면, 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인에서 응용 프로그램을 실행시킬 때에(S507), 가상 머신 모니터(200)의 시스템 리소스 제어부(250)는 응용 프로그램의 신뢰 수준에 따라 응용 프로그램이 시스템 리소스에 접근하는 것을 제어할 수 있다(S508).
상술한 바와 같이, 본 발명의 일실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템에 의하면, 장기적인 모니터링을 통하여 응용 프로그램에 대한 신뢰 수준을 주기적으로 측정함으로써, 응용 프로그램의 악의성 판단에 대한 정확성을 향상시킬 수 있다. 또한, 가상 머신 모니터(200)를 이용하여 운영 체제를 복수의 도메인(400)으로 구분하고 응용 프로그램의 신뢰 수준에 대응하는 도메인에서 실행함으로써 시스템의 안정성을 향상시킬 수 있다. 또한, 각 도메인에 대해 신뢰 수준에 따라 시스템 리소스의 할당을 차별화하여 응용 프로그램을 실행시킴으로써 시스템 리소스의 사용을 효율적으로 할 수 있다.
이 때, 본 실시예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
도 1은 본 발명의 일실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템의 구성을 개략적으로 나타내는 블록도이다.
도 2는 본 발명의 일실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템에서 신뢰 수준에 따라 응용 프로그램을 실행하는 방법을 나타내는 순서도이다.
도 3은 가상 머신 모니터가 운영 체제를 하나의 루트 도메인을 포함하는 복수의 도메인으로 구분한 예를 나타내는 블록도이다.
도 4는 응용 프로그램을 다운로드 할 때에 응용 프로그램이 시스템에 설치되는 예를 나타내는 블록도이다.
도 5는 신뢰 수준 측정부에서 응용 프로그램의 신뢰 수준을 주기적으로 측정하여 신뢰 수준을 조정하는 예를 나타내는 블록도이다.
도 6은 신뢰 수준 측정부에서 응용 프로그램의 신뢰 수준에 따라 응용 프로그램의 프로세스를 이동시키는 예를 나타내는 블록도이다.
<도면의 주요 부분에 대한 부호의 설명>
100: 하드웨어 플랫폼
200: 가상 머신 모니터
210: 도메인 상태 감시부 220: 실행 패턴 분석부
230: 실행 영역 감시부 240: 프로세스 이동 제어부
250: 시스템 리소스 제어부 260: 시스템 리소스 정보 저장부
300: 루트 도메인
310: 가상 네트워크 관리자 320: 가상 파일 시스템 관리자
330: 도메인 제어부 340: 신뢰 수준 측정부
400: 복수의 도메인
410: 도메인 1
411: 가상 네트워크 클라이언트
412: 가상 파일 시스템 클라이언트
413: 프로세스 제어부

Claims (19)

  1. 하드웨어 프로세스를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템에 있어서,
    신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인을 포함하는 복수의 도메인으로 구분하는 가상 머신 모니터(Virtual Machine Monitor); 및
    상기 적어도 하나의 루트 도메인에 존재하며 상기 운영 체제에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 신뢰 수준 측정부를 포함하며,
    상기 가상 머신 모니터는 상기 측정된 응용 프로그램의 신뢰 수준에 따라 상기 복수의 도메인 중 어느 하나의 도메인에서 상기 응용 프로그램을 실행시키며,
    상기 가상 머신 모니터 및 상기 신뢰 수준 측정부는 상기 하드웨어 프로세스에 의해 수행되는, 가상 머신 모니터 기반의 프로그램 실행 시스템.
  2. 제 1 항에 있어서,
    상기 가상 머신 모니터는,
    상기 복수의 도메인 각각에 상기 신뢰도에 따른 시스템 리소스(System Resource)를 할당하는 시스템 리소스 제어부를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템.
  3. 제 2 항에 있어서,
    상기 가상 머신 모니터는,
    상기 신뢰도에 따른 시스템 리소스의 할당 정보를 저장하는 시스템 리소스 정보 저장부를 더 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템.
  4. 제 1 항에 있어서,
    상기 가상 머신 모니터는,
    상기 응용 프로그램의 런타임 실행(Runtime Behavior) 패턴을 분석하는 실행 패턴 분석부를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템.
  5. 제 4 항에 있어서,
    상기 가상 머신 모니터는,
    상기 응용 프로그램을 구성하는 바이너리 코드의 전체 코드 중 실행 영역(Coverage)을 판단하는 실행 영역 감시부를 더 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템.
  6. 제 1 항에 있어서,
    상기 신뢰 수준 측정부는,
    상기 응용 프로그램이 실행되는 도메인을 판단하고, 상기 응용 프로그램이 실행되는 도메인을 기준으로 상기 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인을 결정하는 가상 머신 모니터 기반의 프로그램 실행 시스템.
  7. 제 1 항에 있어서,
    상기 가상 머신 모니터는,
    상기 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인으로 상기 응용 프로그램의 프로세스 상태를 이동시키는 프로세스 이동 제어부를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템.
  8. 제 7 항에 있어서,
    상기 프로세스 이동 제어부는,
    상기 응용 프로그램의 프로세스 상태를 휘발성 상태와 비휘발성 상태로 구분하고 상기 휘발성 상태의 프로세스 상태를 이동시키는 가상 머신 모니터 기반의 프로그램 실행 시스템.
  9. 제 7 항에 있어서,
    상기 프로세스 이동 제어부는,
    상기 응용 프로그램이 실행되는 도메인에서 저장된 상기 응용 프로그램의 프로세스 상태를 상기 응용 프로그램의 프로세스 상태를 동결(Freeze)하여 상기 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인에 제공하여 상기 응용 프로그램의 프로세스 상태를 복원(Restore)시키는 가상 머신 모니터 기반의 프로그램 실행 시스템.
  10. 제 2 항에 있어서,
    상기 시스템 리소스 제어부는,
    상기 측정된 응용 프로그램의 신뢰 수준에 따라 상기 응용 프로그램이 시스템 리소스에 접근하는 것을 제어하는 가상 머신 모니터 기반의 프로그램 실행 시스템.
  11. 가상 머신 모니터(Virtual Machine Monitor)를 이용하여 신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인을 포함하는 복수의 도메인으로 구분하는 단계;
    상기 적어도 하나의 루트 도메인이 상기 운영 체제에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 단계;
    상기 측정된 응용 프로그램의 신뢰 수준에 따라 상기 복수의 도메인 중 어느 하나의 도메인에서 상기 응용 프로그램을 실행하는 단계를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
  12. 제 11 항에 있어서,
    상기 복수의 도메인으로 구분하는 단계는,
    상기 복수의 도메인 각각에 상기 신뢰도에 따른 시스템 리소스(System Resource)를 할당하는 단계를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
  13. 제 12 항에 있어서,
    상기 복수의 도메인으로 구분하는 단계는,
    상기 신뢰도에 따른 시스템 리소스의 할당 정보를 저장하는 단계를 더 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
  14. 제 11 항에 있어서,
    상기 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 단계는,
    상기 응용 프로그램의 런타임 실행(Runtime Behavior) 패턴을 분석하는 단계를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
  15. 제 14 항에 있어서,
    상기 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 단계는,
    상기 응용 프로그램을 구성하는 바이너리 코드의 전체 코드 중 실행 영역(Coverage)을 판단하는 단계를 더 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
  16. 제 11 항에 있어서,
    상기 응용 프로그램을 실행하는 단계는,
    상기 응용 프로그램이 실행되는 도메인을 판단하는 단계;
    상기 응용 프로그램이 실행되는 도메인을 기준으로 상기 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인을 결정하는 단계; 및
    상기 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인으로 상기 응용 프로그램의 프로세스 상태를 이동시키는 단계를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
  17. 제 16 항에 있어서,
    상기 응용 프로그램의 프로세스 상태를 이동시키는 단계는,
    상기 응용 프로그램의 프로세스 상태를 휘발성 상태와 비휘발성 상태로 구분하고 상기 휘발성 상태의 프로세스 상태를 이동하는 단계를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
  18. 제 16 항에 있어서,
    상기 응용 프로그램의 프로세스 상태를 이동시키는 단계는,
    상기 응용 프로그램이 실행되는 도메인에서 상기 응용 프로그램의 프로세스 상태를 저장하는 단계;
    상기 가상 머신 모니터에서 상기 응용 프로그램의 프로세스 상태를 동결(Freeze)하는 단계; 및
    상기 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인에서 상기 응용 프로그램의 프로세스 상태를 복원(Restore)하는 단계를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
  19. 제 16 항에 있어서,
    상기 응용 프로그램을 실행하는 단계는,
    상기 측정된 응용 프로그램의 신뢰 수준에 따라 상기 응용 프로그램이 시스템 리소스에 접근하는 것을 제어하는 단계를 더 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
KR20070136612A 2007-12-24 2007-12-24 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어방법 KR101489244B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR20070136612A KR101489244B1 (ko) 2007-12-24 2007-12-24 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어방법
US12/127,901 US8327438B2 (en) 2007-12-24 2008-05-28 System for executing program using virtual machine monitor and method of controlling the system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20070136612A KR101489244B1 (ko) 2007-12-24 2007-12-24 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어방법

Publications (2)

Publication Number Publication Date
KR20090068833A KR20090068833A (ko) 2009-06-29
KR101489244B1 true KR101489244B1 (ko) 2015-02-04

Family

ID=40790327

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20070136612A KR101489244B1 (ko) 2007-12-24 2007-12-24 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어방법

Country Status (2)

Country Link
US (1) US8327438B2 (ko)
KR (1) KR101489244B1 (ko)

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719936B2 (en) * 2008-02-01 2014-05-06 Northeastern University VMM-based intrusion detection system
JP5125595B2 (ja) * 2008-02-22 2013-01-23 横河電機株式会社 記録媒体、インストール方法及びコンピュータプログラム
US9779234B2 (en) * 2008-06-18 2017-10-03 Symantec Corporation Software reputation establishment and monitoring system and method
US8484739B1 (en) * 2008-12-15 2013-07-09 Symantec Corporation Techniques for securely performing reputation based analysis using virtualization
FR2948789B1 (fr) * 2009-07-28 2016-12-09 Airbus Composant logiciel et dispositif pour le traitement automatise de donnees multi-usages, mettant en oeuvre des fonctions ayant besoin de differents niveaux de surete ou limites de responsabilite
KR101640769B1 (ko) * 2009-11-06 2016-07-19 삼성전자주식회사 가상화 시스템 및 그것의 명령어 실행 방법
KR101651202B1 (ko) 2009-12-21 2016-08-26 삼성전자주식회사 가상화 장치 및 가상화 장치의 동작 방법
US8850572B2 (en) * 2010-01-15 2014-09-30 Apple Inc. Methods for handling a file associated with a program in a restricted program environment
KR20110094764A (ko) * 2010-02-17 2011-08-24 삼성전자주식회사 트랜잭션 기반 입출력 인터페이스를 제공하는 가상화 장치 및 방법
US20110219373A1 (en) * 2010-03-02 2011-09-08 Electronics And Telecommunications Research Institute Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
US9129062B1 (en) * 2010-05-20 2015-09-08 Vmware, Inc. Intercepting subroutine return in unmodified binaries
US8972980B2 (en) 2010-05-28 2015-03-03 Bromium, Inc. Automated provisioning of secure virtual execution environment using virtual machine templates based on requested activity
US9116733B2 (en) 2010-05-28 2015-08-25 Bromium, Inc. Automated provisioning of secure virtual execution environment using virtual machine templates based on requested activity
US9386021B1 (en) 2011-05-25 2016-07-05 Bromium, Inc. Restricting network access to untrusted virtual machines
US9767274B2 (en) 2011-11-22 2017-09-19 Bromium, Inc. Approaches for efficient physical to virtual disk conversion
US10310696B1 (en) 2010-05-28 2019-06-04 Bromium, Inc. Supporting a consistent user interface within a virtualized environment
US9135038B1 (en) 2010-05-28 2015-09-15 Bromium, Inc. Mapping free memory pages maintained by a guest operating system to a shared zero page within a machine frame
US10095530B1 (en) 2010-05-28 2018-10-09 Bromium, Inc. Transferring control of potentially malicious bit sets to secure micro-virtual machine
US9104837B1 (en) 2012-06-18 2015-08-11 Bromium, Inc. Exposing subset of host file systems to restricted virtual machines based on upon performing user-initiated actions against host files
US9148428B1 (en) 2011-05-25 2015-09-29 Bromium, Inc. Seamless management of untrusted data using virtual machines
US9558051B1 (en) 2010-05-28 2017-01-31 Bormium, Inc. Inter-process communication router within a virtualized environment
US8752047B2 (en) 2010-05-28 2014-06-10 Bromium, Inc. Automated management of virtual machines to process untrusted data based on client policy information
US9239909B2 (en) 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
AU2012236739A1 (en) * 2011-03-28 2013-10-03 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US8966624B2 (en) 2011-03-31 2015-02-24 Mcafee, Inc. System and method for securing an input/output path of an application against malware with a below-operating system security agent
US9032525B2 (en) 2011-03-29 2015-05-12 Mcafee, Inc. System and method for below-operating system trapping of driver filter attachment
US9317690B2 (en) 2011-03-28 2016-04-19 Mcafee, Inc. System and method for firmware based anti-malware security
US8959638B2 (en) 2011-03-29 2015-02-17 Mcafee, Inc. System and method for below-operating system trapping and securing of interdriver communication
US9087199B2 (en) 2011-03-31 2015-07-21 Mcafee, Inc. System and method for providing a secured operating system execution environment
US9038176B2 (en) 2011-03-31 2015-05-19 Mcafee, Inc. System and method for below-operating system trapping and securing loading of code into memory
US8966629B2 (en) 2011-03-31 2015-02-24 Mcafee, Inc. System and method for below-operating system trapping of driver loading and unloading
US8925089B2 (en) 2011-03-29 2014-12-30 Mcafee, Inc. System and method for below-operating system modification of malicious code on an electronic device
US9262246B2 (en) 2011-03-31 2016-02-16 Mcafee, Inc. System and method for securing memory and storage of an electronic device with a below-operating system security agent
US8863283B2 (en) 2011-03-31 2014-10-14 Mcafee, Inc. System and method for securing access to system calls
US8813227B2 (en) 2011-03-29 2014-08-19 Mcafee, Inc. System and method for below-operating system regulation and control of self-modifying code
US10846396B1 (en) 2011-05-25 2020-11-24 Hewlett-Packard Development Company, L.P. Downloading data in a dedicated virtual machine
US8839245B1 (en) 2012-06-18 2014-09-16 Bromium, Inc. Transferring files using a virtualized application
US9921860B1 (en) 2011-05-25 2018-03-20 Bromium, Inc. Isolation of applications within a virtual machine
US10546118B1 (en) 2011-05-25 2020-01-28 Hewlett-Packard Development Company, L.P. Using a profile to provide selective access to resources in performing file operations
US9213829B2 (en) 2011-07-12 2015-12-15 Hewlett-Packard Development Company, L.P. Computing device including a port and a guest domain
US9245108B1 (en) 2012-03-13 2016-01-26 Bromium, Inc. Dynamic adjustment of the file format to identify untrusted files
WO2013140524A1 (ja) * 2012-03-19 2013-09-26 富士通株式会社 プログラム、管理サーバおよびパッチスケジューリング方法
US11023088B2 (en) 2012-06-18 2021-06-01 Hewlett-Packard Development Company, L.P. Composing the display of a virtualized web browser
US9734131B1 (en) 2012-06-18 2017-08-15 Bromium, Inc. Synchronizing history data across a virtualized web browser
US10095662B1 (en) 2012-06-18 2018-10-09 Bromium, Inc. Synchronizing resources of a virtualized browser
US9727534B1 (en) 2012-06-18 2017-08-08 Bromium, Inc. Synchronizing cookie data using a virtualized browser
US9384026B1 (en) 2012-06-18 2016-07-05 Bromium, Inc. Sharing and injecting cookies into virtual machines for retrieving requested web pages
US9201850B1 (en) 2012-06-18 2015-12-01 Bromium, Inc. Composing the display of a virtualized web browser
US9122780B2 (en) 2012-06-20 2015-09-01 Intel Corporation Monitoring resource usage by a virtual machine
US9195838B2 (en) * 2012-07-02 2015-11-24 At&T Intellectual Property I, L.P. Method and apparatus for providing provably secure user input/output
US9781118B2 (en) * 2013-03-14 2017-10-03 Intel Corporation Differentiated containerization and execution of web content based on trust level and other attributes
US9292328B2 (en) 2013-05-24 2016-03-22 Bromium, Inc. Management of supervisor mode execution protection (SMEP) by a hypervisor
US10599565B2 (en) 2013-12-24 2020-03-24 Hewlett-Packard Development Company, L.P. Hypervisor managing memory addressed above four gigabytes
US10430614B2 (en) 2014-01-31 2019-10-01 Bromium, Inc. Automatic initiation of execution analysis
US9680873B1 (en) 2014-06-30 2017-06-13 Bromium, Inc. Trusted network detection
US10311122B1 (en) 2014-08-22 2019-06-04 Bromium, Inc. On-demand unprotected mode access
US9594591B2 (en) 2014-09-26 2017-03-14 International Business Machines Corporation Dynamic relocation of applications in a cloud application service model
US9928094B2 (en) 2014-11-25 2018-03-27 Microsoft Technology Licensing, Llc Hardware accelerated virtual context switching
US9703961B2 (en) 2015-06-05 2017-07-11 Accenture Global Services Limited Process risk classification
US9798877B2 (en) * 2015-06-04 2017-10-24 Accenture Global Services Limited Security risk-based resource allocation
US9767285B2 (en) 2015-06-04 2017-09-19 Accenture Global Services Limited Process categorization using crowdsourcing
US20160363919A1 (en) * 2015-06-09 2016-12-15 Fisher Controls International Llc Custom application environment in a process control device
US9852295B2 (en) * 2015-07-14 2017-12-26 Bitdefender IPR Management Ltd. Computer security systems and methods using asynchronous introspection exceptions
US9823997B2 (en) * 2015-08-11 2017-11-21 Bank Of America Corporation Production resiliency testing system
US10848502B2 (en) * 2015-12-01 2020-11-24 Webroot Inc. Detection and prevention of hostile network traffic flow appropriation and validation of firmware updates
US10223247B2 (en) * 2016-07-05 2019-03-05 Red Hat, Inc. Generating pseudorandom test items for software testing of an application under test (AUT)
CN108182070B (zh) * 2016-12-08 2020-11-24 北京京东尚科信息技术有限公司 定制安卓系统rom的方法、装置及终端设备
CN109257399B (zh) * 2017-07-13 2023-01-24 上海擎感智能科技有限公司 云平台应用程序管理方法及管理平台、存储介质
US10885193B2 (en) 2017-12-07 2021-01-05 Microsoft Technology Licensing, Llc Method and system for persisting untrusted files
US11074323B2 (en) 2017-12-07 2021-07-27 Microsoft Technology Licensing, Llc Method and system for persisting files
US20190347420A1 (en) * 2018-05-11 2019-11-14 Microsoft Technology Licensing, Llc Method and system for installing and running untrusted applications
JP2019212244A (ja) * 2018-06-08 2019-12-12 富士通株式会社 通知制御プログラム、通知制御方法および情報処理装置
US20200364354A1 (en) * 2019-05-17 2020-11-19 Microsoft Technology Licensing, Llc Mitigation of ransomware in integrated, isolated applications

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006022161A1 (ja) 2004-08-25 2006-03-02 Nec Corporation 情報通信装置及びプログラム実行環境制御方法
US20070043896A1 (en) 2005-08-17 2007-02-22 Burzin Daruwala Virtualized measurement agent
US20070106986A1 (en) 2005-10-25 2007-05-10 Worley William S Jr Secure virtual-machine monitor

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002073379A2 (en) 2001-03-09 2002-09-19 Koninklijke Philips Electronics N.V. System with a server for verifying new components
JP2003256234A (ja) 2002-03-05 2003-09-10 Communication Research Laboratory 抗脆弱性サーバ装置及びソフトウェア
US7774620B1 (en) * 2004-05-27 2010-08-10 Microsoft Corporation Executing applications at appropriate trust levels
KR20060050768A (ko) 2004-10-01 2006-05-19 마이크로소프트 코포레이션 액세스 인가 api
KR101093066B1 (ko) 2005-02-21 2011-12-13 삼성전자주식회사 패킷 보안방법 및 그 장치
US7581209B2 (en) * 2005-02-28 2009-08-25 Microsoft Corporation Method for determining code coverage
US8201244B2 (en) * 2006-09-19 2012-06-12 Microsoft Corporation Automated malware signature generation
US20080234998A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Coordinating instances of a thread or other service in emulation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006022161A1 (ja) 2004-08-25 2006-03-02 Nec Corporation 情報通信装置及びプログラム実行環境制御方法
US20070043896A1 (en) 2005-08-17 2007-02-22 Burzin Daruwala Virtualized measurement agent
US20070106986A1 (en) 2005-10-25 2007-05-10 Worley William S Jr Secure virtual-machine monitor

Also Published As

Publication number Publication date
US20090165133A1 (en) 2009-06-25
KR20090068833A (ko) 2009-06-29
US8327438B2 (en) 2012-12-04

Similar Documents

Publication Publication Date Title
KR101489244B1 (ko) 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어방법
US9747443B2 (en) System and method for firmware based anti-malware security
CN107851155B (zh) 用于跨越多个软件实体跟踪恶意行为的系统及方法
KR101948711B1 (ko) 멀웨어 탐지를 위한 복합 스코어링
US9530001B2 (en) System and method for below-operating system trapping and securing loading of code into memory
KR101445634B1 (ko) 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법
US9262246B2 (en) System and method for securing memory and storage of an electronic device with a below-operating system security agent
US9384349B2 (en) Negative light-weight rules
JP6706273B2 (ja) インタープリタ仮想マシンを用いた挙動マルウェア検出
US8549644B2 (en) Systems and method for regulating software access to security-sensitive processor resources
Christodorescu et al. Cloud security is not (just) virtualization security: a short paper
US8549648B2 (en) Systems and methods for identifying hidden processes
US8650642B2 (en) System and method for below-operating system protection of an operating system kernel
US8966629B2 (en) System and method for below-operating system trapping of driver loading and unloading
KR101657191B1 (ko) 소프트웨어 보호 메커니즘
KR101689204B1 (ko) 디바이스의 펌웨어 무결성 검증
US9195492B2 (en) Secure system time reporting
US20120254993A1 (en) System and method for virtual machine monitor based anti-malware security
US20120255031A1 (en) System and method for securing memory using below-operating system trapping
US20120255003A1 (en) System and method for securing access to the objects of an operating system
CN109074450B (zh) 威胁防御技术
EP3039608A1 (en) Hardware and software execution profiling
US20120254994A1 (en) System and method for microcode based anti-malware security
EP2881883B1 (en) System and method for reducing load on an operating system when executing antivirus operations
Zhan et al. Checking virtual machine kernel control-flow integrity using a page-level dynamic tracing approach

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181227

Year of fee payment: 5