KR20160033689A - 스왑 아웃된 메모리 페이지의 가상 머신 가상화된 메모리로의 맵핑을 위한 가상 머신에서의 페이지 오류 삽입 - Google Patents
스왑 아웃된 메모리 페이지의 가상 머신 가상화된 메모리로의 맵핑을 위한 가상 머신에서의 페이지 오류 삽입 Download PDFInfo
- Publication number
- KR20160033689A KR20160033689A KR1020167000715A KR20167000715A KR20160033689A KR 20160033689 A KR20160033689 A KR 20160033689A KR 1020167000715 A KR1020167000715 A KR 1020167000715A KR 20167000715 A KR20167000715 A KR 20167000715A KR 20160033689 A KR20160033689 A KR 20160033689A
- Authority
- KR
- South Korea
- Prior art keywords
- page
- memory
- virtualized
- processor
- virtual machine
- Prior art date
Links
- 238000013507 mapping Methods 0.000 title description 11
- 238000002347 injection Methods 0.000 title description 3
- 239000007924 injection Substances 0.000 title description 3
- 238000000034 method Methods 0.000 claims abstract description 95
- 238000012986 modification Methods 0.000 claims abstract description 5
- 230000004048 modification Effects 0.000 claims abstract description 5
- 230000008569 process Effects 0.000 claims description 59
- 238000003780 insertion Methods 0.000 claims description 14
- 230000037431 insertion Effects 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 12
- 230000000903 blocking effect Effects 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims 2
- 230000007246 mechanism Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 208000035217 Ring chromosome 1 syndrome Diseases 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/54—Monitoring 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 adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
Abstract
가상화 기술을 이용하여 호스트 시스템을 멀웨어로부터 보호할 수 있도록 하는 시스템과 방법이 설명된다. 일부 실시예에서, 메모리 인트로스펙션 엔진은 호스트 시스템에서 실행되는 가상 머신(VM) 하에서 작동한다. 상기 엔진은 상기 가상 머신 내에서 실행되는 소프트웨어에 의해서 사용되는 가상 메모리 페이지의 콘텐트를 분석하도록 구성되고, 그리고/또는 개별 콘텐트에 예를 들어서 멀웨어 의해서 비인가된 수정이 발생하는 것을 방지하도록 구성된다. 개별 콘텐트가 메모리로부터 스왑아웃될 때, 메모리 인트로스펙션 엔진은 개별 VM으로 페이지 오류를 삽입해서 개별 콘텐트의 스왑인이 가능하게 한다.
Description
본 출원은 2013년 7월 17일에 출원된 미합중국 가특허출원 번호 제61/847,538호(발명의 명칭 "가상 머신에서의 페이지 오류 삽입(Page Fault Injection In Virtual Machines)")의 출원일에 대한 우선권을 주장하며 그 전체 내용은 본 명세서에서 참조로서 포함된다.
본 발명은 멀웨어로부터 컴퓨터 시스템을 보호하기 위한 시스템 및 방법에 대한 것이다.
멀웨어로도 알려진 악성 소프트웨어는 세계적으로 많은 수의 컴퓨터 시스템에 영향을 주고 있다. 멀웨어는 컴퓨터 바이러스, 웜, 루트킷(rootkit) 및 스파이웨어와 같은 많은 형태로, 수백만의 컴퓨터 사용자에게 심각한 위협이 되고 있으며, 무엇보다도 데이터 및 민감한 정보의 손실, 신원 도용, 및 생산성 손실에 있어 이들을 취약하게 하고 있다.
하드웨어 가상화 기술은, 많은 방면에서 물리적 컴퓨터 시스템으로 거동하는 통상적으로 가상 머신(virtual machine)으로 알려진 시뮬레이티드 컴퓨터 환경의 형성을 허용한다. 서버 통합 및 서비스로서의 인프라스트럭쳐(IAAS)와 같은 통상적인 어플리케이션에서, 몇몇 가상 머신은 동일한 물리적 머신상에서 동시에 실행될 수 있어서, 하드웨어 자원을 그들 사이에서 공유함으로써, 투자 및 운영 비용을 줄일 수 있다. 각각의 가상 머신은 다른 가상 머신들과 별개로 고유의 운영 시스템 및/또는 소프트웨어 어플리케이션을 구동할 수 있다. 멀웨어의 지속적인 확산으로 인해, 이러한 환경에서 작동하는 각각의 가상 머신은 잠재적으로 멀웨어 보호를 필요로 한다.
본 기술분야에서 통상적으로 사용되는 가상화 솔루션은 가상 머신 모니터로도 알려진 하이퍼바이저(hypervisor)를 포함하며, 이는 가상 머신의 운영 시스템(OS)과 컴퓨팅 하드웨어 사이에서 작동하는 소프트웨어의 레이어로 구성되고, 개별 OS보다 더 많은 프로세서 권한(processor privilege)을 갖는다. 안티-멀웨어 작업은 하이퍼바이저의 권한 레벨에서 수행될 수 있다. 그러한 구성은 보안성을 향상시킬 수 있지만 추가적 레이어의 복잡성을 가져오고 상당한 컴퓨팅 손실을 수반할 수 있다.
하드웨어 가상화 플랫폼을 위한 효율적이고 견고하며 가변형(scalable)의 안티-멀웨어 솔루션의 개발의 필요성이 크게 대두된다.
본 발명의 일 태양에 따르면, 호스트 시스템은 하이퍼바이저와 메모리 인트로스펙션 엔진을 작동시키도록 구성된 하드웨어 프로세서를 포함한다. 상기 하이버파이저는 가상화된 프로세서와 가상화된 메모리를 포함하는 가상 머신(virtual machine)을 노출시키도록 구성되고, 상기 가상 머신은 타겟 프로세스를 실행하기 위하여 상기 가상화된 프로세서를 채용하도록 구성된다. 상기 메모리 인트로스펙션 엔진은 상기 가상 머신 밖에서 실행되고 상기 가상 머신의 페이지 테이블에 따라서 상기 타겟 프로세스의 가상 메모리 공간의 타겟 페이지가 상기 가상화된 메모리로부터 스왑아웃(swap-out)되는지 결정하고, 응답으로, 상기 타겟 페이지가 상기 가상화된 메모리로부터 스왑아웃될 때, 상기 가상 머신 내로 페이지 오류(page fault)를 직접 삽입(inject)해서 상기 페이지 오류가 상기 가상 머신의 운영 시스템으로 하여금 상기 타켓 페이지를 상기 가상화된 메모리의 페이지로 맵핑하도록 구성된다.
본 발명의 다른 태양에 따르면, 본 발명의 방법은 하이퍼바이저를 실행하기 위하여 호스트 시스템의 적어도 하나의 하드웨어 프로세서를 채용하는 것을 포함하는데, 상기 하이퍼바이저는 가상화된 프로세서와 가상화된 메모리를 포함하는 가상 머신을 노출하도록 구성되고, 상기 가상 머신은 또한 타겟 프로세스를 실행하기 위하여 상기 가상화된 프로세서를 채용하도록 구성된다. 상기 방법은 상기 타겟 프로세스의 가상 메모리 공간의 타겟 페이지가 상기 가상화된 메모리로부터 스왑아웃되는지 결정하기 위하여 상기 적어도 하나의 하드웨어 프로세서를 채용하는 것과, 응답으로 상기 페이지가 상기 가상화된 메모리로부터 스왑아웃될 때 상기 가상 머신 내로 페이지 오류(page fault)를 직접 삽입(inject)해서 상기 페이지 오류가 상기 가상 머신의 운영 시스템으로 하여금 상기 타켓 페이지를 상기 가상화된 메모리의 페이지로 맵핑하도록 상기 적어도 하나의 하드웨어 프로세서를 채용하는 것을, 또한 포함한다.
본 발명의 다른 태양에 따르면, 비-일시적 컴퓨터 판독가능 매체는 호스트 시스템의 적어도 하나의 하드웨어 프로세서에 의하여 실행될 때 상기 호스트 시스템으로 하여금 메모리 인트로스펙션 엔진을 형성하도록 하는 명령(instrucion)들을 저장하는데, 상기 호스트 시스템은 가상화된 프로세서와 가상화된 메모리를 포함하는 가상 머신을 노출하는 하이퍼바이저를 실행하도록 추가적으로 구성되고, 이 때 상기 가상 머신은 타켓 프로세스를 실행하기 위하여 가상화된 프로세서를 채용하도록 구성된다. 상기 메모리 인트로스펙션 엔진은 상기 가상 머신 밖에서 실행되고 상기 가상 머신의 페이지 테이블에 따라서 상기 타겟 프로세스의 가상 메모리 공간의 타겟 페이지가 상기 가상화된 메모리로부터 스왑아웃(swap-out)되는지 결정하고, 응답으로, 상기 타겟 페이지가 상기 가상화된 메모리로부터 스왑아웃될 때, 상기 가상 머신 내로 페이지 오류(page fault)를 직접 삽입(inject)해서 상기 페이지 오류가 상기 가상 머신의 운영 시스템으로 하여금 상기 타켓 페이지를 상기 가상화된 메모리의 페이지로 맵핑하도록 구성된다.
본 발명의 전술한 태양들 및 장점은 후술하는 상세한 설명 및 도면을 참조로 이해하면 더욱 잘 이해될 것이다.
도 1은 호스트 시스템 상에서 실행되는 하이퍼바이저에 의해 노출되는 가상 머신들의 예시적 세트와, 본 발명의 일부 실시예에 따라서 상기 가상 머신들의 세트를 멀웨어로부터 보호하는 메모리 인트로스펙션 엔진을 보여준다.
도 2는 본 발명의 일부 실시예에 따른 상기 호스트 시스템의 예시적 하드웨어 구성을 보여준다.
도 3은 본 발명의 일부 실시예에 따른 게스트 가상 머신에 노출된 가상화된 하드웨어의 예시적 구성을 보여준다.
도 4는 본 발명의 일부 실시예에 따라서, 다양한 프로세서 권한 레벨들에서 상기 호스트 시스템에서 실행되는 소프트웨어 객체들의 예시적 계층을 보여준다.
도 5는 본 발명의 일부 실시예에 따른 메모리 주소의 예시적 맵핑과 가상화된 메모리로의 메모리 페이지의 예시적 스왑인(swap-in)과 가상화된 메모리로부터의 메모리 페이지의 예시적 스왑아웃을 보여준다.
도 6은 본 발명의 일부 실시예에 따라서 가상 머신을 멀웨어로부터 보호하기 위하여 메모리 인트로스펙션 엔진에 의해서 실행되는 단계들의 예시적 시퀀스를 보여준다.
도 7은 본 발명의 일부 실시예에 따라서 직접 페이지 오류 삽입을 실행하기 위하여 상기 메모리 인트로스펙션에 의해서 수행되는 단계들의 예시적 시퀀스를 보여준다.
도 8은 본 발명의 일부 실시예에 따라서 도 6 내지 7의 방법들의 어플리케이션을 나타내는 단계들의 예시적인 시퀀스를 보여준다.
도 9는 본 발명의 일부 실시예에 따라서 도 6 내지 7의 방법들의 다른 어플리케이션을 나타내는 단계들의 예시적인 시퀀스를 보여준다.
도 10은 본 발멸의 일부 실시예에 따라서, 타겟 프로세스의 데이터를 포함하는 메모리 페이지들의 가상 주소들 세트의 예시적 결정을 설명한다.
도 1은 호스트 시스템 상에서 실행되는 하이퍼바이저에 의해 노출되는 가상 머신들의 예시적 세트와, 본 발명의 일부 실시예에 따라서 상기 가상 머신들의 세트를 멀웨어로부터 보호하는 메모리 인트로스펙션 엔진을 보여준다.
도 2는 본 발명의 일부 실시예에 따른 상기 호스트 시스템의 예시적 하드웨어 구성을 보여준다.
도 3은 본 발명의 일부 실시예에 따른 게스트 가상 머신에 노출된 가상화된 하드웨어의 예시적 구성을 보여준다.
도 4는 본 발명의 일부 실시예에 따라서, 다양한 프로세서 권한 레벨들에서 상기 호스트 시스템에서 실행되는 소프트웨어 객체들의 예시적 계층을 보여준다.
도 5는 본 발명의 일부 실시예에 따른 메모리 주소의 예시적 맵핑과 가상화된 메모리로의 메모리 페이지의 예시적 스왑인(swap-in)과 가상화된 메모리로부터의 메모리 페이지의 예시적 스왑아웃을 보여준다.
도 6은 본 발명의 일부 실시예에 따라서 가상 머신을 멀웨어로부터 보호하기 위하여 메모리 인트로스펙션 엔진에 의해서 실행되는 단계들의 예시적 시퀀스를 보여준다.
도 7은 본 발명의 일부 실시예에 따라서 직접 페이지 오류 삽입을 실행하기 위하여 상기 메모리 인트로스펙션에 의해서 수행되는 단계들의 예시적 시퀀스를 보여준다.
도 8은 본 발명의 일부 실시예에 따라서 도 6 내지 7의 방법들의 어플리케이션을 나타내는 단계들의 예시적인 시퀀스를 보여준다.
도 9는 본 발명의 일부 실시예에 따라서 도 6 내지 7의 방법들의 다른 어플리케이션을 나타내는 단계들의 예시적인 시퀀스를 보여준다.
도 10은 본 발멸의 일부 실시예에 따라서, 타겟 프로세스의 데이터를 포함하는 메모리 페이지들의 가상 주소들 세트의 예시적 결정을 설명한다.
이하의 설명에서, 구조들 사이에서 언급된 모든 연결들은 직접적인 동작 연결들 또는 매개 구조들을 통한 간접적인 동작 연결들일 수 있는 것으로 이해된다. 구성 요소들의 세트는 하나 이상의 구성 요소를 포함한다. 구성 요소의 임의의 열거는 적어도 하나의 구성 요소를 언급하는 것으로 이해된다. 복수의 구성 요소는 적어도 2개의 구성 요소를 포함한다. 달리 요구되지 않는다면, 기술된 어떠한 방법 단계들도 설명된 특정 순서로 반드시 실행될 필요는 없다. 제2 구성 요소로부터 유도되는 제1 구성 요소(예컨대, 데이터)는 제2 구성 요소와 동일한 제1 구성 요소는 물론, 제2 구성 요소 그리고 선택적으로는 다른 데이터를 처리하는 것에 의해 생성된 제1 구성 요소를 포함한다. 파라미터에 따라 결정 또는 판정하는 것은 파라미터에 따라 그리고 선택적으로는 다른 데이터에 따라 결정 또는 판정하는 것을 포함한다. 달리 구체화되지 않는다면, 일부 수량/데이터의 표시자는 수량/데이터 그 자체, 또는 수량/데이터 그 자체와 상이한 표시자일 수 있다. 달리 구체화되지 않는다면, 프로세스는 어플리케이션 또는 운영 시스템의 일부와 같은 컴퓨터 프로그램의 인스턴스(instance)이고, 최소한 실행 쓰레드(execution thread)와 상기 운영 시스템에 의하여 상기 실행 쓰레드에 할당된 가상 메모리 섹션을 구비하는 것을 특징으로 한다(이 때 각각의 섹션은 실행 코드(executable code)를 포함한다). 달리 구체화되지 않는다면, 페이지는 호스트 시스템의 물리적 메모리로 개별적으로 맵핑된 가상 메모리의 최소 단위를 나타낸다. 달리 구체화되지 않는다면, 가상 머신에 페이지 오류를 직접 삽입하는 것은 운영시스템 또는 개별 가상 머신 내에서 실행되는 다른 소프트웨어의 도움 없이, 개별 가상 머신의 가상화된 프로세서 내에서 페이지 오류 이벤트를 유도하는 것을 포함한다. 그러한 직접 삽입은 삽입된 페이지 오류에 응답하여, 예를 들어서, 상기 페이지 오류를 핸들링 하기 위하여, 상기 운영 시스템 또는 다른 소프트웨어가 조치를 취하는 것을 배제하지는 않는다. 컴퓨터 판독 가능 매체는 자성, 광, 및 반도체 저장 매체(예컨대, 하드 드라이브, 광 디스크, 플래시 메모리, DRAM)와 같은 비-일시적 매체(non-transitory medium)는 물론, 전도성 케이블 및 파이버 옵틱 링크와 같은 통신 링크들을 포함한다. 일부 실시예들에 따르면, 본 발명은, 그 중에서도, 본원에 설명된 방법들을 수행하기 위해 프로그래밍된 하드웨어(예컨대, 하나 이상의 프로세서)는 물론, 본원에서 설명된 방법들을 수행하기 위한 명령들을 인코딩하는 컴퓨터-판독 가능 매체를 포함하는 컴퓨터 시스템을 제공한다.
후술하는 설명은 본 발명의 실시예들을 예시적으로 설명하는 것이며, 반드시 제한적인 것은 아니다.
도 1은 본 발명의 일부 실시예에 따라서 멀웨어 보호를 위한 하드웨어 가상화를 채용하는 호스트 시스템(10)의 예시적 구성을 보여준다. 호스트 시스템(10)은 엔터프라이즈 서버와 같은 기업 컴퓨팅 장치, 또는 퍼스널 컴퓨터나 스마트폰과 같은 최종 사용자 장치(end-user device)를 나타낼 수 있다. 다른 예시적 호스트 시스템들은 TV 및 게임 컨솔과 같은 오락 장치, 또는 메모리와 프로세서를 구비하고 멀웨어 보호가 필요한 모든 다른 장치를 포함한다. 도 1의 예에서, 호스트 시스템(10)은 하이퍼바이저(30)에 의해 노출되는 게스트 가상 머신(32a-b)의 세트를 실행한다. 가상 머신(virtual machine, VM)은 추상화(abstraction), 예를 들어서 실제의 물리적 머신/컴퓨터 시스템의 소프트웨어 모방을 포함하고, VM은 운영 시스템과 다른 어플리케이션을 작동시킬 수 있다. 하이퍼바이저(30)는 가상 프로세서와 가상 메모리 컨트롤러와 같은 다수의 가상화된 장치들을 생성하고 호스트 시스템(10)의 실제의 물리적 장치 대신에 그러한 가상화된 장치를 소프트웨어에 제공하도록 구성된 소프트웨어를 포함한다. 일부 실시예에서, 하이퍼바이저(30)는 호스트 시스템(10)의 하드웨어 리소스의 복수의 가상 머신에 의한 다중화(multiplexing, 공유)가 가능하게 한다. 하이퍼바이저(30)는 또한 개별 VM이 호스트 시스템(10)에서 동시에 실행되는 다른 VM들과 독립적으로 작동하고 또한 상기 다른 VM들을 알지 못하도록 상기 다중화를 관리한다. 유명한 하이퍼바이저의 예로는 특히 VMware Inc의 VMware vSphere™ 와 오픈 소스 Xen 하이퍼바이저가 있다.
각 VM(32a-b)은 게스트 운영 시스템(OS)(34a-b)을 각각 실행할 수 있다. 예시적인 어플리케이션 (42a-d) 세트는 특히 워드 프로세싱, 이미지 프로세싱, 미디어 플레이어, 데이타베이스, 캘린더, 연락처 관리(personal contact management), 브라우저, 게임, 음성 통화(voice communication), 데이터 통신(data communication) 및 안티-멀웨어 어플리케이션과 같은 모든 소프트웨어 어플리케이션을 일반적으로 나타낸다. 운영 시스템(34a-b)은 특히, Windows®, MacOS®, Linux®, iOS®, 또는 Android™과 같은 임의의 널리 이용가능한 운영 시스템을 포함할 수 있다. 각 OS는 가상 머신과 각 VM의 가상화된 하드웨어 장치 내에서 실행되는 어플리케이션들 사이의 인터페이스를 제공한다. 이하의 기재에서, 가상 머신의 가상 프로세서 상에서 실행되는 소프트웨어는 개별 가상 머신 내에서 실행된다고 말할 수 있다. 예를 들어서, 도 1의 예에서, 어플리케이션(42a-b)은 게스트 VM(32a) 내에서 실행된다고 말할 수 있고, 반면에 어플리케이션(42c-d)은 가상 VM(32b) 내에서 실행된다고 말할 수 있다. 반대로, 하이퍼바이저(30)는 게스트 VM(32a-b) 외부, 즉 게스트 VM(32a-b)의 아래에서 실행된다고 말할 수 있다.
일부 실시예에서, 하이퍼바이저(30)는 이하에서 상술되는 안티-멀웨어 작업을 수행하도록 구성된 메모리 인트로스펙션 엔진(40)을 포함한다. 엔진(40)은 하이퍼바이저(30) 내로 통합되거나 또는 하이퍼바이저(30)와 다르고 독립적인 소프트웨어 요소로서 전달될 수 있으나 하이퍼바이저(30)와 실질적으로 유사한 프로세서 권한 레벨에서 실행될 수 있다. 하나의 엔진(40)이 호스트 시스템(10)에서 실행되는 복수 VM을 멀웨어로부터 보호하도록 구성될 수 있다.
도 2는 호스트 시스템(10)의 예시적인 하드웨어 구성을 보여준다. 시스템(10)은 컨트롤러 허브(24)에 의해 모두 연결되어 있는 프로세서(12), 메모리 유닛(14), 입력 장치(16) 세트, 출력 장치(18) 세트, 저장 장치(20) 세트, 및 네트워크 어댑터(22) 세트를 포함하는 물리적 장치들의 세트를 포함한다. 일부 실시예들에서, 프로세서(12)는 신호 및/또는 데이터의 세트로 산술 및/또는 논리 연산을 실행하도록 구성된 물리적 장치(예컨대, 반도체 기판에 형성된 멀티-코어 집적 회로)를 포함한다. 일부 실시예들에서, 이러한 논리 연산들은 프로세서 명령(예를 들어, 기계 코드 또는 다른 유형의 소프트웨어)의 시퀀스 형태로 프로세서(12)에 전달된다. 메모리 유닛(14)은 명령들을 수행하는 도중에 프로세서(12)에 의해 액세스되거나 생성되는 데이터/신호들을 저장하는 휘발성 컴퓨터-판독 가능 매체(예컨대, RAM)를 포함할 수 있다.
입력 장치(16)는 사용자가 호스트 시스템(10)으로 데이터 및/또는 명령들을 도입할 수 있게 하는 개별 하드웨어 인터페이스 및/또는 어댑터를 포함하는, 특히 컴퓨터 키보드, 마우스, 및 마이크를 포함할 수 있다. 출력 장치(18)는 특히 모니터와 같은 디스플레이 장치 및 스피커는 물론, 호스트 시스템(10)이 사용자에게 데이터를 통신하게 할 수 있는 그래픽 카드와 같은 하드웨어 인터페이스/어댑터를 포함할 수 있다. 일부 실시예들에서, 입력 장치(16)와 출력 장치(18)는 터치-스크린 장치들의 경우와 같이, 하드웨어의 공통적인 부품을 공유할 수 있다. 저장 장치(20)는 소프트웨어 명령들 및/또는 데이터의 비휘발성 저장, 판독, 및 기록을 가능하게 하는 컴퓨터-판독 가능 매체를 포함한다. 예시적인 저장 장치(20)는 자기 디스크 및 광 디스크 및 플래시 메모리 장치들은 물론, CD 및/또는 DVD 디스크들 및 드라이브들과 같은 소거 가능 매체를 포함한다. 네트워크 어댑터(22) 세트는 호스트 시스템(10)이 컴퓨터 네트워크 및/또는 다른 장치들/컴퓨터 시스템들에 연결될 수 있게 한다. 컨트롤러 허브(24)는 프로세서(12)와 장치들(14, 16, 18, 20 및 22) 사이의 통신을 가능하게 하는 복수의 시스템, 주변 장치, 및/또는 칩셋 버스들, 및/또는 다른 모든 회로망을 나타낸다. 예를 들어서, 컨트롤러 허브(24)는 특히 메모리 컨트롤러, 입력/출력(I/O) 컨트롤러, 및 인터럽트 컨트롤러(interrupt controller)를 포함할 수 있다. 다른 실시예에서, 컨트롤러 허브(24)는 특히 프로세서(12)를 메모리(14)에 연결시키는 노스브리지, 및/또는 프로세서(12)를 장치들(16, 18, 20, 및 22)에 연결시키는 사우스브리지를 포함할 수 있다.
도 1에 도시된 바와 같은 구성을 가능하게 하기 위하여, 하이퍼바이저(30)는 다수의 가상화된 장치들을 생성할 수 있고, 이들 각각은 시스템(10)의 물리적 하드웨어 장치를 모방(emulation)한다. 하이퍼바이저(30)는 가상화된 장치들 세트를 각 VM(32a-b)에 또한 할당할 수 있고, 스케줄링(scheduling), 시그널링(signaling) 및 통신(communication)을 제어해서 VM(32a-b)이 프로세서(12)와 다른 하드웨어 장치들을 동시에 사용할 수 있도록 한다. 그러한 작업을 수행하는 것은 또한 VM(32a-b)을 노출하는 것으로 본 기술분야에서 알려져 있다.
도 3은 하이퍼바이저(30)에 의해 노출되는 가상 머신(32)의 예시적 구성을 보여준다. VM(32)은 예를 들어서 도 1의 VM(32a-b) 중 임의의 것을 나타낼 수 있다. VM(32)은 가상화된 프로세서(112), 가상화된 메모리 유닛(114), 가상화된 입력 장치(116), 가상화된 출력 장치(118), 가상화된 저장소(120), 가상화된 네트워크 어댑터(22) 및 가상화된 컨트롤러 허브(124)를 포함한다. 가상화된 프로세서(112)는 프로세서(12)의 기능의 적어도 일부를 모방하는 것을 포함하고, 운영 시스템 및 다른 어플리케이션들과 같은 소프트웨어 일부를 구성하는 실행 프로세서를 위한 명령들을 수신하도록 구성된다. 실행을 위하여 프로세서(112)를 사용하는 소프트웨어는 가상 머신(32) 내에서 실행되는 것으로 여길 수 있다. 일부 실시예에서, 가상화된 메모리 유닛(114)은 가상화된 프로세서(112)에 의해서 사용되는 데이터를 저장하고 검색(retrieving)하기 위한 주소화 가능 공간(addressable space)을 포함한다. 다른 가상화된 장치들(예를 들어서, 가상화된 입력장치, 출력장치, 저장 장치 등)은 호스트 시스템(10)의 개별 물리적 장치들의 기능을 적어도 일부 모방한다. 가상화된 프로세서(112)는 대응하는 물리적 장치들과 하는 것과 같이 그러한 가상화된 장치들과 상호작용하도록 구성될 수 있다. 예를 들어서, VM(32) 내에서 실행되는 소프트웨어는 가상화된 네트워크 어댑터(들)(122)를 통해서 네트워크 트래픽을 보내고 그리고/또는 받을 수 있다. 일부 실시예에서, 하이퍼바이저(30)는 가상화된 장치들의 서브세트(subset)만(예를 들어서, 가상화된 프로세서 112, 가상화된 메모리 114 또는 허브 124의 부분들에만)을 VM(32)에 노출할 수 있다. 또한 하이퍼바이저(30)는 선택된 VM에 호스트 시스템(10)의 일부 하드웨어 장치들의 독점적 사용권을 줄 수 있다. 그러한 일예에서, VM(32a)(도 1)은 입력 장치(16)들과 출력 장치(18)들의 독점적 사용권을 가질 수 있으나 가상화된 네트워크 어댑터는 부족하다. 한편, VM(32b)은 네트워크 어댑터(22)들의 독점적 사용권을 가질 수 있다.
도 4는 본 발명의 일부 실시예에 따른 호스트 시스템(10) 상에서 실행되는 소프트웨어 객체들의 계층도를 보여준다. 도 4는 본 기술분야에서 레이어(layer) 또는 보호 링(protection ring)으로 또한 알려진 프로세서 권한 레벨의 관점으로부터 도시되었다. 일부 실시예에서, 하이퍼바이저(30)는 최대 권한 레벨(most privileged level)(링-1 또는 루트 모드로도 알려진 가상화를 지원하는 Intel® 플랫폼의 VMXroot)에서 프로세서(12)의 제어를 획득하고 따라서 호스트 시스템(10)에서 실행되는 다른 소프트웨어에 가상 머신(32)으로서 노출되는 하드웨어 가상화 플랫폼을 생성한다. 도 2에서 OS(34a-b)와 같은 운영 시스템(34)은 VM(32)의 가상 환경 내에서 실행되고, OS(34)는 하이퍼바이저(30)보다 더 낮은 프로세서 권한을 가진다(예를 들어서, 인텔 플랫폼에서 링 0 또는 커널 모드). 어플리케이션(42e-f) 세트는 OS(34)보다 낮은 프로세서 권한(예를 들어서, 링 3 또는 사용자 모드)에서 실행된다. 어플리케이션(42e-f) 부분들은 커널 권한 레벨에서 실행될 수 있다(예를 들어서, 어플리케이션 42f에 의해 설치된 드라이버 36;예시적 드라이버 36은 소프트웨어 객체들의 멀웨어를 나타내는 행동을 탐지하는 것 및/또는 소프트웨어 객체들 내의 멀웨어를 나타내는 서명들을 탐지하는 것과 같은 안티-멀웨어 작업을 수행한다). 비슷하게, OS(34) 부분들은 사용자 모드(링 3)에서 실행될 수 있다.
일부 실시예에서, 인트로스펙션 엔진(40)은 하이퍼바이저(30)와 동일한 프로세서 권한 레벨에서 실질적으로 실행되고, VM(32)과 같은 호스트 시스템(10)에서 실행되는 가상 머신의 인트로스펙션을 수행하도록 구성된다. VM 또는 각각의 VM 내에서 실행되는 소프트웨어 객체의 인트로스펙션은, 개별 소프트웨어 객체의 행동을 분석하는 것, 예를 들어서, 상기 객체에 의해서 수행되는 작업들의 세트를 식별하는 것(예를 들어서, 시스템 호출을 발행하는 것, OS의 레지스트리에 접근하는 것, 원격 위치에서 파일을 다운로드하는 것, 파일에 데이타를 기록하는 것 등)을 포함할 수 있다. 또한 인트로스펙션은 상기 소프트웨어 객체 부분들을 포함하는 메모리 섹션들의 주소들을 결정하는 것, 각 메모리 섹션들에 액세스하는 것, 개별 메모리 섹션들 내에 저장된 콘텐트를 분석하는 것을 포함할 수 있다. 인트로스펙션의 다른 예들은 그러한 메모리 섹션들과 같은 특정 프로세스들을 중간차단하는 것 그리고/또는 그 접근을 제한하는 것, 예를 들어서 프로세스가 다른 프로세스에 의하여 사용되는 코드 또는 데이터를 덮어쓰기(over-writing)하는 것을 방지하는 것을 포함한다. 일부 실시예에서, 엔진(40)에 의하여 인트로스펙션을 위하여 선택된 객체들은 특히, 프로세스와, 명령 스트림(instruction stream)과, 레지스터(register)와, 각 VM의 페이지 테이블 및 드라이버 객체와 같은 데이터 구조를 포함한다.
도 1에 도시된 바와 같은 구성에서(즉, 각 VM의 외부로부터) VM(32)의 인트로스펙션을 수행하기 위하여, 엔진(40)의 일부 실시예에서는 프로세서(12)의 메모리 맵핑 구조와 메커니즘을 채용한다. 가상 머신들은 통상적으로는 가상화된 물리적 메모리, 예를 들어서, 본 기술분야에서 게스트-물리적 메모리로 또한 알려진 도 3의 메모리(114)와 작동한다. 가상화된 물리적 메모리는, 예를 들어서, 각 게스트 VM에 특정된 가상화된 주소의 인접 공간(contiguous space)으로서(상기 공간의 부분들이 물리적 메모리(14) 및/또는 물리적 저장 장치(20) 내에서 주소들에 맵핑됨) 실제 물리적 메모리(14)의 추상 표현체(abstract representation)를 포함한다. 가상화를 지원하도록 구성된 시스템들에서, 그러한 맵핑은 2단계 주소 변환(second level address translation, SLAT)으로 알려진, 프로세서(12)에 의해서 제어되는 전용 데이터 구조들에 의하여 일반적으로 달성된다. 유명한 SLAT 구현은 확장된 페이지 테이블(extended page table, Intel® 플랫폼에서 EPT) 또는 내포된 페이지 테이블(nested page table, AMD®플랫폼에서 NPT)을 포함한다. 그러한 시스템들에서, 가상화된 물리적 메모리는 당해 기술분야에서 페이지로 알려진 유닛들로 파티션될 수 있고, 여기서 페이지는 EPT 및/또는 NPT와 같은 메커니즘을 통해서 물리적 메모리에 개별적으로 맵핑된 가상화된 물리적 메모리의 최소 유닛을 나타내며, 다시 말해서 물리적 메모리와 가상화된 물리적 메모리 사이의 맵핑은 페이지 단위(page granularity)로 수행된다. 모든 페이지들은 통상적으로 소정의 크기, 예를 들어 4 킬로바이트, 2 메가바이트 등의 크기를 가진다. 가상화된 물리적 메모리를 페이지들로 파티셔닝하는 것은 대개 하이퍼바이저(30)에 의하여 설정된다. 일부 실시예에서, 하이퍼바이저(30)는 또한 EPT/NPT를 설정하고 따라서 물리적 메모리와 가상화된 물리적 메모리 사이의 맵핑을 설정한다. 가상화된 물리적 메모리 주소를 물리적 메모리 주소로 실질적으로 맵핑(변환)하는 것은 호스트 시스템(10)의 변환 색인 버퍼(translation lookaside buffer, TLB)에서 물리적 메모리 어드레스를 색인(look-up)하는 것을 포함할 수 있다. 일부 실시예에서, 주소 변환은 페이지 테이블 및/또는 페이지 디렉토리 세트에서 연속적인 주소 색인의 세트를 포함하는 페이지 검색(page walk)을 수행하는 것과, 페이지의 오프셋(offset)을 각 페이지에 대한 주소에 추가하는 것과 같은 연산을 수행하는 것을 포함한다.
일부 하드웨어 설정은 예를 들어서, 각 페이지에 대하여 읽기, 쓰기, 및/또는 실행 접근 권한을 설정함으로써 하이퍼바이저(30)가 물리적 메모리(14)의 각 페이지 내에 저장된 데이터의 접근 권한을 선택적으로 제어할 수 있게 한다. 상기 권한은 예를 들어서, EPT 또는 NPT 내의 각 페이지의 엔트리(entry)를 수정해서 설정될 수 있다. 따라서 하이퍼바이저(30)는 어떤 소프트웨어 객체가 각 페이지 내의 주소들에 저장된 데이터에 액세스할 것인지 결정할 수 있고, 그리고 어떠한 작업(예를 들어서, 읽기, 쓰기, 실행 등)이 각 데이터에 대해서 허용되는지 지정할 수 있다. 소프트웨어 객체가 각 권한을 가지지 않는 페이지에 데이터를 기록하는 것이나 실행금지(non-executable)로 표시된 페이지로부터 코드를 실행하는 것과 같은 작업을 수행하려는 VM 내에서 실행되는 소프트웨어 객체에 의한 시도는 (예를 들어서 인텔 플랫폼에서의 VMExit 이벤트와 같은) 가상 머신 종료 이벤트(exit event)를 촉발할 수 있다. 일부 실시예에서, 가상 머신 종료 이벤트는 프로세서의 제어를 각 소프트웨어 객체를 실행하는 VM으로부터 하이퍼바이저(30)로 이동시킨다. 그러한 제어 이동은 하이퍼바이저(30)의 프로세서 권한 레벨에서 실행되는 소프트웨어로 하여금 비인가 쓰기 또는 실행시도를 차단할 수 있게 한다. 일부 실시예에서, 인트로스펙션 엔진(40)은 안티-멀웨어 작업의 일부로서 그러한 차단을 수행한다.
일부 실시예들에서, OS(34)는 도 4의 어플리케이션(42e-f)과 같은 프로세스를 위한 가상 메모리 공간을, 예컨대 페이지 테이블 메커니즘을 사용하여 맵핑(주소 변환)을 VM(32)의 가상화된 물리적 메모리와 상기 개별 가상 메모리 공간 사이에서 유지함으로써 설정한다. 일부 실시예들에서, 상기 프로세스 가상 메모리 공간은 또한 페이지들로 구획되며, 이러한 페이지들은 OS(34)에 의해 가상화된 물리적 메모리로 개별적으로 맵핑된 가상 메모리의 최소 단위를 나타낸다(즉, 가상 메모리에서 가상화된 물리적 메모리로의 맵핑은 페이지 단위(page granularity)로 수행된다).
도 5는 도 4에 도시된 바와 같은 실시예에서 메모리 주소들의 예시적인 맵핑을 보여준다. 게스트 VM(32) 내에서 실행되는 운영 시스템의 일부, 또는 프로세스 또는 어플리케이션과 같은 소프트웨어 객체는 게스트 OS(34)에 의해 가상 메모리 공간(214a)을 할당받는다. 상기 소프트웨어 객체가 공간(214a)의 예시적인 메모리 페이지(60a)의 콘텐트에 대한 액세스를 시도하면, 페이지(60a)의 주소는 게스트 OS(34)에 의해 구성 및 제어되는 페이지 테이블들에 따라 게스트 VM(32)의 가상화된 프로세서에 의해 가상 머신(32)의 가상화된 물리적 메모리 공간(114)의 페이지(60b)의 주소로 변환된다. 다음으로 가상화된 물리적 메모리(114)를 구성 및 제어하는 하이퍼바이저(30)는 예컨대 상술한 SLAT 수단을 사용하여, 페이지(60b)의 주소를 호스트 시스템(10)의 물리적 메모리(14) 내의 페이지(60c)의 주소로 맵핑한다.
일부 실시예들에서, 하이퍼바이저(30)는 물리적 메모리(14)의 표현체를 포함하는 그 자신의 가상 메모리 공간(214b)을 설정하고, 공간(214b) 내의 주소를 물리적 메모리(14) 내의 주소로 맵핑하는 변환 메커니즘(예컨대, 페이지 테이블)을 사용한다. 도 5에서, 그러한 예시적인 맵핑은 페이지(60c)의 주소를 페이지(60h)의 주소로 번역한다. 상기 맵핑은 하이퍼바이저(30)로 하여금 호스트 시스템(10)에서 작동하는 여러 VM들 내에서 실행되는 소프트웨어 객체들에 속하는 메모리 페이지에 대한 관리(예를 들어, 읽기, 쓰기 및 접근 제어)가 가능하게 한다.
도 5는 게스트 OS(34)에 의해서 수행되는 페이지 스왑 작업(page swapping operation)을 추가적으로 설명한다. 페이지 스왑은 이용 가능한 메모리 리소스를 효과적으로 관리하는 데 사용되는 현대 운영 시스템의 공통된 특징이다. 일부 실시예에서, 메모리로부터 페이지를 스왑아웃하는 것은 OS가 각 페이지의 콘텐트를 메모리로부터 저장 장치(예를 들어서, 디스크)로 이동하는 것을 포함하고, 따라서 각 페이지가 다른 데이터를 저장하는 데 사용될 수 있다. 이후에, OS는 가능하게로는 상기 콘텐트를 저장하는 원래 페이지의 주소와는 다른 주소에서 저장소로부터 메모리로 다시 각 콘텐트를 이동함으로써 페이지의 스왑-인을 수행할 수 있다. 그러한 스왑-인을 완료하기 위하여 OS는 주소 변화를 반영하도록 각 페이지의 페이지 테이블 엔트리를 수정할 수 있다. 도 5에 도시된 예에서, 페이지(60c)는 저장 장치에서 페이지(60d)로 스왑 아웃된다. OS(34)가 가상 머신 내에서 실행되기 때문에, OS(34)는 가상화된 물리적 메모리(114)를 자신의 물리적 메모리로, 그리고 가상화된 저장 장치(120)를 자신의 물리적 저장소로 간주한다. 그래서, 메모리로부터 페이지(60c)를 효과적으로 스왑아웃하는 것은 페이지(60c)의 콘텐트를 가상화된 저장 장치(120)로 이동하는 것을 포함한다. 장치(120)는 물리적 저장 장치(20)의 하이퍼바이저(30)에 의해서 생성된 추상화(abstraction)를 포함할 수 있고, 따라서 페이지(60d)의 콘텐트는 장치(20)의 페이지(60k)로 실제로 우회(redirection)될 수 있다. 일부 실시예에서, 하이퍼바이저(30)는 예를 들어서, Intel®의 VT-d 기술을 사용하여 게스트 VM(32)가 저장 장치(20)에 대한 직접 접근할 수 있도록 할 수 있다. 그러한 구성에서, 가상화된 저장 장치(120)는 호스트 시스템(10)의 실제 물리적 저장 장치와 일치할 수 있다. 스왑-인을 수행하기 위하여, OS(34)는 페이지(60d)의 콘텐트를 가상화된 물리적 메모리(114)의 페이지(60e)로 이동할 수 있다. 게스트 OS(34)는 페이지(60a)로부터 페이지(60e)로의 주소 변환을 나타내기 위하여(도 5에서 파선 화살표) 페이지(60a)에 대응하는 페이지 테이블 엔트리를 추가적으로 수정할 수 있다. 페이지(60e)는 물리적 메모리(14)에서 페이지(60m)로 맵핑될 수 있다.
도 6은 가상 머신을 멀웨어로부터 보호하기 위하여 메모리 인트로스펙션 엔진(40)에 의하여 수행되는 본 발명의 일부 실시예에 따른 단계들의 예시적 시퀀스를 보여준다. 그러한 안티-멀웨어 보호는 예를 들어서 각 VM 내에서 실행되는 선택된 프로세스(이하에서는 '타겟 프로세스'를 말함)의 메모리 공간의 페이지(이하에서는 '타겟 페이지'를 말함)를 식별하는 것과, 각 페이지의 콘텐트를 예를 들어서 악성 소프트웨어 엔터티에 의한 비인가 수정으로 부터 보하는 것을 포함한다. 다른 예에서, 인트로스펙션 엔진(40)은 상기 타겟 페이지가 악성 코드를 포함하고 있는지를 결정할 수 있다. 상기 타겟 프로세스는 예를 들어서 어플리케이션(42e-f)들과 같은 어플리케이션, 또는 도 4의 게스트 OS(34)에 속할 수 있다. 상기 타겟 프로세스가 사용자 레벨 프로세서 권한(예를 들어서 Windows®의 사용자 모드)에서 실행될 때, 타겟 페이지의 콘텐트는 항상 메모리에 위치할 수 없고 대신에 OS에 의해서 간간이 메모리 내외로 스왑될 수 있다. VM(32) 밖에서 실행됨으로써 메모리 인트로스펙션 엔진(40)은 그러한 스왑 아웃된 메모리 페이지들의 콘텐트에 직접적으로 접근할 수 없다.
단계들(302-304)의 시퀀스에서, 엔진(40)은 현재 실행 콘텍스트(context)가 타겟 프로세스의 콘텍스트일 때까지, 즉 현재 실행되는 명령이 타겟 프로세스에 속할 때까지 기다린다. 현재 실행 콘텍스트를 결정하는 것은, 예를 들어서 개별 VM의 가상 프로세서의 CR3 레지스터의 콘텐트를 읽는 것을 포함할 수 있다(x86 플랫폼의 CR3 레지스터는 각 실행 프로세스를 특징적으로 식별하는 페이징 구조(paging structure)의 주소를 저장한다). 실행 콘텍스트가 타겟 프로세스의 콘텍스트일 때 단계들(306-308)의 시퀀스에서 엔진(40)은 타겟 페이지의 콘텐트가 현재 메모리로부터 스왑되는지 결정할 수 있다. 타겟 페이지의 콘텐트가 메모리에 있을 때, 단계(316)에서 엔진(40)은 타겟 페이지를 인트로스펙션하는 것, 예를 들어서, 타겟 페이지의 콘텐트를 분석 및/또는 보호 하는 것을 진행할 수 있다. 타겟 페이지의 콘텐트가 현재 스왑 아웃될 때, 단계(310)에서 엔진(40)은 페이지 오류를 개별 VM에 직접 삽입해서 이하에서 상술되는 바와 같이 타겟 페이지의 스왑-인이 되도록 한다. 다음으로, 단계(312-314)들의 시퀀스에서 엔진(40)은 타겟 페이지가 스왑인될 때까지, 즉 개별 페이지의 콘텐트가 개별 VM의 가상화된 물리적 메모리로 맵핑되어 인트로스펙션이 수행될 때까지 기다린다.
타겟 페이지가 메모리에 위치하는지 결정하기 위하여(단계 306-308), 뿐만 아니라 타겟 페이지가 스왑인 되었는지 결정하기 위하여(단계 312-314), 메모리 인트로스펙션 엔진(40)은 OS(34)에 의해 설정된 페이지 테이블의 콘텐트에 엑세스할 수 있다. 일부 실시예에서, 타겟 페이지의 페이지 테이블 엔트리의 필드(예들 들어서, 전용 비트, dedicated bit)는 각 페이지가 현재 메모리에 존재하는지를 나타낸다.
도 7은 페이지 오류를 직접 삽입하여 타겟 페이지의 스왑인이 일어나도록 하기 위하여 엔진(40)에 의해 수행되는 단계들의 예시적 시퀀스(도 6의 단계 310)를 보여준다. 단계(322-324)에서, 엔진(40)은 가상 프로세서(112)의 현 상태를 평가해서 페이지 오류 예외(page fault exception)가 VM(32) 내로 안전하게 삽입될 수 있는지 판단한다. 단계(322)는 현재 프로세싱 중인 차단 요청들의 우선순위를 평가하는 것을 포함할 수 있다. 마이크로소프트의 Windows® 시스템에서 그러한 평가는 예를 들어서 VM(32)의 세그먼트 레지스터(segment register)의 콘텐트를 색인(looking up)함으로써 현재 차단 요청 레벨(IRQL)을 결정하는 것을 포함할 수 있다. 그러한 예시적 레지스터에는 IRQL을 포함하는 데이터 구조에 포인터(pointer)를 저장하는 x86 프로세서 아키텍쳐의 FS 및/또는 GS 레지스터가 있다. 예시적 실시예에서, IRQL < 2 일때, 페이지 오류를 삽입하는 것은 안전하다고 여겨진다. 더 높은 우선순위의 차단이 대기하고 있을 때(예를 들어서, IRQL≥2), 단계(322-324)들은 고순위 요청들이 처리되기를 기다린다.
일부 실시예에서, 단계(322)는 가상 프로세서(112)가 현재 실행 중인 권한 레벨(링)을 결정하는 것을 포함할 수 있다. Microsoft Windows®를 실행하는 호스트 시스템에서, 프로세서가 사용자 모드(링 3)에서 실행되는 중에, IRQL는 영(zero)이고, 그래서 사용자 모드 페이지에 대응하는 페이지 오류의 삽입은 안전하다고 생각될 수 있다. 프로세서(112)가 커널 모드(링 0)에서 실행될 때 오류 삽입이 안전한지를 알기 위하여 추가적인 결정이 필요할 수 있다.
단계(326-328)들의 시퀀스는 페이지 오류 예외를 VM(32)에 삽입하고, 상기 예외는 타겟 페이지의 스왑인을 촉발하도록 구성된다. 예시적 실시예에서, 단계(326)에서, 엔진(40)은 각 VM의 가상 프로세서의 CR2 레지스터 내에 타겟 페이지의 가상 주소를 쓰고, 어떤 가상 페이지가 메모리로 스왑되었는지 OS(34)에 표시한다. 다음으로, 단계(328)에서, 엔진(40)은 예를 들어서 VM(32)의 가상 머신 제어 구조(virtual machine control structure, VMCS)의 제어 비트(control bit)들 세트에 쓰는 것을 통해서 가상화된 프로세서(112) 내의 예외를 촉박하는데, 상기 개별 제어 비트들은 각 VM 내의 페이지 오류를 촉발하도록 구성될 수 있다. 가상화를 지원하도록 구성된 Intel® 프로세서에서 그러한 제어 비트들은 VMCS의 VM 엔트리 이벤트 삽입 필드(Entry Event Injection field)의 일부이다.
VM 제어 구조는 호스트 시스템(10)에서 실행되는 게스트 VM을 표현하기 위하여 하이퍼바이저(30)에 의하여 유지되는 특수한 종류의 데이터 구조이다. VMCS의 포맷은 구현 특정적(implementation specific)이거나 그리고/또는 플랫폼 특정적이다. 복수의 가상화된 프로세서(112)를 포함하는 VM들에 있어서, 하이퍼바이저(30)는 각 가상 프로세서를 위한 특징적 VMCS를 유지(maintain)할 수 있다. 일부 실시예에서, 각 VMCS는 게스트 상태 영역(guest state area)와 호스트 상태 영역(host state area)을 포함할 수 있는데, 상기 게스트 상태 영역은 각 가상 프로세서의 제어 레지스터의 콘텐트 및/또는 CPU 상태와 같은 데이터를 저장하고, 상기 호스트 상태 영역은 하이퍼바이저(30)를 위하여 유사한 데이터를 저장한다. 일부 실시예에서, 프로세서(12)는 메모리의 영역을 각 VMCS에 연관시킨다(즉, VMCS 영역으로 호칭). 소프트웨어는 영역의 주소를 사용하여 특정 VMCS를 참조(reference)할 수 있다(예를 들어서, VMCS 포인터). 주어진 임의의 시간에, 기껏해야 하나의 VMCS가 프로세서(12)에 로드될 수 있고 프로세서에 대한 제어권을 현재 가지고 있는 VM을 나타낸다.
도 8 및 도 9는 Windows® 환경에서 본 발명의 일부 실시예의 예시적 적용예를 보여준다. 도 8은 타켓 프로세스의 실행가능 메인(main executable)의 가상 메모리 주소를 결정하기 위하여 엔진(40)에 의해서 수행되는 단계들의 시퀀스를 보여준다. 단계(332)에서, 엔진(40)은 타겟 프로세스의 시작(launch)을 탐지할 수 있다. 단계 (332)는 활성 프로세스의 리스트를 관리하는 OS의 메커니즘을 중간차단하는 것과 같이 본 기술분야에서 알려진 임의의 방법을 채용할 수 있다. 예를 들어서, Windows®에서, 프로세스가 생성될 때마다 각 프로세스의 표시자(indicator)가 활성 프로세스의 리스트로 삽입된다. 상기 표시자는 각 프로세스의 종료시에 리스트로부터 제거된다. 일부 실시에에서, 프로세스를 시작할 때 OS(34)는 또한 각 프로세스에 연계된 리소스를 관리하기 위하여 OS(34)에 의하여 사용되는 데이터를 포함하는 프로세스 환경 블록(process environment block, PEB)으로 알려진 프로세서 특정 데이타 구조(process-specific data structure)를 설정한다. 타겟 프로세스를 활성 프로세스의 리스트로 삽입하기 위하여 OS 명령을 중간차단(예를 들어, 후크(hook)에 OS 명령을 위치시킴)함으로써 엔진(40)은 엔진(40)이 단계(334)에서 추출할 수 있는 개별 PEB의 메모리 주소와 같은 정보를 획득할 수 있다. 윈도우스에서 PEB의 가상 주소는 실행 프로세스 블록(executive process block, EPROCESS)으로 알려진 OS의 데이터 구조에 저장된다. 도 10은 그러한 프로세스 특정 데이터 구조들을 설명하는 다이어그램을 보여준다.
사용자 레벨 데이터 구조이므로 PEB 데이터를 포함하는 가상 메모리 페이지는 메모리 안에 현재 위치할 수도 그렇지 않을 수도 있다. 단계(336)에서 엔진(40)은 개별 가상 메모리 페이지가 스왑아웃되었는지 판단하고, 그리고 만일 그렇지 않다면 단계(340)에서 엔진(40)은 예를 들어서 PEB 데이터를 파싱(parsing)함으로써 타겟 프로세스의 실행가능 메인의 가상 주소를 결정하는 것을 진행한다. PEB 데이터가 메모리로부터 현재 스왑아웃될 때 단계(338)는 예를 들어서 도 7과 관련하여 상술된 메커니즘을 이용하여 PEB 데이터를 포함하는 개별 페이지의 스왑인이 일어나도록 한다.
도 9는 타겟 프로세스에 의해 로딩된 실행가능 모듈(executable module)(예를 들어서 라이브러리)의 메모리 인트로스펙션을 수행하기 위하여 엔진(40)에 의해서 처리되는 단계들의 예시적 시퀀스를 보여준다. 멀웨어는 종종 악성 코드를 포함하기 위하여 벡터로서 DLL을 사용하므로 그러한 라이브러리의 콘텐트를 분석하는 것이 안티-멀웨어 작업에 중요할 수 있다. 단계(342)에서 PEB 데이터를 포함하는 가상 페이지에 엑세스한 후(예를 들어서 위의 단계 336-338 참조) 단계(344-346-348)의 시퀀스에서 엔진(40)은 타겟 프로세스에 의해 사용된 타겟 모듈, 예를 들어서 DLL(dynamic-link library)을 식별하고, 각 모듈의 로딩 여부를 판단한다. 타겟 모듈이 로딩될 때, 엔진(40)은, 예를 들어서 PEB의 특정 데이터 필드에 따라서(도 10 참조), 단계(350)에서 각 모듈의 가상 주소를 결정할 수 있다. 단계(352)에서, 엔진(40)은 모듈 데이터를 포함하고 단계(350)에서 결정된 주소에 위치하는 가상 페이지가 현재 메모리로부터 스왑아웃되었는지 결정하고 아니라면 단계(356)에서 개별 모듈의 메모리 인트로스펙션 수행을 진행한다. 개별 모듈의 가상 페이지가 현재 스왑 아웃될 때 단계(354)에서 엔진(40)은 예를 들어서 도 7과 관련하여 상술한 메커니즘을 이용하여 개별 가상 페이지의 스왑인이 일어나게 한다.
도 10은 Windows® 환경에서 가상 주소들을 결정하는 예를 보여준다. 일부 실시예에서, OS(34)는 커널 가상 메모리 공간(214d)을 유지하는데 이때 가상 주소(60p)에 위치하는 페이지는 타겟 프로세스의 실행을 관리하기 위하여 OS(34)에 의하여 사용되는 EPROCESS 구조 부분을 포함한다. 주소(60p)는 예를 들어서 타겟 프로세스의 시작을 중간차단함으로써 결정될 수 있다(예를 들어서, 도 8의 단계 332 참조). EPROCESS 데이터 구조의 필드는 타겟 프로세스의 프로세스 환경 블록(process environment block, PEB)의 표시자(예를 들어서, 포인터)를 유지(holding)한다. 포인터는 OS(34)에 의해서 타겟 프로세스로 할당된 프로세스 가상 메모리(214e) 내의 가상 주소(60q)를 표시한다. 또한, PEB 구조는 타켓 프로세스에 의해 로딩된 실행 가능 모듈(예를 들어서 라이브러리)에 대한 정보를 포함하는 구조의 포인터(LDR 데이터)를 포함한다. LDR 데이터는 공간(214e) 내의 주소(60r)에 위치한다. OS(34)에 의해 설정된 프로세스 관리 데이터 구조의 계층을 검색(walking)함으로써 인트로스펙션 엔진(40)은 따라서 인트로스펙션을 위해 타게팅된 객체들의 복수의 가상 주소를 결정할 수 있다. 그러한 주소에 위치한 메모리 페이지들의 콘텐트가 RAM으로부터 스왑아웃될 때 엔진(40)은 OS(34)로 하여금 본 명세서에서 설명된 방법을 사용하여 개별 페이지를 스왑하도록 할 수 있다.
상술한 예시적 시스템과 방법은 가상화 기술을 사용하여 멀웨어로부터 호스트 시스템을 보호할 수 있게 한다. 일부 실시예에서, 메모리 인트로스펙션 엔진은 호스트 시스템에서 실행되는 가상 머신 하에서 작동한다. 메모리 인트로스펙션 엔진은 개별 가상 머신 내에서 실행되는 프로세스에 의해서 사용되는 메모리 페이지의 콘텐트를 분석함으로써 가상 머신을 보호할 수 있다. 인트로스펙션 엔진은 따라서 각 VM의 외부로부터 개별 프로세스의 코드가 멀웨어를 포함하는지 여부를 판단할 수 있다.
일부 실시예에서, 인트로스펙션 엔진은 또한 특히, 특정 드라이버와 페이지 테이블과 같은 일부 중요 객체들의 (예를 들어서 멀웨어에 의한) 비인가 수정을 방지할 수 있다. 그러한 객체를 보호하기 위하여, 일부 실시예들은 개별 객체에 할당된 메모리 페이지에 쓰려는 시도를 중간차단함으로써 변경을 방지할 수 있다. 그러한 중간차단은 하이퍼바이저의 레벨로부터 수행될 수 있다.
종래의 안티-멀웨어 시스템들에서, 보안 어플리케이션들은 운영 시스템의 레벨이나 공통 어플리케이션들의 레벨과 유사한 프로세서 권한 레벨에서 실행된다. 그러한 시스템들은 운영 시스템의 권한 레벨에서 또한 작동하는 최신의 멀웨어에 취약할 수 있다. 반대로, 본 발명의 일부 실시예에서 하이퍼바이저는 운영 시스템을 가상 머신에 위치시키는 최상의 권한 레벨(예를 들어서, 루트 모드 또는 링-1)에서 실행된다. 메모리 인트로스펙션 엔진은 하이퍼바이저와 동일한 프로세서 권한 레벨에서 실행될 수 있다. 안티-멀웨어 작업은 따라서 운영 시스템의 레벨보다 높은 프로세서 권한 레벨로부터 수행될 수 있다. 일부 실시예에서, 단일의 메모리 인트로스펙션 엔진은 개별 컴퓨터 시스템에서 동시세 실행되는 복수의 가상 머신을 보호할 수 있다.
메모리 인트로스펙션 엔진이 보호를 위해 타겟팅된 가상 머신 밖에서 실행되더라도 엔진은 피보호 VM 내에서 작동하는 소프트웨어 객체들에 의해서 사용되는 가상 주소를 결정할 수 있다. 그러나, 그러한 가상 주소가 운영 시스템에 의하여 메모리로부터 현재 스왑아웃된 페이지들의 콘텐트를 가리킬 때, 메모리 인트로스펙션 엔진은 각 콘텐트에 접근권을 가지지 않는다. 본 발명의 일부 실시예에서, 페이지가 현재 스왑아웃될 때, 메모리 인트로스펙션 엔진은 OS로 하여금 각 페이지를 스왑인하도록 할 수 있어서, 개별 페이지의 콘텐트를 분석 및/또는 보호에 이용가능하도록 할 수 있다. 스왑인이 일어나도록 하기 위하여 메모리 인트로스펙션 엔진은 개별 가상 머신의 가상화된 프로세서 내에서 페이지 오류 예외와 같은 프로세서 이벤트를 촉발할 수 있고, 여기서 프로세서 이벤트는 운영 시스템으로 하여금 스왑아웃된 페이지를 다시 메모리로 되돌리게 할 수 있도록 구성된다. 프로세서 이벤트를 촉발하는 것은, 예를 들어서 개별 가상 머신에 의하여 사용되는 가상 머신 제어 구조의 제어 비트 세트에 쓰는 것을 포함할 수 있다. 따라서, 메모리 인트로스펙션 엔진은 따라서 OS 또는 개별 VM 내에서 실행되는 다른 소프트웨어의 도움 없이 개별 가상 머신 내로 페이지 오류를 삽입할 수 있다.
상기의 실시예들이 본 발명의 범위를 벗어나지 않는다면 다양한 방법으로 변경될 수 있음은 통상의 기술자에게 당연한 것이다. 따라서 본 발명의 범위는 이하의 청구항과 그들의 법적 균등물에 의해서 결정되어야 한다.
Claims (25)
- 하이퍼바이저와 메모리 인트로스펙션 엔진을 작동시키도록 구성된 하드웨어 프로세서를 포함하는 호스트 시스템으로서,
상기 하이버파이저는 가상화된 프로세서와 가상화된 메모리를 포함하는 가상 머신(virtual machine)을 노출시키도록 구성되고, 상기 가상 머신은 타겟 프로세스를 실행하기 위하여 상기 가상화된 프로세서를 채용하도록 구성되고,
상기 메모리 인트로스펙션 엔진은 상기 가상 머신 밖에서 실행되고 상기 가상 머신의 페이지 테이블에 따라서 상기 타겟 프로세스의 가상 메모리 공간의 타겟 페이지가 상기 가상화된 메모리로부터 스왑아웃(swap-out)되는지 결정하고, 응답으로, 상기 타겟 페이지가 상기 가상화된 메모리로부터 스왑아웃될 때, 상기 가상 머신 내로 페이지 오류(page fault)를 직접 삽입(inject)해서 상기 페이지 오류가 상기 가상 머신의 운영 시스템으로 하여금 상기 타켓 페이지를 상기 가상화된 메모리의 페이지로 맵핑하도록 구성하도록 형성되는 것을 특징으로 하는 호스트 시스템. - 제1항에 있어서,
상기 페이지 오류를 직접 삽입하는 것은 상기 가상화된 프로세서를 작동시키기 위하여 상기 하이퍼바이저에 의하여 사용되는 데이터 구조를 수정하는 것을 포함하는 것을 특징으로 하는 호스트 시스템. - 제2항에 있어서,
상기 데이터 구조는 상기 가상화된 프로세서에 할당된 가상 머신 제어 구조(virtual machine control structure, VMCS)를 포함하는 것을 특징으로 하는 호스트 시스템. - 제1항에 있어서,
상기 페이지 오류를 직접 삽입하는 것은 상기 메모리 인트로스펙션 엔진이 상기 가상하된 프로세서의 레지스터에 상기 타겟 페이지의 가상 주소를 쓰는 것을 포함하는 것을 특징으로 하는 호스트 시스템. - 제1항에 있어서,
상기 메모리 인트로스펙션 엔진은 추가적으로, 상기 페이지 오류를 직접 삽입하기 위한 준비로서 삽입 조건이 상기 가상화된 프로세서의 현재 상태에 따라서 만족되는지 결정하고, 응답으로 상기 삽입 조건이 만족될 때 상기 페이지 오류를 직접 삽입하도록 구성되는 것을 특징으로 하는 호스트 시스템. - 제5항에 있어서,
상기 이벤트 삽입 조건이 만족되는지 여부를 결정하는 것은 상기 가상화된 프로세서의 차단 요청 레벨(IRQL)을 결정하는 것을 포함하는 것을 특징으로 하는 호스트 시스템. - 제5항에 있어서,
상기 이벤트 삽입 조건이 만족되는지 여부를 결정하는 것은 상기 가상화된 프로세서가 현재 실행중인 권한 레벨을 결정하는 것을 포함하는 것을 특징으로 하는 호스트 시스템. - 제5항에 있어서,
상기 이벤트 삽입 조건이 만족되는지 여부를 결정하는 것은 상기 가상화된 프로세서의 현재 실행 콘텍스트를 결정하는 것을 포함하는 것을 특징으로 하는 호스트 시스템. - 제1항에 있어서,
상기 메모리 인트로스펙션 엔진은 상기 페이지 오류를 직접 삽입하는 것에 응답으로 추가적으로 상기 타겟 페이지의 페이지 테이블 엔트리의 수정을 탐지하도록 구성되고, 또한 응답으로 상기 타겟 페이지가 상기 수정에 따라서 상기 가상화된 메모리의 페이지로 맵핑되었는지를 결정하도록 구성되는 것을 특징으로 하는 호스트 시스템. - 제1항에 있어서,
상기 메모리 인트로스펙션 엔진은 상기 타겟 프로세스가 상기 타겟 페이지의 콘텐트에 따라서 악성인지 여부를 결정하도록 추가적으로 구성되는 것을 특징으로 하는 호스트 시스템. - 제1항에 있어서,
상기 메모리 인트로스펙션 엔진은 상기 타겟 페이지의 콘텐트를 수정하는 시도를 중간차단하도록 추가적으로 구성되는 것을 특징으로 하는 호스트 시스템. - 제1항에 있어서,
상기 메모리 인트로스펙션 엔진은 상기 타겟 페이지가 상기 가상화된 메모리로부터 스왑아웃되는지를 결정하기 위한 준비로서 추가적으로, 상기 가상 머신 내에서 상기 타겟 프로세스의 개시를 나타내는 상기 가상화된 프로세서의 이벤트를 탐지하도록 구성되고, 응답으로 상기 이벤트에 따라서 상기 타겟 페이지의 가상 주소를 결정하도록 구성되는 것을 특징으로 하는 호스트 시스템. - 하이퍼바이저를 실행하기 위하여 호스트 시스템의 적어도 하나의 하드웨어 프로세서를 채용하는 단계(이 때 상기 하이퍼바이저는 가상화된 프로세서와 가상화된 메모리를 포함하는 가상 머신을 노출하도록 구성되고, 상기 가상 머신은 또한 타겟 프로세스를 실행하기 위하여 상기 가상화된 프로세서를 채용하도록 추가적으로 구성된다),
상기 타겟 프로세스의 가상 메모리 공간의 타겟 페이지가 상기 가상화된 메모리로부터 스왑아웃되는지 결정하기 위하여 상기 적어도 하나의 하드웨어 프로세서를 채용하는 단계, 및
응답으로 상기 페이지가 상기 가상화된 메모리로부터 스왑아웃될 때 상기 가상 머신 내로 페이지 오류(page fault)를 직접 삽입(inject)해서 상기 페이지 오류가 상기 가상 머신의 운영 시스템으로 하여금 상기 타켓 페이지를 상기 가상화된 메모리의 페이지로 맵핑하도록 상기 적어도 하나의 하드웨어 프로세서를 채용하는 단계를 포함하는 것을 특징으로 하는 방법. - 제13항에 있어서,
상기 페이지 오류를 직접 삽입하는 것은 상기 가상화된 프로세서를 작동시키기 위하여 상기 하이퍼바이저에 의하여 사용되는 데이터 구조를 수정하는 것을 포함하는 것을 특징으로 하는 방법. - 제14항에 있어서,
상기 데이터 구조는 상기 가상화된 프로세서에 할당된 가상 머신 제어 구조(virtual machine control structure, VMCS)를 포함하는 것을 특징으로 하는 방법. - 제13항에 있어서,
상기 페이지 오류를 직접 삽입하는 것은 상기 가상화된 프로세서의 레지스터에 상기 타겟 페이지의 가상 주소를 쓰는 것을 포함하는 것을 특징으로 하는 방법. - 제13항에 있어서,
상기 페이지 오류를 직접 삽입하기 위한 준비로서, 삽입 조건이 상기 가상화된 프로세서의 현재 상태에 따라서 만족되는지 결정하기 위하여 상기 적어도 하나의 하드웨어 프로세서를 채용하는 단계와, 응답으로 상기 삽입 조건이 만족될 때 상기 페이지 오류를 직접 삽입하기 위하여 상기 적어도 하나의 하드웨어 프로세서를 채용하는 단계를 추가적으로 포함하는 것을 특징으로 하는 방법. - 제17항에 있어서,
상기 이벤트 삽입 조건이 만족되는지 여부를 결정하는 단계는 상기 가상화된 프로세서의 차단 요청 레벨(IRQL)을 결정하는 단계를 포함하는 것을 특징으로 하는 방법. - 제17항에 있어서,
상기 이벤트 삽입 조건이 만족되는지 여부를 결정하는 단계는 상기 가상화된 프로세서가 현재 실행중인 권한 레벨을 결정하는 단계를 포함하는 것을 특징으로 방법. - 제17항에 있어서,
상기 이벤트 삽입 조건이 만족되는지 여부를 결정하는 단계는 상기 가상화된 프로세서의 현재 실행 콘텍스트를 결정하는 단계를 포함하는 것을 특징으로 하는 방법. - 제13항에 있어서,
상기 페이지 오류를 직접 삽입하는 것에 응답으로, 상기 타겟 페이지의 페이지 테이블 엔트리의 수정을 탐지하기 위하여 상기 적어도 하나의 하드웨어 프로세서를 채용하는 단계와, 또한 응답으로 상기 타겟 페이지가 상기 수정에 따라서 상기 가상화된 메모리의 페이지로 맵핑되었는지를 결정하기 위하여 상기 적어도 하나의 하드웨어 프로세서를 채용하는 단계를 추가적으로 포함하는 것을 특징으로 하는 방법. - 제13항에 있어서,
상기 타겟 프로세스가 상기 타겟 페이지의 콘텐트에 따라서 악성인지 여부를 결정하기 위하여 상기 적어도 하나의 하드웨어 프로세서를 채용하는 단계를 추가적으로 포함하는 것을 특징으로 하는 방법. - 제13항에 있어서,
상기 타겟 페이지의 콘텐트를 수정하는 시도를 중간차단하도록 상기 적어도 하나의 하드웨어 프로세서를 채용하는 단계를 추가적으로 포함하는 것을 특징으로 하는 방법. - 제13항에 있어서,
상기 타겟 페이지가 상기 가상화된 메모리로부터 스왑아웃되는지를 결정하기 위한 준비로서, 상기 가상 머신 내에서 상기 타겟 프로세스의 개시를 나타내는 상기 가상화된 프로세서의 이벤트를 탐지하도록 상기 적어도 하나의 하드웨어 프로세서를 채용하는 단계와, 응답으로 상기 이벤트에 따라서 상기 타겟 페이지의 가상 주소를 결정하기 위하여 상기 적어도 하나의 하드웨어 프로세서를 채용하는 단계를 추가적으로 포함하는 것을 특징으로 하는 방법. - 호스트 시스템의 적어도 하나의 하드웨어 프로세서에 의하여 실행될 때 상기 호스트 시스템으로 하여금 메모리 인트로스펙션 엔진을 형성하도록 하는 명령(instrucion)들을 저장하는 비-일시적 컴퓨터 판독가능 매체로서,
상기 호스트 시스템은 가상화된 프로세서와 가상화된 메모리를 포함하는 가상 머신을 노출하는 하이퍼바이저를 실행하도록 추가적으로 구성되고, 이 때 상기 가상 머신은 타켓 프로세스를 실행하기 위하여 가상화된 프로세서를 채용하도록 구성되고, 상기 메모리 인트로스펙션 엔진은 상기 가상 머신 밖에서 실행되고,
상기 메모리 인트로스펙션 엔진은, 상기 가상 머신의 페이지 테이블에 따라서 상기 타겟 프로세스의 가상 메모리 공간의 타겟 페이지가 상기 가상화된 메모리로부터 스왑아웃(swap-out)되는지 결정하고, 응답으로, 상기 타겟 페이지가 상기 가상화된 메모리로부터 스왑아웃될 때, 상기 가상 머신 내로 페이지 오류(page fault)를 직접 삽입(inject)해서 상기 페이지 오류가 상기 가상 머신의 운영 시스템으로 하여금 상기 타켓 페이지를 상기 가상화된 메모리의 페이지로 맵핑하도록 구성되는 것을 특징으로 하는, 비-일시적 컴퓨터 판독가능 매체.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361847538P | 2013-07-17 | 2013-07-17 | |
US61/847,538 | 2013-07-17 | ||
US14/289,163 US9507727B2 (en) | 2013-07-17 | 2014-05-28 | Page fault injection in virtual machines |
US14/289,163 | 2014-05-28 | ||
PCT/RO2014/000018 WO2015152747A2 (en) | 2013-07-17 | 2014-07-02 | Page fault injection in virtual machines |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160033689A true KR20160033689A (ko) | 2016-03-28 |
KR101955189B1 KR101955189B1 (ko) | 2019-03-08 |
Family
ID=52344738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167000715A KR101955189B1 (ko) | 2013-07-17 | 2014-07-02 | 스왑 아웃된 메모리 페이지의 가상 머신 가상화된 메모리로의 맵핑을 위한 가상 머신에서의 페이지 오류 삽입 |
Country Status (13)
Country | Link |
---|---|
US (1) | US9507727B2 (ko) |
EP (1) | EP3022648B8 (ko) |
JP (1) | JP6411494B2 (ko) |
KR (1) | KR101955189B1 (ko) |
CN (1) | CN105393229B (ko) |
AU (1) | AU2014389571B2 (ko) |
CA (1) | CA2915646C (ko) |
ES (1) | ES2639500T3 (ko) |
HK (1) | HK1216679A1 (ko) |
IL (1) | IL243122B (ko) |
RU (1) | RU2659472C2 (ko) |
SG (1) | SG11201510735RA (ko) |
WO (1) | WO2015152747A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200135715A (ko) * | 2019-05-24 | 2020-12-03 | 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. | 데이터 처리 방법, 장치, 기기 및 매체 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9612865B2 (en) | 2015-06-15 | 2017-04-04 | International Business Machines Corporation | Managed services coordinator |
US9898322B2 (en) * | 2015-10-29 | 2018-02-20 | International Business Machines Corporation | Steganographic message passing between a virtual machine and a hypervisor |
WO2017131780A1 (en) * | 2016-01-29 | 2017-08-03 | Hewlett Packard Enterprise Development Lp | Identifying object modifications |
US10116630B2 (en) * | 2016-04-04 | 2018-10-30 | Bitdefender IPR Management Ltd. | Systems and methods for decrypting network traffic in a virtualized environment |
US10528476B2 (en) * | 2016-05-24 | 2020-01-07 | International Business Machines Corporation | Embedded page size hint for page fault resolution |
US10264002B2 (en) * | 2016-07-14 | 2019-04-16 | Mitsui Bussan Secure Directions, Inc. | Program, information processing device, and information processing method |
US10346050B2 (en) | 2016-10-26 | 2019-07-09 | International Business Machines Corporation | Virtualization of memory compute functionality |
US10635479B2 (en) * | 2016-12-19 | 2020-04-28 | Bitdefender IPR Management Ltd. | Event filtering for virtual machine security applications |
US20180267818A1 (en) * | 2017-03-17 | 2018-09-20 | Nicira, Inc. | Hypervisor-assisted approach for locating operating system data structures based on notification data |
US10489185B2 (en) * | 2017-03-17 | 2019-11-26 | Nicira, Inc. | Hypervisor-assisted approach for locating operating system data structures based on attribute matching |
US11150929B2 (en) | 2018-05-29 | 2021-10-19 | Red Hat, Inc. | Enhanced memory management for virtual machines |
US20220131897A1 (en) * | 2020-10-22 | 2022-04-28 | G14 Solutions LLC. | Memory decoys |
CN112256404B (zh) * | 2020-11-17 | 2024-04-05 | 杭州安恒信息技术股份有限公司 | 一种虚拟机自省方法、装置、设备及介质 |
US11550673B2 (en) * | 2020-11-17 | 2023-01-10 | Google Llc | Virtual machines recoverable from uncorrectable memory errors |
US11586513B2 (en) | 2020-11-17 | 2023-02-21 | Google Llc | Live migrating virtual machines to a target host upon fatal memory errors |
US11816498B2 (en) * | 2021-01-21 | 2023-11-14 | Nutanix, Inc. | Early event-based notification for VM swapping |
US11977431B2 (en) | 2022-03-15 | 2024-05-07 | Google Llc | Memory error prevention by proactive memory poison recovery |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10240702A (ja) * | 1997-02-26 | 1998-09-11 | Sony Corp | 並列処理プロセッサおよびその処理方法 |
JP2008501198A (ja) * | 2004-06-30 | 2008-01-17 | インテル・コーポレーション | 仮想マシン環境におけるネストフォールトの支持 |
US20130091318A1 (en) * | 2011-10-11 | 2013-04-11 | Mcafee, Inc. | System and method for critical address space protection in a hypervisor environment |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8291409B2 (en) * | 2006-05-22 | 2012-10-16 | Microsoft Corporation | Updating virtual machine with patch on host that does not have network access |
US7757034B1 (en) | 2006-06-29 | 2010-07-13 | Parallels Software International, Inc. | Expansion of virtualized physical memory of virtual machine |
US7757035B2 (en) * | 2007-06-26 | 2010-07-13 | Intel Corporation | Method for optimizing virtualization technology and memory protections using processor-extensions for page table and page directory striping |
US8819676B2 (en) | 2007-10-30 | 2014-08-26 | Vmware, Inc. | Transparent memory-mapped emulation of I/O calls |
US8244954B2 (en) | 2008-10-10 | 2012-08-14 | International Business Machines Corporation | On-demand paging-in of pages with read-only file system |
US8117373B2 (en) | 2009-04-30 | 2012-02-14 | Kimon Berlin | VM host responding to initiation of a page swap by transferring pages from host-but-non-guest-addressable RAM to host-and-guest-addressable RAM |
EP2449469B1 (en) | 2009-06-29 | 2019-04-03 | Hewlett-Packard Enterprise Development LP | Hypervisor-based management of local and remote virtual memory pages |
US8271450B2 (en) | 2009-10-01 | 2012-09-18 | Vmware, Inc. | Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory |
CN102129531B (zh) * | 2011-03-22 | 2013-07-24 | 北京工业大学 | 一种基于Xen的主动防御方法 |
CN102736969B (zh) * | 2012-05-22 | 2014-12-17 | 中国科学院计算技术研究所 | 一种针对硬件虚拟化的内存监控方法和*** |
US8914458B2 (en) | 2012-09-27 | 2014-12-16 | Mellanox Technologies Ltd. | Look-ahead handling of page faults in I/O operations |
-
2014
- 2014-05-28 US US14/289,163 patent/US9507727B2/en active Active
- 2014-07-02 SG SG11201510735RA patent/SG11201510735RA/en unknown
- 2014-07-02 RU RU2016104469A patent/RU2659472C2/ru active
- 2014-07-02 JP JP2016527974A patent/JP6411494B2/ja active Active
- 2014-07-02 CN CN201480040376.3A patent/CN105393229B/zh active Active
- 2014-07-02 KR KR1020167000715A patent/KR101955189B1/ko active IP Right Grant
- 2014-07-02 EP EP14882801.5A patent/EP3022648B8/en active Active
- 2014-07-02 AU AU2014389571A patent/AU2014389571B2/en active Active
- 2014-07-02 ES ES14882801.5T patent/ES2639500T3/es active Active
- 2014-07-02 WO PCT/RO2014/000018 patent/WO2015152747A2/en active Application Filing
- 2014-07-02 CA CA2915646A patent/CA2915646C/en active Active
-
2015
- 2015-12-15 IL IL24312215A patent/IL243122B/en active IP Right Grant
-
2016
- 2016-04-22 HK HK16104630.0A patent/HK1216679A1/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10240702A (ja) * | 1997-02-26 | 1998-09-11 | Sony Corp | 並列処理プロセッサおよびその処理方法 |
JP2008501198A (ja) * | 2004-06-30 | 2008-01-17 | インテル・コーポレーション | 仮想マシン環境におけるネストフォールトの支持 |
US20130091318A1 (en) * | 2011-10-11 | 2013-04-11 | Mcafee, Inc. | System and method for critical address space protection in a hypervisor environment |
Non-Patent Citations (1)
Title |
---|
Joshi, A. et al, "Detecting Past and Present Intrusions through Vulnerability-Specific Predicates", Proceedings of the Twentieth ACM Symposium on Operating Systems Principles, pp. 91-104(2005.10.)* * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200135715A (ko) * | 2019-05-24 | 2020-12-03 | 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. | 데이터 처리 방법, 장치, 기기 및 매체 |
Also Published As
Publication number | Publication date |
---|---|
US9507727B2 (en) | 2016-11-29 |
US20150026807A1 (en) | 2015-01-22 |
WO2015152747A3 (en) | 2015-12-03 |
HK1216679A1 (zh) | 2016-11-25 |
RU2016104469A (ru) | 2017-08-22 |
IL243122B (en) | 2019-11-28 |
KR101955189B1 (ko) | 2019-03-08 |
AU2014389571A1 (en) | 2016-01-21 |
CN105393229A (zh) | 2016-03-09 |
ES2639500T3 (es) | 2017-10-26 |
SG11201510735RA (en) | 2016-02-26 |
AU2014389571B2 (en) | 2019-05-09 |
EP3022648A2 (en) | 2016-05-25 |
EP3022648B8 (en) | 2017-08-02 |
RU2659472C2 (ru) | 2018-07-02 |
CN105393229B (zh) | 2019-01-18 |
JP6411494B2 (ja) | 2018-10-24 |
CA2915646A1 (en) | 2015-10-08 |
CA2915646C (en) | 2020-08-25 |
EP3022648B1 (en) | 2017-06-14 |
JP2016525255A (ja) | 2016-08-22 |
WO2015152747A2 (en) | 2015-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101955189B1 (ko) | 스왑 아웃된 메모리 페이지의 가상 머신 가상화된 메모리로의 맵핑을 위한 가상 머신에서의 페이지 오류 삽입 | |
US10296470B2 (en) | Systems and methods for dynamically protecting a stack from below the operating system | |
KR101863174B1 (ko) | 가상 머신의 일체성 보호를 위한 메모리 인트로스펙션 엔진 | |
KR102189296B1 (ko) | 가상 머신 보안 어플리케이션을 위한 이벤트 필터링 | |
JP6378758B2 (ja) | 仮想マシンにおけるマルウェア検出のためのプロセス評価 | |
US9129106B2 (en) | Systems and methods for secure in-VM monitoring | |
US20160210069A1 (en) | Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine | |
US20150379265A1 (en) | Systems And Methods For Preventing Code Injection In Virtualized Environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |