KR20190096959A - 가상 머신 보안 어플리케이션을 위한 이벤트 필터링 - Google Patents

가상 머신 보안 어플리케이션을 위한 이벤트 필터링 Download PDF

Info

Publication number
KR20190096959A
KR20190096959A KR1020197013274A KR20197013274A KR20190096959A KR 20190096959 A KR20190096959 A KR 20190096959A KR 1020197013274 A KR1020197013274 A KR 1020197013274A KR 20197013274 A KR20197013274 A KR 20197013274A KR 20190096959 A KR20190096959 A KR 20190096959A
Authority
KR
South Korea
Prior art keywords
attempt
eligible
determining whether
response
memory
Prior art date
Application number
KR1020197013274A
Other languages
English (en)
Other versions
KR102189296B1 (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 비트데펜더 아이피알 매니지먼트 엘티디
Publication of KR20190096959A publication Critical patent/KR20190096959A/ko
Application granted granted Critical
Publication of KR102189296B1 publication Critical patent/KR102189296B1/ko

Links

Images

Classifications

    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Multimedia (AREA)
  • Storage Device Security (AREA)
  • Burglar Alarm Systems (AREA)
  • Alarm Systems (AREA)

Abstract

설명된 시스템 및 방법은 악성 소프트웨어로부터 하드웨어 가상화를 보호할 수 있게 한다. 일부 실시예들은 하이브리드 이벤트 통지/분석 시스템을 사용하며, 여기서, 보호되는 가상 머신(virtual machine, VM) 내에서 실행되는 제1 구성 요소는 메모리 액세스 허가 위반에 의해 트리거되는 프로세서 예외를 위한 핸들러로서 등록되고, 개별 VM 외부에서 실행되는 제2 구성 요소는 VM 종료 이벤트를 위한 핸들러로서 등록된다. 상기 제1 구성 요소는 규칙들의 세트에 따라 허가 위반 이벤트를 필터링하고, 보안과 관련 있는 것으로 간주되는 이벤트에 대해서만 상기 제2 구성 요소에 통지한다. 상기 제2 구성 요소는 악성 소프트웨어를 탐지하기 위하여 통지된 이벤트를 분석한다.

Description

가상 머신 보안 어플리케이션을 위한 이벤트 필터링
본 출원은 2016년 12월 19일에 출원된 미합중국 가특허출원 번호 제62,436,027호(발명의 명칭 "가상 머신에서 컴퓨터 보안 작동을 가속화하기 위한 이벤트 필터(Event Filter for Accelerating Computer Security Operations in Virtual Machines)")의 출원일에 대한 우선권을 주장하며 그 전체 내용은 본 명세서에서 참조로서 포함된다.
본 발명은 컴퓨터 보안 시스템 및 방법에 대한 것이며, 구체적으로는 악성 소프트웨어에 대해서 가상 머신을 보호하기 위한 시스템 및 방법에 대한 것이다.
멀웨어로도 알려진 악성 소프트웨어는 세계적으로 많은 수의 컴퓨터 시스템에 영향을 주고 있다. 멀웨어는 컴퓨터 바이러스, 루트킷(rootkit), 스파이웨어, 및 랜섬웨어(ransomware)와 같은 많은 형태로, 수백만의 컴퓨터 사용자에게 심각한 위협이 되고 있으며, 무엇보다도 데이터 및 민감한 정보의 손실, 신원 도용, 및 생산성 손실에 있어 이들을 취약하게 하고 있다. 컴퓨터 보안 소프트웨어는 멀웨어로부터 컴퓨터 시스템을 보호하기 위해 사용될 수 있다.
하드웨어 가상화 기술은 많은 방면에서 물리적 컴퓨터 시스템으로 거동하는, 보통 가상 머신(virtual machine, VM)으로 알려진 시뮬레이티드 컴퓨터 환경(simulated computer environment)의 생성이 가능하게 한다. 서버 통합 및 서비스로서의 인프라스트럭쳐(infrastructure-as-a-service)(일반명 "클라우드 컴퓨팅"으로도 알려져 있음)와 같은 일반적인 어플리케이션에서, 몇몇 가상 머신은 동일한 컴퓨터 시스템 상에서 동시에 실행될 수 있어서, 하드웨어 자원을 그들 사이에서 공유함으로써, 투자 및 운영 비용을 줄일 수 있다. 각각의 가상 머신은 다른 가상 머신들과 별개로 고유의 운영 시스템 및/또는 소프트웨어 어플리케이션을 구동할 수 있다. 각각의 그러한 VM은 잠재적으로 컴퓨터 보안 위협들로부터의 보호를 필요로 한다.
컴퓨터 보안 소프트웨어를 보호되는 가상 머신 외부에 위치시키는 것은 일반적으로 고도의 보호를 보장한다. 그러나, 컴퓨터 보안 소프트웨어의 작동은 가상화되지 않은 환경과 비교하여, 그러한 구성에서 수행될 때 실질적으로 훨씬 복잡하고 컴퓨팅 비용이 높다. 종래의 하드웨어 가상화 안티-멀웨어 시스템에서, 보호되는 VM 내에서 발생하는 보안 관련 이벤트는 통상적으로 하드웨어 프로세서로 하여금 개별 VM의 실행을 중단시키도록 하고, 보호되는 VM 외부의 보안 소프트웨어를 실행하는 것으로 전환시키도록 한다. 프로세서는 그러고 나서 이벤트 분석에 응답하여 보호되는 VM을 다시 실행으로 전환시킬 수 있다. 빈번한 VM 중단/재개 사이클은 상당한 컴퓨팅 비용이 수반되며, 생산성 및 사용자 경험에 영향을 미칠 수 있다.
하드웨어 가상화 플랫폼에서 컴퓨터 보안 작동의 효율을 향상시키는데 상당한 관심이 있다.
일 태양에 따르면, 호스트 시스템은 하드웨어 프로세서 및 메모리를 포함한다. 상기 하드웨어 프로세서는 가상 머신(virtual machine, VM), 이벤트 필터 및 인트로스펙션 엔진을 실행하도록 구성되고, 상기 이벤트 필터는 상기 VM 내에서 실행되고, 상기 인트로스펙션 엔진은 상기 VM의 밖에서 실행된다. 상기 하드웨어 프로세서는 추가적으로, 메모리 액세스 허가를 위반하는 방식으로 메모리 위치에 액세스하려는, 상기 VM 내에서 실행되는 소프트웨어 엔터티에 의한 시도를 탐지하는 것에 응답하여 제1 예외(exception)를 생성하고, 상기 제1 예외에 응답하여, 상기 소프트웨어 엔터티를 실행하는 것에서 상기 이벤트 필터를 실행하는 것으로 전환하도록 구성된다. 상기 하드웨어 프로세서는 추가적으로, 제2 예외에 응답하여, 상기 이벤트 필터를 실행하는 것에서 상기 인트로스펙션 엔진을 실행하는 것으로 전환하도록 구성된다. 상기 이벤트 필터는, 상기 제1 예외에 응답하여, 상기 시도가 상기 인트로스펙션 엔진에 통지하기에 적격한지 여부를 이벤트 적격성 기준에 따라 결정하도록 구성된다. 상기 이벤트 필터는 추가적으로, 상기 시도가 통지하기에 적격한지 여부를 결정하는 것에 응답하여, 상기 시도가 적격한 경우, 상기 프로세서로 하여금 상기 제2 예외를 생성하도록 하고, 그리고 상기 시도가 적격하지 않은 경우, 상기 프로세서가 상기 제2 예외를 생성하는 것을 방지하고, 대신에 상기 프로세서로 하여금 상기 소프트웨어 엔터티를 실행하는 것을 재개하도록 구성된다. 상기 인트로스펙션 엔진은 상기 시도가 악성인지를 결정하도록 구성된다.
다른 태양에 따르면, 방법은 컴퓨터 보안 위협으로부터 호스트 시스템을 보호한다. 상기 호스트 시스템은 하드웨어 프로세서 및 메모리를 포함하고, 상기 하드웨어 프로세서는 가상 머신(virtual machine, VM), 이벤트 필터 및 인트로스펙션 엔진을 실행하도록 구성되고, 상기 이벤트 필터는 상기 VM 내에서 실행되고, 상기 인트로스펙션 엔진은 상기 VM의 밖에서 실행된다. 상기 방법은: 메모리 액세스 허가를 위반하는 방식으로 메모리 위치에 액세스하려는, 상기 VM 내에서 실행되는 소프트웨어 엔터티에 의한 시도를 탐지하는 것에 응답하여 제1 예외(exception)를 생성하도록 상기 하드웨어 프로세서를 구성하는 것을 포함한다. 상기 방법은 추가적으로, 상기 제1 예외에 응답하여, 상기 소프트웨어 엔터티를 실행하는 것에서 상기 이벤트 필터를 실행하는 것으로 전환하도록, 그리고 제2 예외에 응답하여, 상기 이벤트 필터를 실행하는 것에서 상기 인트로스펙션 엔진을 실행하는 것으로 전환하도록 상기 하드웨어 프로세서를 구성하는 것을 포함한다. 상기 방법은 추가적으로, 상기 제1 예외에 응답하여, 상기 시도가 상기 인트로스펙션 엔진에 통지하기에 적격한지 여부를 이벤트 적격성 기준에 따라 결정하기 위해 상기 이벤트 필터를 채용하는 것을 포함한다. 상기 방법은 추가적으로, 상기 시도가 통지하기에 적격한지 여부를 결정하는 것에 응답하여, 상기 시도가 적격한 경우, 상기 프로세서로 하여금 상기 제2 예외를 생성하도록 하고, 그리고 상기 시도가 적격하지 않은 경우, 상기 프로세서가 상기 제2 예외를 생성하는 것을 방지하고, 대신에 상기 프로세서로 하여금 상기 소프트웨어 엔터티를 실행하는 것을 재개하도록 하는 것을 포함한다. 상기 방법은 추가적으로, 상기 제2 예외에 응답하여, 상기 시도가 악성인지를 결정하기 위해 상기 인트로스펙션 엔진을 채용하는 것을 포함한다.
또 다른 태양에 따르면, 비-일시적 컴퓨터 판독가능 매체(non-transitory computer-readable medium)는 가상 머신(virtual machine, VM)을 노출하는 호스트 시스템의 하드웨어 프로세서에 의하여 실행될 때, 상기 호스트 시스템으로 하여금 이벤트 필터 및 인트로스펙션 엔진을 형성하도록 하는 명령들을 저장하며, 상기 이벤트 필터는 상기 VM 내에서 실행되고, 상기 인트로스펙션 엔진은 상기 VM의 밖에서 실행된다. 상기 인트로스펙션 엔진은, 메모리 액세스 허가를 위반하는 방식으로 메모리 위치에 액세스하려는, 상기 VM 내에서 실행되는 소프트웨어 엔터티에 의한 시도를 탐지하는 것에 응답하여 제1 예외(exception)를 생성하도록 상기 하드웨어 프로세서를 구성하도록 구성된다. 상기 인트로스펙션 엔진은 추가적으로, 상기 제1 예외에 응답하여, 상기 소프트웨어 엔터티를 실행하는 것에서 상기 이벤트 필터를 실행하는 것으로 전환하도록, 그리고 제2 예외에 응답하여, 상기 이벤트 필터를 실행하는 것에서 상기 인트로스펙션 엔진을 실행하는 것으로 전환하도록 상기 하드웨어 프로세서를 구성하도록 구성된다. 상기 인트로스펙션 엔진은 추가적으로, 상기 제2 예외에 응답하여, 상기 시도가 악성인지를 결정하도록 구성된다. 상기 이벤트 필터는, 상기 제1 예외에 응답하여, 상기 시도가 상기 인트로스펙션 엔진에 통지하기에 적격한지 여부를 이벤트 적격성 기준에 따라 결정하도록 구성된다. 상기 이벤트 필터는 추가적으로, 상기 시도가 통지하기에 적격한지 여부를 결정하는 것에 응답하여, 상기 시도가 적격한 경우, 상기 프로세서로 하여금 상기 제2 예외를 생성하도록 하고, 그리고 상기 시도가 적격하지 않은 경우, 상기 프로세서가 상기 제2 예외를 생성하는 것을 방지하고, 대신에 상기 프로세서로 하여금 상기 소프트웨어 엔터티를 실행하는 것을 재개하도록 하도록 구성된다.
본 발명의 전술한 태양들 및 장점은 후술하는 상세한 설명 및 도면을 참조로 이해하면 더욱 잘 이해될 것이다.
도 1은 본 발명의 일부 실시예에 따른 호스트 시스템의 예시적인 하드웨어 구성을 보여주는 도면.
도 2는 본 발명의 일부 실시예에 따른, 호스트 시스템 상에서 실행되는 하이퍼바이저에 의하여 노출되는 게스트 가상 머신(VM)들의 세트와, 개별 VM들을 보호하는 보안 구성 요소들의 세트를 보여주는 도면.
도 3은 도 2에 도시된 바와 같은 가상 머신의 구성 내 예시적인 메모리 주소 변환을 보여주는 도면.
도 4는 본 발명의 일부 실시예에 따른 예시적인 페이지 테이블 엔트리를 보여주는 도면.
도 5는 본 발명의 일부 실시예에 따른, 보호되는 게스트 가상 머신 내에서 실행되는 이벤트 필터의 예시적인 구성 요소를 보여주는 도면.
도 6은 본 발명의 일부 실시예에 따라, 호스트 시스템 상에 보안 소프트웨어를 설치하고 개시하기 위하여 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
도 7은 본 발명의 일부 실시예에 따라 이벤트 필터에 의해 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
도 8은 본 발명의 일부 실시예에 따라, 인터셉트된 이벤트가 인트로스펙션 엔진에 통지하기에 적격한지 여부를 결정하기 위하여 이벤트 필터의 적격성 검사기 구성 요소에 의해 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
도 9는 본 발명의 일부 실시예에 따라, 인터셉트된 이벤트가 통지하기에 적격한지 여부를 결정하기 위하여 적격성 검사기에 의해 수행되는 단계들의 다른 예시적인 시퀀스를 보여주는 도면.
도 10은 본 발명의 일부 실시예에 따라 인트로스펙션 엔진에 의해 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
이하의 설명에서, 구조들 사이에서 언급된 모든 연결들은 직접적인 동작 연결들 또는 매개 구조들을 통한 간접적인 동작 연결들일 수 있는 것으로 이해된다. 구성 요소들의 세트는 하나 이상의 구성 요소를 포함한다. 구성 요소의 임의의 열거는 적어도 하나의 구성 요소를 언급하는 것으로 이해된다. 복수의 구성 요소는 적어도 2개의 구성 요소를 포함한다. 달리 요구되지 않는다면, 기술된 어떠한 방법 단계들도 설명된 특정 순서로 반드시 실행될 필요는 없다. 제2 구성 요소로부터 유도되는 제1 구성 요소(예컨대, 데이터)는 제2 구성 요소와 동일한 제1 구성 요소는 물론, 제2 구성 요소 그리고 선택적으로는 다른 데이터를 처리하는 것에 의해 생성된 제1 구성 요소를 포함한다. 파라미터에 따라 결정 또는 판정하는 것은 파라미터에 따라 그리고 선택적으로는 다른 데이터에 따라 결정 또는 판정하는 것을 포함한다. 달리 구체화되지 않는다면, 일부 수량/데이터의 표시자는 수량/데이터 그 자체, 또는 수량/데이터 그 자체와 상이한 표시자일 수 있다. 컴퓨터 보안은 데이터 및/또는 하드웨어로의 의도되지 않았거나 인가 받지 않은 접근에 대해서, 데이터 및/또는 하드웨어의 의도되지 않았거나 인가 받지 않은 수정, 및 데이터 및/또는 하드웨어의 파괴에 대해서 사용자와 장치를 보호하는 것을 포함한다. 컴퓨터 프로그램은 과업을 수행하는 프로세서 명령들의 시퀀스이다. 본 발명의 일부 실시예들에서 설명되는 컴퓨터 프로그램들은 독립형 소프트웨어 개체들 또는 다른 컴퓨터 프로그램들의 서브-개체들(예를 들어, 서브루틴들, 라이브러리들)일 수 있다. 달리 특정되지 않는다면, 프로세스는 어플리케이션이나 또는 운영 시스템의 일부와 같은 컴퓨터 프로그램의 인스턴스(instance)이고, 적어도 실행 쓰레드(execution thread)와 이것에 할당된 가상 메모리 공간을 가지는 특징을 가지며, 개별 가상 메모리 공간의 콘텐트는 실행가능 코드(executable code)를 포함한다. 달리 특정되지 않는다면, 페이지는 호스트 시스템의 물리적 메모리에 개별적으로 맵핑될 수 있는 가상 메모리의 최소 유닛을 나타낸다. 프로그램이 개별 가상 머신의 가상 프로세서 상에서 실행될 때, 프로그램은 가상 머신 내에서 또는 내부에서 실행된다고 일컬어진다. 컴퓨터 판독 가능 매체는 자성, 광, 및 반도체 저장 매체와 같은 비-일시적 매체(non-transitory medium)(예컨대, 하드 드라이브, 광 디스크, 플래시 메모리, DRAM)는 물론, 전도성 케이블 및 파이버 옵틱 링크와 같은 통신 링크들을 포함한다. 일부 실시예들에 따르면, 본 발명은, 그 중에서도, 본원에 설명된 방법들을 수행하기 위해 프로그래밍된 하드웨어(예컨대, 하나 이상의 프로세서들)는 물론, 본원에서 설명된 방법들을 수행하기 위한 명령들을 인코딩하는 컴퓨터-판독 가능 매체를 포함하는 컴퓨터 시스템을 제공한다.
후술하는 설명은 본 발명의 실시예들을 예시적으로 설명하는 것이며, 반드시 제한적인 것은 아니다.
도 1은 본 발명의 일부 실시예에 따른, 컴퓨터 보안 위협으로부터 보호되는 호스트 시스템(10)의 예시적인 하드웨어 구성을 보여준다. 호스트 시스템(10)은 엔터프라이즈 서버와 같은 기업용 컴퓨팅 장치, 또는 개인용 컴퓨터나 태블릿 컴퓨터나 스마트폰과 같은 최종 사용자 장치(end-user device)를 나타낼 수 있다. 다른 예시적인 호스트 시스템들은 게임 콘솔, 스마트 TV와 같은 가전 제품, 웨어러블 컴퓨팅 장치, 또는 메모리와 프로세서를 구비하는 임의의 다른 장치를 포함한다. 호스트 시스템(10)은 특히 브라우저, 워드 프로세싱 어플리케이션 및 전자 통신 (예를 들어, 이메일, 인스턴트 메시징) 어플리케이션과 같은 소프트웨어 어플리케이션의 세트를 실행하는 데 사용될 수 있다. 일부 실시예들에서, 호스트 시스템(10)은 이하에서 보여지는 바와 같이, 하드웨어 가상화를 지원하고 가상 머신들의 세트를 노출하도록 구성될 수 있다.
단순성을 위하여, 도 1은 컴퓨터 시스템을 도시한다. 스마트폰과 태블릿 컴퓨터와 같은 다른 호스트 시스템들의 하드웨어 구성은 다를 수 있다. 시스템(10)은 컨트롤러 허브(24)에 의해 모두 상호연결되어 있는 프로세서(12), 메모리 유닛(18), 입력 장치(14)들 세트, 출력 장치(16)들 세트, 저장 장치(20)들 세트, 및 네트워크 어댑터(22)들 세트를 포함하는 물리적 장치들의 세트를 포함한다. 프로세서(12)는 신호 및/또는 데이터의 세트로 산술 및/또는 논리 연산을 실행하도록 구성된 물리적 장치(예컨대, 반도체 기판에 형성된 멀티-코어 집적 회로, 마이크로프로세서)를 포함한다. 일부 실시예들에서, 이러한 논리 연산들은 프로세서 명령(예를 들어, 머신 코드 또는 다른 유형의 소프트웨어)의 시퀀스 형태로 프로세서(12)에 전달된다. 메모리 유닛(18)은 명령들을 수행하는 동안 프로세서(12)에 의해 액세스되거나 생성되는 데이터/신호들을 저장하는 휘발성 컴퓨터-판독 가능 매체(예컨대, RAM)를 포함할 수 있다.
입력 장치(14)는 사용자가 호스트 시스템(10)으로 데이터 및/또는 명령들을 도입할 수 있게 하는 개별 하드웨어 인터페이스 및/또는 어댑터를 포함하는, 특히 컴퓨터 키보드, 마우스, 및 마이크를 포함할 수 있다. 출력 장치(16)는 특히 모니터와 같은 디스플레이 장치 및 스피커는 물론, 호스트 시스템(10)이 사용자에게 데이터를 통신하게 할 수 있는 그래픽 카드와 같은 하드웨어 인터페이스/어댑터를 포함할 수 있다. 일부 실시예들에서, 입력 장치(14)와 출력 장치(16)는 터치-스크린 장치들의 경우와 같이, 하드웨어의 공통적인 부품을 공유할 수 있다. 저장 장치(20)는 프로세서 명령들 및/또는 데이터의 비휘발성 저장, 판독, 및 기록을 가능하게 하는 컴퓨터-판독 가능 매체를 포함한다. 예시적인 저장 장치(20)는 자기 디스크 및 광 디스크 및 플래시 메모리 장치들은 물론, CD 및/또는 DVD 디스크들 및 드라이브들과 같은 소거 가능 매체를 포함한다. 네트워크 어댑터(22)들 세트는 호스트 시스템(10)이 컴퓨터 네트워크 및/또는 다른 장치들/컴퓨터 시스템들에 연결될 수 있게 한다. 컨트롤러 허브(24)는 프로세서(12)와 장치(14, 16, 18, 20 및 22)들 사이의 통신을 가능하게 하는 복수의 시스템, 주변, 및/또는 칩셋 버스들, 및/또는 다른 모든 회로망을 일반적으로 나타낸다. 예를 들어, 컨트롤러 허브(24)는 특히 메모리 관리 유닛(memory management unit, MMU), 입력/출력(I/O) 컨트롤러, 및 인터럽트 컨트롤러(interrupt controller)를 포함할 수 있다. 다른 예에서, 컨트롤러 허브(24)는 프로세서(12)를 메모리(18)에 연결시키는 노스브리지, 및/또는 프로세서(12)를 장치(14, 16, 20, 및 22)들에 연결시키는 사우스브리지를 포함할 수 있다. 일부 하드웨어 플랫폼에서, MMU는 프로세서(12)와 부분적으로 또는 전체적으로 통합되고, 즉, MMU는 프로세서(12)와 공통의 반도체 기판을 공유한다.
도 2는 본 발명의 일부 실시예에 따라, 컴퓨터 보안 위협에 대하여 가상 머신들의 세트를 보호하기 위해 보안 구성 요소들의 세트가 협력하는 예시적인 구성을 보여준다. 도시된 호스트 시스템(10)은 하이퍼바이저(30)에 의하여 노출되는 게스트 가상 머신(VM)(32a-b)들의 세트를 작동하기 위하여 하드웨어 가상화 기술을 사용한다. 도 2는 단지 2개의 게스트 VM을 보여주는 것으로 도시되어 있으나, 일부 실시예들은 동시에 작동하는 더 많은 VM들을(예를 들어, 수백개) 호스팅할 수 있다. 다수의 가상 머신을 관리하기 위하여 하이퍼바이저를 사용하는 것은, 특히 클라우드 컴퓨팅과 서버 통합과 같은 어플리케이션에서 공통된다. 유명한 하이퍼바이저의 예로는, 특히 VMware Inc.의 VMware vSphere® 및 오픈 소스 Xen 하이퍼바이저가 있다.
가상 머신(Virtual machine, VM)들은 본 기술분야에서 실제 물리적 머신/컴퓨터 시스템의 에뮬레이션(emulation, 모방)으로 알려져 있으며, 운영 시스템 및 다른 어플리케이션을 구동할 수 있다. 일부 실시예들에서, 하이퍼바이저(30)는 가상 프로세서와 가상 컨트롤러와 같은 복수의 가상화된 장치들을 생성하거나 가능하게 하고, 그리고 그러한 가상화된 장치들에 호스트 시스템(10)의 실제의 물리적인 장치들 대신에 소프트웨어를 제공하도록 구성된 소프트웨어를 포함한다. 하이퍼바이저(30)의 그러한 작동은 통상적으로 본 기술분야에서 가상 머신 노출로 알려져 있다. 하이퍼바이저(30)는 통상적으로 복수의 가상 머신에 의한 호스트 시스템(10)의 하드웨어 리소스들의 멀티플렉싱(공유)을 가능하게 한다. 하이퍼바이저(30)는 각각의 게스트 VM(32a-b)이 독립적으로 작동하고 호스트 시스템(10)에서 동시에 실행되는 다른 VM들 실행을 알지 못하도록 호스트 시스템(10)의 하드웨어를 추가적으로 관리할 수 있다.
각각의 가상화된 장치(예를 들어, 프로세서, 입력, 출력, 저장 장치 등)는 호스트 시스템(10)의 개별 물리적 장치의 기능성의 적어도 일부를 에뮬레이팅한다. 예를 들어, 게스트 VM의 가상화된 프로세서 상에서 실행되는 소프트웨어는 가상화된 네트워크 어댑터를 통해 네트워크 트래픽을 전송 및/또는 수신할 수 있다. 일부 예들에서, 하이퍼바이저(30)는 가상화된 장치들의 서브세트만을 각각의 게스트 VM에 노출시킬 수 있다(예를 들어, 가상화된 프로세서, 메모리, 및 컨트롤러 허브의 부분들만). 하이퍼바이저(30)는 또한 선택된 VM에게 호스트 시스템(10)의 일부 하드웨어 장치들의 직접적이고 독점적인 사용권을 줄 수 있다. 그러한 일 예에서, 게스트 VM(32a)(도 2)은 입력 장치(14)들과 출력 장치(16)들의 독점적인 사용권을 가질 수 있고, 가상화된 네트워크 어댑터는 없을 수 있다. 반면, 게스트 VM(32b)은 네트워크 어댑터(들)(22)의 직접적이고 독점적인 사용권을 가질 수 있다. 그러한 구성들은 예를 들어서, Intel®의 VT-d® 기술을 이용하여 실행될 수 있다.
일부 실시예들에서, 각각의 게스트 VM(32a-b)을 노출시키는 것은 개별 게스트 VM의 동작을 관리하기 위하여 하이퍼바이저(30)에 의해 사용되는 데이터 구조를 구성하는 것을 포함한다. 그러한 구조는 본 명세서에서 가상 머신 상태 객체(virtual machine state object, VMSO)로 지칭될 것이다. 예시적인 VMSO는 Intel® 플랫폼의 가상 머신 제어 구조(virtual machine control structure, VMCS)와 AMD® 플랫폼의 가상 머신 제어 블록(virtual machine control block, VMCB)을 포함한다. 일부 실시예들에서, 프로세서(16)는 메모리의 영역을 각 VMSO에 연계시켜서 소프트웨어가 메모리 주소 또는 포인터(예를 들어서, Intel® 플랫폼의 VMCS 포인터)를 사용하여 특정 VMSO를 참조할 수 있다.
각 VMSO는 호스트 시스템(10) 상에 노출된 각각의 가상화된 프로세서의 현재 상태를 나타내는 데이터를 포함할 수 있다. 멀티쓰레딩(multithreading) 구성에서, 하드웨어 프로세서(12)는 복수의 코어(core)를 작업할 수 있고, 각 코어는 다수의 논리 프로세서(logical processor)를 추가적으로 포함하고, 각 논리 프로세서는 다른 논리 프로세서에 독립적이고 다른 논리 프로세서와 함께 실행 쓰레드(execution thread)를 처리할 수 있다. 다수의 논리 프로세서는 일부 하드웨어 리소스들, 예를 들어서, 공통의 MMU를 공유할 수 있다. 멀티쓰레드식 실시예에서, 특징적 VMSO(distinct VMSO)가 각각의 특징적 논리 프로세서(distinct logical processor)를 위해 설치될 수 있다. 개별 VMSO는 게스트 상태 영역(guest state area)과 호스트 상태 영역(host state area)을 포함할 수 있고, 게스트 상태 영역은 개별 VM의 CPU 상태를 가지고 있고, 호스트 상태 영역은 하이퍼바이저(30)의 현재 상태를 저장하고 있다. 일부 실시예들에서, VMSO의 게스트 상태 영역은 특히 개별 VM의 가상 프로세서의 제어 레지스터(예를 들어서, CR0, CR3 등), 명령 포인터(예를 들어서, RIP), 범용 레지스터(예를 들어서, EAX, ECX 등), 및 상태 레지스터(예를 들어서, EFLAGS)의 콘텐트를 포함한다. VMSO의 호스트 상태 영역은 개별 VM에 대하여 주소 변환을 위하여 구성된 페이지 테이블로의 포인터(예를 들어서, Intel® 플랫폼의 EPT 포인터)를 포함할 수 있다.
일부 실시예들에서, 프로세서(12)는 전용 내부 레지스터들/캐시들 내에 VMSO의 일부를 저장할 수 있고, 반면에 개별 VMSO의 다른 부분들은 메모리(18)에 위치할 수 있다. 임의의 주어진 시간에서, 대개 하나의 VMSO(여기서는 현재의 VMSO를 가리킴)는 논리 프로세서에 로딩될 수 있고 현재 개별 논리 프로세서를 제어하고 있는 가상 머신을 식별한다. 프로세서(12)가 제1 VM을 실행하는 것에서 제2 VM 또는 하이퍼바이저(30)를 실행하는 것으로 전환하는 경우, 프로세서(12)는 상기 제1 VM의 현재 상태를 현재 VMSO의 게스트 상태 영역에 저장할 수 있다.
도시된 게스트 VM들 각각은(도 2), 게스트 운영 시스템(operating system, OS)(34a-b)을 각각 실행할 수 있다. 운영 시스템(34a-b)들은 특히 Microsoft Windows®, MacOS®, Linux®, iOS®, 또는 Android®와 같은 널리 이용가능한 임의의 운영 시스템을 포함할 수 있다. 각각의 OS(34a-b)는 개별 VM 내에서 실행되는 어플리케이션들과 개별 VM의 (가상화된) 하드웨어 장치들 사이에 인터페이스를 제공한다. 예시적인 어플리케이션(36a-b)들의 세트는 특히, 워드 프로세싱, 이미지 프로세싱, 미디어 플레이어, 데이터베이스, 캘린더, 개인 연락처 관리, 브라우저, 게임, 보이스 커뮤니케이션, 데이터 통신 및 컴퓨터 보안 어플리케이션과 같은 임의의 소프트웨어 어플리케이션을 일반적으로 나타낸다. 이하의 설명에서, 가상 머신의 가상 프로세서에서 실행되는 소프트웨어는 개별 가상 머신 내에서 실행된다고 생각된다. 예를 들어서, 도 2의 예에서, 어플리케이션(36a)은 게스트 VM(32a) 내에서 실행되는 것으로 생각되고, 반면에 어플리케이션(36b)은 게스트 VM(32b) 내에서 실행되는 것으로 생각된다. 반대로 하이퍼바이저(30)는 게스트 VM(32a-b)들 밖에 또는 아래에서 실행되는 것으로 생각된다.
일부 실시예들에서, 복수의 보안 구성 요소들은 악성 소프트웨어와 같은 컴퓨터 보안 위협에 대해서 게스트 VM(32a-b)들을 보호하기 위하여 협력한다. 도 2는 각각 게스트 VM(32a-b)들 내에서 실행되는 이벤트 필터(42a-b)들의 세트 및 게스트 VM(32a-b)들의 밖에서 실행되는 인트로스펙션 엔진(40)과 같은 보안 구성 요소들을 도시한다. 인트로스펙션 엔진(Introspection engine)(40)은 통지 핸들러(44)를 더 포함할 수 있다. 일부 실시예들에서, 각각의 이벤트 필터(42a-b)는 개별 게스트 VM 내에서 소프트웨어의 실행 동안에 특정 이벤트의 발생을 탐지한다. 필터(42a-b)들에 의해 인터셉트(intercept, 중간차단)된 예시적인 이벤트는 특히 프로세서 예외 및/또는 인터럽트, OS(34a-b)의 특정 함수들을 호출, OS(34a-b)의 레지스트리에 액세스, 원격 위치로부터 파일을 다운로드, 및 파일에 데이터 쓰기를 포함한다. 일부 실시예들에서, 필터(42a-b)들은 개별 운영 시스템의 프로세서 권한 레벨(예를 들어, 커널 모드)에서 실행된다.
이벤트 필터(42a-b)들은 특히 컴퓨터 보안과 관련된 이벤트들의 서브세트를 식별하고, 이벤트들의 선택된 서브세트의 발생에 관하여 인트로스펙션 엔진(40)에 통지하기 위하여, 규칙들의 세트에 따라 탐지된 이벤트들을 필터링한다. 일부 실시예들에서, 인트로스펙션 엔진(40)은 개별 이벤트가 멀웨어 공격을 나타내는지 여부를 결정하기 위하여 수신한 통지를 분석한다. 엔진(40)은 또한 게스트 VM 내에서 실행되는 소프트웨어 객체의 일부를 포함하는 메모리 섹션의 주소를 결정하는 것, 개별 메모리 섹션에 액세스하는 것, 및 개별 메모리 섹션 내에 저장된 콘텐트를 분석하는 것과 같은 다른 보안 관련 동작을 수행할 수 있다. 인트로스펙션 엔진(40)에 의해 수행되는 보안 동작의 다른 예들로는, 예컨대 보호되는 프로세스에 속하는 코드 또는 데이터의 덮어쓰기 방지 및 특정 메모리 페이지에 저장된 코드의 실행 방지와 같은 특정 메모리 섹션으로의 액세스를 인터셉트하는 것 및/또는 제한하는 것이 있다.
단일 인트로스펙션 엔진(40)은 호스트 시스템(10) 상에서 실행되는 다수의 게스트 VM들을 보호할 수 있다. 엔진(40)은 (예를 들어, 라이브러리들의 세트로서) 하이퍼바이저(30)에 통합되거나, 또는 하이퍼바이저(30)와 구별되고 독립적이나 하이퍼바이저(30)의 프로세서 권한 레벨에서 실행되는 컴퓨터 프로그램으로서 전달될 수 있다. 엔진(40)은 (별도의 스케줄링된 실행 쓰레드를 가지는) 프로세스 일 수도 있고, 아닐 수도 있다. 일부 실시예들에서, 엔진(40)은 특정 프로세서 이벤트들에 의해 트리거될 때 실행되는 스케줄링되지 않은 코드 객체들의 컬렉션을 포함한다. 이벤트 필터(42a-b)들 및 인트로스펙션 엔진(40)의 동작은 이하에서 더욱 상술된다.
현대의 프로세서들은 본 기술분야에서 보호 링(protection ring)으로 또한 알려진 프로세서 권한 레벨(processor privilege level)의 계층을 구현한다. 그러한 링 또는 레벨 각각은 개별 링 내에서 실행되는 소프트웨어가 수행하도록 허락된 활동들 및/또는 프로세서 명령들의 세트에 의하여 특징지어진다. 예시적인 권한 레벨들/링들은 사용자 모드(링 3)와 커널 모드(링 0)를 포함한다. 하드웨어 가상화를 지원하도록 구성된 일부 호스트 시스템들은 최고 프로세서 권한(예를 들어서, 링-1, 루트 모드, 또는 Intel® 플랫폼들 상의 VMXroot)를 가지는 추가 링을 포함할 수 있다. 일부 실시예들에서, 하이퍼바이저(30)는 최고 권한 레벨(링-1)에서 프로세서(12)를 제어하고, 따라서 호스트 시스템(10) 상에서 실행되는 다른 소프트웨어에 가상 머신으로서 노출되는 하드웨어 가상화 플랫폼을 생성한다. 도 2의 게스트 OS(34a)와 같은 운영 시스템은 개별 VM의 가상 환경 내에서, 통상적으로 하이퍼바이저(30)보다 낮은 프로세서 권한으로 실행된다(예를 들어서, 링 0 또는 커널 모드에서). 어플리케이션(36a)와 같은 공통의 사용자 어플리케이션들은 통상적으로 OS(34a)보다 낮은 프로세서 권한에서 실행된다(예를 들어서, 링 3 또는 사용자 모드에서). 소프트웨어 객체가 그것에 할당된 보호 링에 의하여 허용되는 것보다 높은 프로세서 권한을 필요로 하는 활동 또는 명령을 실행하려고 시도할 때, 그러한 시도는 통상적으로 상기 활동 각각을 수행할 충분한 권한을 가진 링에서 실행되는 엔터티(예를 들어서, 운영 시스템의 이벤트 필터)로 프로세서(12)의 제어를 넘기는 예외 또는 오류와 같은 프로세서 이벤트를 생성한다.
특히, 일부 프로세서 명령들의 실행은 하이퍼바이저(30)의 권한 레벨(예를 들어, VMXroot)을 필요로 한다. 이러한 명령들의 예는 Intel® 플랫폼 상의 VMCALL을 포함한다. 일부 하드웨어 시스템들에서, 가상 머신 내에서부터 이러한 명령을 호출하면 가상 머신 종료 이벤트(예를 들어, Intel® 플랫폼 상의 VMExit)로 알려진 특정 유형의 오류가 생성된다. VM 종료 이벤트는 개별 가상 머신의 실행을 중단하고, 통상적으로 하이퍼바이저(30)의 프로세서 권한 레벨에서 개별 VM의 밖에서 핸들러 루틴을 실행하도록 프로세서(12)를 전환한다.
일부 하드웨어 플랫폼에서, VM 종료는 메모리 액세스 허가(access permission, 접근 권한)의 위반과 같은, 다른 유형의 이벤트들에 의해 트리거 될 수 있다. 그러한 일 예에서, VM 내에서 실행되는 소프트웨어 객체가 쓰기 금지(non-writable)로 표시된 메모리 페이지에 데이터를 쓰려고 하거나, 또는 실행 금지(non-executable)로 표시된 메모리 페이지로부터의 코드를 실행하려고 시도하는 경우, 프로세서(12)는 페이지 오류(page fault)를 생성할 수 있고, 응답으로 개별 VM의 실행을 중단하고, 하이퍼바이저(30)을 실행하는 것으로 전환한다. 이러한 종료 메커니즘은, 예를 들어, (인트로스펙션 엔진(40)과 같은) 개별 VM의 밖에서 실행되는 컴퓨터 보안 프로그램이 보안 위협에 대해서 가상 머신을 보호할 수 있게 할 수 있다. 일부 실시예들에서, 인트로스펙션 엔진(40)은 VM 안에서 소프트웨어의 실행 중에 발생하는 VM 종료 이벤트를 인터셉트하고, 잠재적으로 VM 내 소프트웨어에 대한 정보 없이도 그러한 이벤트들을 추가 분석할 수 있다. 이벤트가 공격을 나타내는 경우, 엔진(40)은 개별 게스트 VM의 실행을 중단하는 것, 개별 게스트 VM으로의 및/또는 개별 게스트 VM으로부터의 통신을 차단하는 것, 클린업 에이전트를 개별 게스트 VM에 삽입하는 것, 호스트 시스템(10)의 사용자에게 경고하는 것 등과 같은 여러가지 위협 경감 조치를 취할 수 있다.
하드웨어 가상화에 최적화된 현대의 컴퓨팅 플랫폼들은 또한 메모리 액세스 허가의 위반 및/또는 특권 명령(privileged instruction)에 의해 트리거되는 다른 종류의 프로세서 이벤트를 생성하도록 구성된다. 이러한 프로세서 이벤트들은 일반적으로 가상화 예외(예를 들어서, Intel® 플랫폼들 상의 #VE)로 알려져 있고, 프로세서로 하여금 게스트 VM 내에서 소프트웨어를 실행하는 것에서 개별 게스트 VM 내에서 핸들러 루틴을 실행하는 것으로 또한 전환하도록 하여, 일반적으로 VM 종료 이벤트와 연관된 컴퓨팅 비용을 피한다. 일부 프로세서는 다양한 상황에 대한 응답으로 VM 종료 이벤트 또는 가상화 예외를 선택적으로 생성하도록 구성될 수 있다.
가상 머신들은 통상적으로 본 기술분야에서 또한 게스트 물리적 메모리(guest-physical memory)로 알려진 가상화된 물리적 메모리와 함께 작동한다. 가상화된 물리적 메모리는, 예를 들어서, 각 VM에 특정된 주소의 연속적 공간(contiguous space of address)으로서(상기 공간의 부분들이 물리적 메모리(18) 및/또는 물리적 저장 장치(20) 내에서 주소들에 맵핑됨) 실제 물리적 메모리(18)의 추상적 표현(abstract representation)을 포함한다. 현대의 하드웨어 가상화 플랫폼에서, 그러한 맵핑은 통상적으로, 제2 레벨 주소 변환(second level address translation, SLAT)으로 알려진, 프로세서(12)에 의하여 제어되는, 전용 데이터 구조 및 메커니즘(dedicated data structures and mechanisms)을 통해 달성된다. 유명한 SLAT 구현은 Intel® 플랫폼에서 확장된 페이지 테이블(extended page table, EPT)과 AMD® 플랫폼에서 빠른 가상화 인덱싱(rapid virtualization indexing, RVI)/내포된 페이지 테이블(nested page table, NPT)을 포함한다. 그러한 시스템들에서, 가상화된 물리적 메모리는 당해 기술분야에서 페이지로 알려진 유닛들로 파티션될 수 있고, 여기서 페이지는 SLAT을 통해서 물리적 메모리에 개별적으로 맵핑된 가상화된 물리적 메모리의 최소 유닛을 나타내며, 다시 말해서 물리적 메모리와 가상화된 물리적 메모리 사이의 맵핑은 페이지 단위(page granularity)로 수행된다. 모든 페이지들은 통상적으로 소정의 크기, 예를 들어 4 킬로바이트, 2 메가바이트 등의 크기를 가진다. 가상화된 물리적 메모리를 페이지들로 파티셔닝하는 것은 대개 하이퍼바이저(30)에 의하여 설정된다. 일부 실시예들에서, 하이퍼바이저(30)는 SLAT 구조를 또한 설정하고 따라서 물리적 메모리와 가상화된 물리적 메모리 사이의 맵핑을 설정한다. 일부 실시예들에서, SLAT 데이터 구조에 대한 (예를 들어서, 페이지 테이블에 대한) 포인터는 개별 가상 머신의 VMSO 내에 저장된다. 가상화된 물리적 메모리 주소를 물리적 메모리 주소로 실질적으로 맵핑(변환)하는 것은 호스트 시스템(10)의 변환 색인 버퍼(translation lookaside buffer, TLB)에서 물리적 메모리 주소를 색인(look-up)하는 것을 포함할 수 있다. TLB 미스(TLB miss)의 경우, 주소 변환은 페이지 테이블 및/또는 페이지 디렉토리 세트에서 연속적인 주소 색인의 세트를 포함하는 페이지 검색(page walk)을 수행하는 것과, 페이지의 오프셋(offset)을 각 페이지에 대한 주소에 추가하는 것과 같은 연산을 수행하는 것을 포함한다.
도 3은 도 2에 도시된 바와 같은 실시예에서 메모리 주소의 맵핑을 보여준다. 게스트 VM(32)은 일반적으로 호스트 시스템(10) 상에서 실행되는 임의의 게스트 가상 머신, 예를 들어, 도 2의 VM(32a-b)들을 나타낸다. 하이퍼바이저(30)에 의한 노출 이후에, 게스트 VM(32)은 가상화된 물리적 메모리 공간(118)을 그 자신의 물리적 메모리 공간으로 간주한다. 게스트 VM(32) 내에서 실행되는 소프트웨어 객체(예를 들어서, 프로세스)는 개별 VM의 게스트 OS(34)에 의해서 가상 메모리 공간(218)이 할당된다. 소프트웨어 객체가 공간(218a)의 예시적 메모리 페이지(50a)의 콘텐트에 액세스하려고 시도할 때, 페이지(50a)의 주소는 게스트 OS(34)에 의해서 구성되고 제어되는 페이지 테이블들에 따라서, 게스트 VM(32)의 가상화된 프로세서에 의해 가상화된 물리적 메모리 공간(118)의 페이지(50b)의 주소로 변환된다. 페이지(50b)의 주소는 하이퍼바이저(30)에 의해 구성되는 SLAT을 이용하여 물리적 메모리(18) 내에서 페이지(50c)의 주소로, 물리적 프로세서(16)에 의해서 추가적으로 맵핑된다.
가상 주소 공간(118)은 일반적으로 본 기술분야에서 게스트 물리적 메모리로 알려져 있고, 이러한 하나의 메모리 공간 내의 주소는 게스트 물리적 주소(guest physical address, GPA)로서 지칭된다. 주소 공간(218)은 보통 게스트 가상 메모리(guest-virtual memory)라고 칭해지며, 게스트 가상 주소(guest-virtual addresses, GVA)에 의해 인덱싱된다. 물리적 메모리(18) 내의 주소들은 일반적으로 호스트 물리적 주소(host-physical addresses, HPA)로 지칭된다. 그러므로 도 3의 주소 변환/맵핑(52)은 GVA-GPA 변환으로 칭해진다. 반면, 주소 변환(54)은 일반적으로 GPA-HPA 변환으로 호칭된다.
주소 변환(52 및 54)은 메모리 페이징 메커니즘 및 페이지 테이블의 사용에 의존한다. 페이지 테이블은 일반적으로 가상 및 물리적 메모리 페이지 사이의 맵핑을 페이지 테이블 엔트리의 컬렉션의 형태로 저장하는 데이터 구조이다. 페이지 테이블 엔트리의 형식(format)은 하나의 하드웨어 플랫폼과 또 다른 하드웨어 플랫폼에서 및/또는 하나의 OS 버전과 또 다른 OS 버전에서 달라질 수 있다. 예시적인 페이지 테이블 엔트리(51)가 도 4에 도시되어 있다. 각각의 이러한 페이지 테이블 엔트리는 가상 메모리 페이지에, 예를 들어, 도 3의 메모리 공간(218) 내 페이지(50a)에 대응할 수 있다. 일부 실시예들에서, 페이지 테이블 엔트리(51)는 특히 주소 A 및 플래그 F의 세트를 저장하는 필드들의 세트를 포함한다. 주소 A는 통상적으로 물리적 주소이고, 하드웨어 가상화 플랫폼에서 이는 GPA를 나타낼 수 있다. 계층적 페이지 테이블을 구현하는 시스템에서, 주소 A는 또 다른 페이지 테이블의 주소를 나타낼 수 있다. 플래그 필드의 콘텐트는 구현(implementation)마다 다르다. 일부 실시예들에서, 플래그(flag)는 예를 들어 개별 페이지가 (디스크에 스왑 아웃(swapped out)되는 것과 대조적으로) 메모리 내에 존재하는지, 마지막으로 스왑 인(swapped in) 된 이후에 개별 페이지의 콘텐트가 변경되었는지, 개별 페이지 내 주소에 액세스하려는 시도가 (VMexit 또는 가상화 예외와 같은) 오류를 생성하였는지, 사용자 모드에서 실행되는 프로세스에 의해 개별 페이지가 액세스될 수 있는지 등과 같은 것을 나타내는 컨트롤 비트(control bit)이다. 다른 플래그/컨트롤 비트는 메모리 액세스 허가의 세트를 나타낼 수 있다(예컨대, 읽기, 쓰기, 실행). 일부 실시예들에서, 페이지 테이블 엔트리(51)는 개별 메모리 공간의 식별자(예를 들어, 프로세스 ID) 및/또는 운영 시스템의 메모리 관리 구성 요소에 의해 사용되는 다양한 통계 정보를 추가로 저장할 수 있다.
일부 실시예들에서, 하이퍼바이저(30)는 물리적 메모리(18)의 표현을 포함하는 그 자신의 가상 메모리 공간(318)을 설정하고, 공간(318) 내의 주소를 물리적 메모리(18) 내의 주소로 맵핑하는 변환 메커니즘(예컨대, 페이지 테이블)을 사용한다. 도 3에서, 그러한 예시적인 맵핑은 가상 공간(318) 내에서 페이지(50f)의 주소를 페이지(50c)의 물리적 주소로 변환하고, 페이지(50d)의 주소를 페이지(50e)의 물리적 주소로 변환한다. 이러한 맵핑은 잠재적으로 하이퍼바이저(30)의 프로세서 권한 레벨에서 실행되는 임의의 소프트웨어 객체로 하여금 호스트 시스템(10) 상에서 실행되는 다양한 VM 내에서 실행되는 소프트웨어 객체에 속하는 메모리 페이지들을 관리하도록 한다. 특히 메모리 인트로스펙션 엔진(40)은 게스트 VM(32) 내에서 실행되는 프로세스에 의해 사용되는 물리적 메모리 페이지로의/로부터의 접근 제어, 열거, 읽기, 및 쓰기를 할 수 있다.
도 5는 본 발명의 일부 실시예에 따른 이벤트 필터(42)의 예시적인 구성 요소를 보여준다. 필터(42)는 도 2의 이벤트 필터(42a-b)들 중 임의의 것을 일반적으로 나타낼 수 있다. 일부 실시예들에서, 이벤트 필터(42)는 개별 게스트 VM에 대하여 가상화 예외를 핸들링하도록 구성된 소프트웨어 구성 요소로서 프로세서(12)로 등록된다. 이러한 등록은 개별 게스트 VM 내에서 게스트 프로세스의 실행 중에 발생하는 이벤트가 가상화 예외를 트리거 할 때, 프로세서(12)가 개별 게스트 프로세스의 실행을 중단하고, 필터(42)를 실행하는 것으로 전환하는 것을 의미한다. 필터(42)는 적격성 검사기(46) 및 적격성 검사기(46)에 연결된 통지 생성기(48)를 포함할 수 있다.
일부 실시예들에서, 적격성 검사기(46)는 가상화 예외를 트리거한 이벤트들을 필터링하여, 멀웨를 나타내는 또는 컴퓨터 보안과 관련된 다른 방법으로 간주되는 이벤트들의 서브세트를 생성하도록 구성된다. 예시적인 보안 관련 이벤트는 예를 들어, 페이지 테이블 엔트리의 필드를 덮어쓰기 하려는 시도, 메모리 할당 기능과 같은 중요한 OS 구성 요소를 실행하려는 시도, 특정 메모리 섹션에/섹션으로부터의 코드를 읽기, 쓰기 또는 실행하려는 시도 등과 같은 것을 포함할 수 있다. 통지 생성기(48)는 적격성 검사기(46)에 의해 생성된, 이벤트들의 선택된 서브세트의 발생에 관하여 인트로스펙션 엔진(40)에 통지하도록 구성될 수 있다. 통지 메커니즘은, VMCALL과 같은 특권 프로세서 명령(privileged processor instruction)을 통해 VM 종료 이벤트를 트리거하는 것과 같이, 하드웨어 가상화 기술 분야에 알려져 있는 임의의 방법을 채용할 수 있다. 통지 생성기(48)는 통지된 이벤트의 세부 사항 또는 파라미터와 같은 데이터를, 예를 들어서 필터(42)와 엔진(40) 사이에 공유되는 메모리의 미리 결정된 섹션에 개별 데이터를 기록함으로써, 인트로스펙션 엔진(40)에 전송할 수 있다.
일부 실시예들에서, 이벤트 필터(42)는 가상화 예외를 트리거한 이벤트의 발생을 에뮬레이팅(모방)하도록 구성된 에뮬레이터(emulator)(47)를 추가로 포함한다. 개별 이벤트가 메모리 및/또는 프로세서의 상태에 변화를 유발하기 전에 예외가 일반적으로 트리거되기 때문에 에뮬레이션이 필요할 수 있다. 가상화 예외가 메모리 액세스 허가 위반에 의해 트리거되는 일 예에서, 쓰기 금지로 간주되는 위치에 데이터가 쓰여지도록 하는 MOV와 같은 프로세서 명령은 임의의 데이터가 개별 위치에 쓰여지기 전에 가상화 예외를 생성한다. 단순히 개별 프로세스/어플리케이션을 재개시하면 공격 명령(offending instruction)을 재실행하려고 시도하게 되고, 결과적으로 새로운 예외를 트리거할 수 있다. 이러한 무한 사이클을 벗어나기 위하여, 일부 실시예들은 에뮬레이터(47)를 사용하여 우선적으로 예외를 트리거한 프로세스/어플리케이션을 재개시하기 전 개별 이벤트의 발생을 에뮬레이션한다. 상기 예에서, 에뮬레이터(47)는 MOV 명령의 실제 실행으로부터 초래된 변경에 영향을 미칠 수 있고, 즉, 에뮬레이터(47)는 데이터의 그 의도된 메모리 위치에 실제로 데이터를 기록할 수 있다.
도 6은 본 발명의 일부 실시예에 따른, 호스트 시스템(10) 상에 컴퓨터 보안을 설정(set up)하기 위해 수행되는 단계들의 예시적인 시퀀스를 보여준다. 전형적인 시나리오에서, 시스템 관리자는 보호가 필요한 각각의 호스트 상에 보안 어플리케이션을 설치할 수 있다. 상기 보안 어플리케이션은 하이퍼바이저(30), 인트로스펙션 엔진(40), 이벤트 필터(42) 등과 같은 다양한 구성 요소를 포함할 수 있다. 도시된 단계들의 시퀀스는, 예를 들면 각각의 보안 어플리케이션의 설치자 유틸리티에 의해 수행될 수 있다. 설치자(installer)는 먼저 강한 프로세서 권한 레벨(예를 들어, 루트 모드, 링 -1)에서 프로세서(12)를 인수하고, 하이퍼바이저(30)를 설치할 수 있다. 설치자는 그러고 나서 인트로스펙션 엔진(40)을 개시(launch)할 수 있다.
일부 실시예들에서, 하이퍼바이저(30) 및/또는 인트로스펙션 엔진(40)은 개별 소프트웨어 구성 요소의 신뢰를 확실히 하기 위해 보안 부트 메커니즘(secure boot mechanism) 또는 본 기술분야에 알려져 있는 다른 형태의 인증(authentication)을 사용하여 개시될 수 있다. 보안 부팅(Secure booting)은 원격 인증 서버와의 인증 교환(예를 들어, 해시 확인)을 포함할 수 있다. 예시적인 일 실시예에서, 상기 보안 부트는 Intel® 플랫폼의 신뢰 플랫폼 모듈(Trusted Platform Module, TPM)과 같은 호스트 시스템(10)의 보안 저장 하드웨어 구성 요소를 사용할 수 있고, 또 Intel®의 신뢰 실행 기술(Trusted Execution Technology, TXT)과 같은 무결성 보증 메커니즘(integrity attestation mechanism)을 사용할 수 있다.
각각의 게스트 VM을 개시하는 것에 응답하여, 단계(407)는 개별 VM 내에서 발생하는 가상화 예외들을 핸들링하도록 구성된 이벤트 필터(42)를 설치한다. 일부 실시예들에서, 이벤트 필터(42)는 잠재적으로 악성인 소프트웨어에 의한 필터(42)의 탐지를 피하기 위하여 개별 게스트 VM 내로 은밀히(surreptitiously) 드롭될 수 있다. 이러한 삽입(injection)을 달성하기 위해, 인트로스펙션 엔진(40)은 메모리의 사용되지 않은 섹션 내에서 또는 드라이버와 같은 다른 소프트웨어 객체에 의해 현재 사용되는 메모리 페이지 내에서 필터(42)를 숨길 수 있다.
일부 실시예들에서, 인트로스펙션 엔진은 개별 VM 내에서 실행되는 다른 구성 요소들로부터 필터(42)를 격리시킴으로써 이벤트 필터(42)를 보호한다. 일 예에서, 엔진(40)은 개별 게스트 VM에 의해 사용되는 게스트-물리적 메모리 공간과 구별되는(예를 들어, 도 3에 도시된 바와 같은 실시예에서 공간(118)과 구별되는) 섀도우 메모리 공간(shadow memory space)을 설정하기 위하여 SLAT 수단을 사용한다. 실제로, 그러한 섀도우 메모리 공간을 설정하는 것은 이벤트 필터(42)에 할당된 제2 레벨 페이지 테이블(예를 들어, Intel® 플랫폼 상의 EPT)을 구성하는 엔진(40)을 포함할 수 있다. 고유한 페이지 테이블과 함께 작동하는 것은 VM(32) 내에서 실행되는 임의의 다른 프로세스들로부터 필터(42)를 격리시키는데, 이는 그러한 프로세스들이 이벤트 필터(42)에 속하는 데이터를 수정할 수 없다는 점에서 그렇다는 것이다. 필터(42)를 격리하는 것은, 필터(42)를 실행할 때, 주소 변환을 수행하기 위하여 VM(32)과 관련있는 페이지 테이블을 사용하는 것에서 섀도우 페이지 테이블을 사용하는 것으로 전환하도록 프로세서(12)를 구성하는 것을 추가로 포함할 수 있다. 페이지 테이블을 전환하는 것은 게스트 VM(32)을 종료하지 않고 발생할 수 있고, 그러므로 VM 종료 이벤트의 컴퓨팅 비용이 수반되지 않는다. 페이지 테이블 전환을 달성할 수 있는 일 예는, 전환을 위한 신호(cue)로서 프로세서(12)에 의해 해석될 수 있는 특정 특권 명령(예를 들어, Intel® 플랫폼 상의 VMFUNC)을 발행하는 이벤트 필터(42)를 포함한다.
단계들(408-410)의 시퀀스에서, 인트로스펙션 엔진(40)은 개별 게스트 VM의 보안을 위해 중요한 자산을 저장하는 메모리 페이지들의 세트를 식별하도록 진행할 수 있다. 이러한 자산의 예는, 메모리 할당, 메모리 허가 관리, 및 레지스트리 편집과 같은 동작을 수행하는 OS의 기능에 속하는 코드를 포함한다(예를 들어, NTDLL.DLL 및 KERNEL32.DLL 라이브러리의 선택된 기능). Linux® OS에서, 보안 관련 기능은 LIBC.SO의 선택된 기능을 포함할 수 있다. 보안을 위해 중요한 것으로 간주되는 다른 자산으로는 게스트 VM 내에서 실행되는 프로세스와 연관된 페이지 테이블을 포함한다.
OS의 특정 기능과 같은 일부 자산의 메모리 위치는 OS(34)의 특정 데이터 구조를 파싱(parsing)함으로써 획득될 수 있다. 또한 인트로스펙션 엔진(40)은 개별 게스트 VM 내에서 현재 로딩되거나 및/또는 실행 중인 프로세스들의 세트의 추적을 계속할 수 있다. 일부 실시예들은 본 기술분야에 알려진 임의의 방법을 사용하여, 게스트 VM 내에서 새로운 프로세스/쓰레드의 개시를 나타내는 이벤트에 주목(listen for)할 수 있다. 일부 예시적인 실시예들은 활성 프로세스의 리스트를 관리하는 OS의 메커니즘을 인터셉트한다. 예를 들어, Windows®에서, 프로세스가 생성될 때마다, 개별 프로세스의 표시자는 활성 프로세스의 리스트에 삽입되고; 개별 프로세스의 종료시 상기 표시자는 상기 리스트로부터 제거된다. 일부 실시예들에서, 프로세스를 개시하면, OS(34)가 개별 프로세스에 연계된 리소스들을 관리하기 위하여 OS(34)에 의해서 사용되는 데이터를 포함하는 프로세스 환경 블록(process environment block, PEB)으로 알려진 프로세스 특정 데이터 구조를 또한 설정한다. 활성 프로세스의 리스트에 타겟 프로세스를 삽입하기 위한 OS 명령을 인터셉트함으로써, 엔진(40)은 개별 PEB의 메모리 주소와 같은 추가 정보를 얻을 수 있다. Windows®에서, PEB의 가상 주소는 실행 프로세스 블록(executive process block, EPROCESS)으로 알려진 데이터 구조에 저장된다. 이러한 데이터 구조를 더 파싱함으로써, 인트로스펙션 엔진(40)은 개별 프로세스와 관련된 페이지 테이블의 메모리 위치(예를 들어 x86 플랫폼의 페이지 디렉터리 베이스 레지스터(PDBR, Page Directory Base Register)뿐만 아니라, 개별 프로세스에 의해 로딩된 라이브러리 및/또는 메인 실행 파일(main executable)의 메모리 위치와 같은 정보를 얻을 수 있다.
현재 로딩 및/또는 실행중인 다양한 프로세스들에 대응하는 페이지 테이블 엔트리들의 메모리 위치는, 예를 들어서, 프로세서(12)의 컨트롤 레지스터(예컨대, x86 플랫폼의 CR3 레지스터)의 콘텐트를 판독함으로써 그리고 페이지 테이블 워크(page table walk)를 수행함으로써 얻을 수 있다. 선택적인 실시예는 개별 EPROCESS 구조의 특정 필드로부터 각각의 프로세스와 관련된 페이지 테이블의 주소를 판독할 수 있다.
보안 필수 자산(security-critical asset)의 메모리 위치 결정을 용이하게 하기 위하여, 인트로스펙션 엔진(40)은 필터(42)와 협동하거나 또는 도우미 객체(helper object)를 개별 게스트 VM 내에 드롭할 수 있다. 이러한 전략은 시맨틱 갭(semantic gap)을 연결하기 위해 고안되었다. 통상적으로 개별 VM 내부에서 보다는, 개별 VM의 외부 위치에서 가상 머신의 내부 동작에 관한 정보를 알아내는 것이 훨씬 더 어렵다. VM 내에서 실행되는 이벤트 필터(42)와 같은 구성 요소는 다양한 자산의 메모리 주소와 같은 정보를 얻기 위하여 OS의 설비를 이용할 수 있고, 그러고 나서 상기 정보를 본 명세서에 설명된 통지 메커니즘을 사용하여 인트로스펙션 엔진(40)에 통신할 수 있다.
일부 실시예들에서, 단계(410)에서(도 6), 인트로스펙션 엔진(40) 및/또는 필터(42)는 보호되는 자산의 부분들을 포함하는 메모리 섹션의 열거(enumeration)를 포함하는 보호되는 메모리 섹션의 명단(roster)을 어셈블(assemble) 할 수 있다. 예시적인 명단 엔트리는 섹션의 메모리 주소 (또는 메모리 페이지의 식별자 및 페이지 경계에 대한 오프셋(offset)) 및 개별 섹션의 크기의 표시자를 포함할 수 있다. 메모리 주소는 GPA, HPA, 등을 포함할 수 있다. 보호되는 섹션의 크기는 페이지 크기 보다 작을 수 있다. 명단 엔트리는 개별 섹션(예를 들어, 드라이버, 페이지 테이블, 개인 데이터 등) 내에 저장된 자산 유형의 표시자를 추가로 포함할 수 있다. 명단 엔트리에 자산 유형 표시자를 포함시키는 것은, 예를 들어 사용자의 개인 파일을 보호하는 것과는 다른 방식으로 페이지 테이블을 보호하기 위해, 필터(42)로 하여금 보호되는 자산의 유형에 따라 이벤트 적격성 기준을 선택적으로 적용할 수 있게 함으로써 이벤트 필터(42)의 실행을 용이하게 할 수 있다. 일부 실시예들에서, 명단은 역동적으로 업데이트 된다: 새로운 자산이 나타날 때(예를 들어, 새로운 프로세스 개시를 통해), 보호되는 자산의 부분들을 저장하는 섹션이 식별되고, 명단에 추가된다. 자산이 더 이상 보호를 필요로 하지 않을 때(예를 들어, 프로세스가 종료될 때), 또는 개별 자산이 다른 메모리 위치로 이동할 때, 쓸모 없게 된 섹션에 해당하는 엔트리가 명단으로부터 제거될 수 있다.
보안 필수 객체의 메모리 위치를 결정하는 것에 응답하여, 단계(412)는 보호되는 메모리 섹션에 대한 액세스 허가를 설정할 수 있다. 대부분의 현재 컴퓨팅 시스템에서 허가는 페이지 단위로만 설정될 수 있기 때문에, 단계(412)는 개별 메모리 섹션을 호스팅하는 메모리 페이지에 대한 액세스 허가를 설정하는 것을 포함할 수 있다. 이것은 예를 들어 하이퍼바이저(30)에 의해 구성된 SLAT 메커니즘을 사용하여 행해질 수 있다. 허가는 이벤트 필터(42)로 하여금 부적절하거나 멀웨어를 나타내는 것으로 간주되는 방식으로 보호되는 메모리 섹션에 액세스하려는 시도를 탐지할 수 있도록 설정될 수 있다. 보호되는 섹션으로부터 데이터의 비인가(unauthorized) 읽기를 방지하기 위해(예를 들어, 데이터 절도 또는 랜섬웨어 공격을 피하기 위해), 예시적인 실시예는 개별 데이터를 호스팅하는 메모리 페이지를 읽기 금지로 표시할 수 있다. 개별 페이지로부터 데이터를 읽으려는 시도는 이후 상기 시도의 표시자로서 역할을 할 수 있는 프로세서 예외/오류를 트리거할 것이다. 페이지 테이블 엔트리의 시도 변경을 탐지하기 위하여, 개별 페이지 테이블 엔트리를 호스팅하는 메모리 페이지는 쓰기 금지로 표시될 수 있다. 따라서 개별 메모리 페이지에 기록하려는 임의의 시도는 상기 시도의 탐지를 가능하게 할 것이다. 유사하게, 특정 OS 기능을 실행하려는 시도를 탐지하기 위해, 일부 실시예들은 개별 기능의 코드를 포함하는 페이지를 실행 금지(non-executable)로 표시한다.
일부 실시예들에서, 단계(414)에서(도 6), 인트로스펙션 엔진(40)은 프로세서(12)가 이러한 메모리 액세스 허가 위반에 응답하여 가상화 예외를 트리거하도록 구성할 수 있다. 추가의 단계(416)는 이벤트 필터(42)를 가상화 예외를 위한 핸들러로서 등록하고, 통지 핸들러(44)를 VM 종료 이벤트를 위한 핸들러로서 등록할 수 있다. 이러한 등록에 응답하여, 메모리 액세스 허가 위반은 인트로스펙션 엔진(40)과 대조적으로 이벤트 필터(42)에 의해 핸들링 될 것이다. 한편, VM 종료 이벤트는 통지 핸들러(44)를 통해 인트로스펙션 엔진(40)에 통지될 것이다.
도 7은 본 발명의 일부 실시예에서 이벤트 필터(42)에 의해 수행되는 단계들의 예시적인 시퀀스를 보여준다. 가상화 예외를 위한 핸들러로서 등록되었어서, 이벤트 필터(42)는 게스트 소프트웨어의 실행 동안 가상화 예외를 트리거하는 이벤트의 발생을 탐지한다. 이러한 이벤트를 본 명세서에서는 트리거 이벤트(trigger event)라고 칭한다. 트리거 이벤트를 탐지하는 것에 응답하여, 단계들(436-438)의 시퀀스에서, 필터(42)는 이벤트 파라미터들의 세트뿐만 아니라, 개별 트리거 이벤트의 이벤트 유형을 결정할 수 있다. 일부 실시예들에서, 현재 가상화 예외의 원인의 표시자는 개별 게스트 VM의 VMSO의 특정 필드에 저장된다. 따라서, 이벤트의 성질에 관한 단서가 개별 게스트 VM의 VMSO의 특정 필드로부터 추출될 수 있다. 쓰기 금지로 표시된 페이지에 쓰려고 하는 시도에 의해 예외가 트리거된 예에서, 이벤트 파라미터는 쓰기 시도의 메모리 주소와 프로세서가 개별 메모리 위치에 쓰려고 시도한 값을 포함할 수 있다.
일부 실시예들에서, 이벤트 필터(42)는 보안과 관련 있는 것으로 고려되는 트리거 이벤트들의 서브세트의 발생에 관하여 인트로스펙션 엔진(40)에 선택적으로 통지한다. 이벤트는 적격성 기준의 세트에 따라 선택될 수 있고, 적격하다고 간주되는 이벤트만이 인트로스펙션 엔진(40)에 통신될 수 있다. 인트로스펙션 엔진(40)에 통신하기에 적격하다고 고려되지 않는 트리거 이벤트의 발생을 탐지하는 것에 응답하여, 일부 실시예들은 탐지된 이벤트를 에뮬레이팅하기 위해(도 7의 단계(444)), 에뮬레이터(47)를 채용한다. 이어서 필터(42)는 VM 종료를 트리거하지 않고, 개별 VM 내에서 게스트 소프트웨어의 실행을 재개하기 위하여 프로세서(12)에 신호를 보낼 수 있다. 이벤트가 적격성 기준을 만족하는 경우, 단계(442)에서 일부 실시예들은 VM 종료 이벤트를 생성하고, 따라서 개별 트리거 이벤트의 발생을 인트로스펙션 엔진(40)에 통지한다. VM 종료 이벤트를 생성하는 것은, 예를 들어, Intel® 플랫폼 상의 VMCALL과 같은 특권 프로세서 명령을 발행하는 필터(42)를 포함할 수 있다. 엔진(40)에 이벤트 파라미터를 통신하기 위해, 이벤트 필터(42)의 일부 실시예들은 VM 종료 이벤트를 생성하기 전에 필터(42)와 인트로스펙션 엔진(40) 사이에 공유되는 메모리의 섹션에 개별 파라미터를 기록한다.
도 8 및 도 9는 본 발명의 일부 실시예에 따라, 탐지된 트리거 이벤트가 인트로스펙션 엔진(40)에 통지하기에 적격한지 여부를 결정하기 위하여 적격성 검사기(46)(도 5)에 의해 수행되는 단계들의 예시적인 시퀀스를 도시한다. 이러한 시퀀스는 도 7의 단계(440)의 일부로서 실행될 수 있다. 도 8 및 도 9 모두는 인터셉트된 트리거 이벤트가, 예를 들어 쓰기 금지로 표시된 페이지에 쓰려고 하는 시도와 같이, 액세스 허가를 위반하는 방식으로 메모리에 액세스하려는 시도를 포함한다고 가정한다.
단계(452)에서(도 8), 검사기(46)는 예외를 생성한 메모리 페이지, 즉 액세스 시도에 의해 타겟이 된 메모리 페이지를 식별할 수 있다. 응답으로, 검사기(46)는 타겟 메모리 페이지가 보호되는 메모리 섹션, 즉 보호되는 자산의 적어도 일부를 포함하고 있는지를 결정하기 위하여, 현재 보호되는 메모리 섹션의 명단을 검색할 수 있다. 타겟 메모리 페이지가 임의의 보호되는 자산을 가지고 있지 않은 경우, 단계(460)에서 필터는 현재 트리거 이벤트가 인트로스펙션 엔진(40)에 통지를 보장할 수 없다고 결정할 수 있다. 타겟 메모리 페이지가 보호되는 자산의 일부를 포함하는 경우, 추가의 단계(456)는 예를 들어, 액세스 시도의 주소에 따라, 트리거 이벤트가 보호되는 메모리 섹션에 실제로 액세스하려는 시도를 포함하는지를 결정할 수 있다. "아니오"인 경우, 상기 트리거 이벤트는 적격하지 않은 것(non-eligible)으로 간주될 수 있다. 대조적으로, 상기 트리거 이벤트가 보호되는 메모리 섹션에 액세스하려는 시도에 해당하는 경우, 검사기(46)는 현재 트리거 이벤트가 통지하기에 적격하다고 결정할 수 있다.
도 9는 본 발명의 일부 실시예에 따라, 이벤트가 통지하기에 적격한지 여부를 결정하기 위하여 적격성 검사기(46)에 의해 수행되는 단계들의 또 다른 예시적인 시퀀스를 보여준다. 도 9의 예는 악성 변경(malicious modification)으로부터 페이지 테이블을 보호하는 것에 맞춰진 것이다. 일부 실시예들에서, 예시적인 적격한 트리거 이벤트는 페이지 테이블 엔트리의 플래그/컨트롤 비트(예를 들어, 현재/스왑 아웃, 읽기/쓰기, 실행 비활성화(execute-disable), 사용자/감독자와 같은 특성을 나타내는 비트)의 값을 변경하려는 시도를 포함한다. 다른 예시적인 적격한 트리거 이벤트는 개별 페이지 테이블 엔트리의 물리적 주소 필드(도 4의 A 필드)를 덮어쓰기 하려는 시도를 포함한다. 이러한 활동은 종종 개별 프로세스의 실행을 하이재킹(hijack)하고, 개별 프로세스의 메모리 공간에 코드를 삽입하려는 등을 시도하는 악성 소프트웨어를 나타낸다.
도 10은 본 발명의 일부 실시예에 따라 인트로스펙션 엔진(40)에 의해 수행되는 단계들의 예시적인 시퀀스를 보여준다. 엔진(40)은 필터(42)로부터 통지를 기다릴 수 있고, 상기 통지는 개별 게스트 VM 내에서 특정 유형의 트리거 이벤트의 발생을 나타내고, 개별 트리거 이벤트는 이벤트 필터(42)에 의해 통지하기에 적격하다고 간주된다. 통지에 응답하여, 단계(486)에서 엔진(40)은 개별 이벤트가 컴퓨터 보안 위협을 나타내는지 여부를 결정하기 위해 상기 개별 이벤트를 분석할 수 있다. 이러한 분석은 예를 들어, 다양한 휴리스틱 및 결정 트리(decision tree), 이벤트 상관관계(event correlation) 방법, 머신 러닝 알고리즘 등과 같은 본 기술분야의 임의의 방법을 채용할 수 있다. 단계(486)에서 인트로스펙션 엔진(40)은 이벤트 필터(42)에 의해 통신된 이벤트 파라미터를 사용할 수 있고, 그리고/또는 현재 트리거 이벤트에 관한 또는 개별 게스트 VM 내에서 현재 실행중인 소프트웨어에 관한 일반적인 추가 정보를 알아내기 위해 자신의 고유한 포렌식(forensic) 활동을 수행할 수 있다. 하나의 예시적인 분석에서, 통지된 이벤트가 페이지 테이블 엔트리의 컨트롤 비트를 덮어쓰기 하려는 시도를 포함하는 경우, 단계(486)에서 엔진(40)은 개별 시도가 합법적인 메모리 관리 조작으로서 OS에 의해 수행되었는지 또는 그 대신에 다른 소프트웨어 엔터티에 의해 수행되었는지(이 경우 상기 시도는 멀웨어를 나타내는 것으로 간주될 수 있음) 여부를 결정할 수 있다.
단계(486)의 분석이 상기 개별 트리거 이벤트가 보안 위협을 나타내지 않는다고 결정하는 경우, 일부 실시예들에서, 인트로스펙션 엔진(40)은 상기 개별 트리거 이벤트를 에뮬레이트하고, 프로세서(12)로 하여금 개별 게스트 VM의 실행을 재개하도록 지시할 수 있다. 이벤트가 위협을 나타내는 경우, 엔진(40)은 상기 위협을 완화시키기 위한 보호 조치(예를 들어, 상기 개별 게스트 VM 내에서 실행되는 멀웨어 에이전트를 제거하거나 또는 불능화시키기 위한 클린업 동작을 수행, 호스트 시스템(10)의 사용자에게 통지, 등)를 취할 수 있다.
전술한 예시적인 시스템 및 방법은 컴퓨터 또는 스마트폰과 같은 호스트 시스템으로 하여금, 하드웨어 가상화 구성에서 작동할 때 컴퓨터 보안 과업을 효율적으로 수행할 수 있게 한다. 호스트 시스템은 게스트 가상 머신 내에서 소프트웨어 어플리케이션들의 세트 및 운영 시스템을 실행하도록 구성된다. 일부 실시예들에서, 보안 어플리케이션은 적어도 2 개의 구성 요소를 포함한다: 개별 가상 머신 내에서 실행되는 이벤트 필터 및 개별 가상 머신의 밖에서 실행되는 인트로스펙션 엔진, 예컨대 하이퍼바이저의 레벨에서 또는 별도의 가상 머신에서. 프로세서는 액세스 허가를 위반하는 방식으로 메모리에 액세스하려는 시도를 탐지하는 것에 응답하여 가상화 예외를 생성하도록 구성될 수 있다. 일부 실시예들은 가상화 예외를 위한 핸들러로서 이벤트 필터 구성 요소를 등록한다.
컴퓨터 보안은 보호되는 객체에 속하는 데이터를 저장하는 메모리의 섹션에 대한 액세스 허가를 설정함으로써 실시된다. 개별 액세스 허가를 위반하는 방식으로 임의의 보호되는 메모리 섹션에 액세스하려는 시도는 가상화 예외를 트리거하고, 따라서 이벤트 필터에 의해 탐지된다. 일부 실시예들에서, 이벤트 필터는 적격성 기준의 세트에 따라서 탐지된 메모리 액세스 시도를 필터링하고, 의심스럽거나 멀웨어를 나타내는 것으로 간주되는 액세스 시도들의 서브세트를 선택한다. 예시적인 적격한 이벤트는, 예를 들어 가상 머신 내에서 실행되는 프로세스에 대한 메모리 주소 변환을 수행하기 위하여 사용된 페이지 테이블 엔트리를 덮어쓰기 하려는 시도를 포함할 수 있다. 적격하다고 간주되는 이벤트는 보호되는 가상 머신 밖에서 실행되는 인트로스펙션 엔진에, 예를 들면 하이퍼콜(hypercall)을 통해, 통지된다. 인트로스펙션 엔진은 통지된 이벤트가 악성 공격을 나타내는지를 결정하기 위해 이들을 분석할 수 있다.
일반적으로, 가상 머신 외부에서 실행되는 소프트웨어 구성 요소는 개별 VM 내부에서 실행되는 구성 요소 보다 VM 내에서 실행되는 악성 소프트웨어에 대해 실질적으로 덜 취약하다. 따라서 보안 관점에서는, 보호되는 VM 외부에 중요한 보안 구성 요소를 위치시키는 것이 유리할 수 있다. 그러나, 개별 VM 외부에서 실행되는 구성 요소에 데이터를 통신하고 그리고/또는 보안 관련 이벤트의 발생을 시그널링 하는 것은 통상적으로 컴퓨팅 리소스(computational resource)에 있어서 상대적으로 비용이 드는 VM 종료를 필요로 한다.
종래의 컴퓨터 보안 소프트웨어는 일반적으로 보호되는 가상 머신의 완전 내부 또는 완전 외부에 위치한다. 이러한 시스템과는 대조적으로, 본 발명의 일부 실시예들은 하나의 구성 요소(이벤트 필터)는 보호되는 VM 내부에서 실행되는 반면 다른 구성 요소(인트로스펙션 엔진)는 보호되는 VM 외부에서 실행되는 하이브리드 구성을 포함한다. 이벤트 탐지는 내부 구성 요소에 의해 수행되는 반면, 인터셉트된 이벤트의 분석 대부분은 외부 구성 요소에 의해 수행된다. 이러한 구성은 보안과 속도 사이에 균형을 이룰 수 있게 하고, 따라서 보안을 손상시키지 않으면서 사용자 경험을 향상시킬 수 있다. 보안을 더욱 향상시키기 위해, 일부 실시예들은 내부 구성 요소의 크기와 복잡성을 최소화한다. 바람직한 실시예에서, 이벤트 필터는 인트로스펙션 엔진에 통지하기 위한 이벤트들의 서브세트를 선택하는 필터로서만 작동한다. 이러한 경량의 구성 요소는 운영 시스템에 대한 또는 VM 내에서 실행되는 악성 소프트웨어에 대한 지식 없이도 보호되는 VM 내에 비교적 쉽게 삽입될 수 있다. 그러고 나서, 보다 정교한 이벤트 분석은 외부 구성 요소, 즉 인트로스펙션 엔진에 의해 수행될 수 있다.
본 발명의 일부 실시예들은 게스트 소프트웨어의 실행 중에 탐지된 이벤트 모두가 VM 종료 비용을 보증하지는 않는다는 관찰정보에 의존한다. 예를 들어, 메모리 액세스 허가는 페이지 단위로만 설정될 수 있기 때문에, 메모리 페이지의 일부만 차지하는 항목을 보호하는 것은 동일한 메모리 페이지 내에서 호스팅 되는 다른 항목에 액세스하려는 합법적인 시도에 의해 막대한 수의 허가 위반이 부주의하게 발생하게 할 수 있다. 다른 예에서, 페이지 테이블에 대한 모든 수정이 의심스러운 것은 아닌데; 운영 시스템은 합법적인 메모리 관리 활동의 일부로서 컨트롤 비트 및 주소를 자주 변경한다. 합법적인 이벤트를 보안 소프트웨어에 통지하는 것은 컴퓨팅 리소스를 불필요하게 소비한다.
그러므로, 일부 실시예들은 불필요한 VM 종료를 피하기 위해 가상화 예외의 메커니즘을 필터로 채용한다. 필터는 이벤트가 VM 외부에 통지되어야 하는지 아닌지 여부를 결정하기 위해 특정 적격성 기준과 함께 작동한다. 예를 들어, 보호되는 VM 내에서 실행되는 이벤트 필터는 각각의 탐지된 메모리 액세스 위반을 분석하고, 동일한 페이지 내에 저장된 다른 데이터에 액세스하려는 시도와 대조적으로 보호되는 항목에 액세스하려는 시도로 인해 실제 발생된 것인지 여부를 결정할 수 있다. 페이지 테이블을 보호하려고 시도하는 경우, 이벤트 필터는 시도된 변경이 특정 항목, 예를 들어, 특정 컨트롤 비트를 타겟으로 하는지를 체크할 수 있다. 그러고 나서 필터는 적격한 이벤트만 메모리 인트로스펙션 엔진에 통신할 수 있다.
본 발명의 일부 실시예의 적용은 컴퓨터 보안 분야를 훨씬 넘어 확장될 수 있다. VM 종료 이벤트의 상당 부분을 피함으로써, 이벤트 필터는 일반적으로 하드웨어 가상화 플랫폼의 작동을 가속화할 수 있다. 어떤 VM 내 이벤트를 내부적으로 처리할지 (또는 무시할지) 그리고 어떤 이벤트를 외부에 통지할지 선택하기 위한 기준은 원하는 최적화를 달성하기 위해 조정될 수 있다.
상기의 실시예들이 본 발명의 범위를 벗어나지 않는다면 다양한 방법으로 변경될 수 있음은 통상의 기술자에게 당연한 것이다. 따라서 본 발명의 범위는 이하의 청구항과 그들의 법적 균등물에 의해서 결정되어야 한다.

Claims (21)

  1. 하드웨어 프로세서 및 메모리를 포함하는 호스트 시스템으로서, 상기 하드웨어 프로세서는 가상 머신(virtual machine, VM), 이벤트 필터 및 인트로스펙션 엔진을 실행하도록 구성되고, 상기 이벤트 필터는 상기 VM 내에서 실행되고, 상기 인트로스펙션 엔진은 상기 VM의 밖에서 실행되고, 상기 하드웨어 프로세서는 추가적으로:
    메모리 액세스 허가를 위반하는 방식으로 메모리 위치에 액세스하려는, 상기 VM 내에서 실행되는 소프트웨어 엔터티에 의한 시도를 탐지하는 것에 응답하여 제1 예외(exception)를 생성하고;
    상기 제1 예외에 응답하여, 상기 소프트웨어 엔터티를 실행하는 것에서 상기 이벤트 필터를 실행하는 것으로 전환하고; 그리고
    제2 예외에 응답하여, 상기 이벤트 필터를 실행하는 것에서 상기 인트로스펙션 엔진을 실행하는 것으로 전환하도록 구성되고,
    상기 이벤트 필터는:
    상기 제1 예외에 응답하여, 상기 시도가 상기 인트로스펙션 엔진에 통지하기에 적격한지 여부를 이벤트 적격성 기준에 따라 결정하고;
    상기 시도가 통지하기에 적격한지 여부를 결정하는 것에 응답하여, 상기 시도가 적격한 경우, 상기 프로세서로 하여금 상기 제2 예외를 생성하도록 하고; 그리고
    상기 시도가 통지하기에 적격한지 여부를 결정하는 것에 응답하여, 상기 시도가 적격하지 않은 경우, 상기 프로세서가 상기 제2 예외를 생성하는 것을 방지하고, 대신에 상기 프로세서로 하여금 상기 소프트웨어 엔터티를 실행하는 것을 재개하도록 구성되고, 그리고
    상기 인트로스펙션 엔진은 상기 시도가 악성인지를 결정하도록 구성되는 것을 특징으로 하는 호스트 시스템.
  2. 제1항에 있어서,
    상기 시도가 통지하기에 적격한지 여부를 결정하는 것은:
    메모리 페이지의 섹션이 보호되는 객체의 일부를 저장하고 있는지 여부를 결정하는 것(상기 섹션은 메모리 위치에 의해 표시됨);
    상기 섹션이 상기 보호되는 객체의 일부를 저장하고 있는지 여부를 결정하는 것에 응답하여, 상기 섹션이 상기 보호되는 객체의 일부를 저장한 경우, 상기 시도가 적격하다고 결정하고; 그리고
    상기 섹션이 상기 보호되는 객체의 일부를 저장하고 있는지 여부를 결정하는 것에 응답하여, 상기 섹션이 상기 보호되는 객체의 일부를 저장하지 않은 경우, 상기 시도가 적격하지 않다고 결정하는 것을 포함하는 것을 특징으로 하는 호스트 시스템.
  3. 제2항에 있어서,
    상기 메모리 페이지는 미보호되는 객체의 일부를 추가로 저장하는 것을 특징으로 하는 호스트 시스템.
  4. 제2항에 있어서,
    상기 보호되는 객체는 상기 VM에 대하여 메모리 주소 변환(translation)을 수행하도록 상기 하드웨어 프로세서에 의해 사용되는 페이지 테이블을 포함하는 것을 특징으로 하는 호스트 시스템.
  5. 제3항에 있어서,
    상기 시도가 통지하기에 적격한지 여부를 결정하는 것은, 상기 시도가 상기 페이지 테이블의 페이지 테이블 엔트리의 컨트롤 비트(control bit)의 값을 덮어쓰기(overwrite)하려는 시도를 포함하고 있는지 여부를 결정하는 것을 추가로 포함하는 것을 특징으로 하는 호스트 시스템.
  6. 제3항에 있어서,
    상기 시도가 통지하기에 적격한지 여부를 결정하는 것은, 상기 시도가 상기 페이지 테이블의 페이지 테이블 엔트리의 주소 필드의 콘텐트를 덮어쓰기(overwrite)하려는 시도를 포함하고 있는지 여부를 결정하는 것을 추가로 포함하는 것을 특징으로 하는 호스트 시스템.
  7. 제1항에 있어서,
    상기 시도가 악성인지를 결정하는 것은:
    상기 시도가 상기 가상 머신 내에서 실행되는 운영 시스템의 구성 요소에 의해 수행되었는지 여부를 결정하기 위해 상기 인트로스펙션 엔진을 채용하는 것; 및
    응답으로, 상기 시도가 상기 운영 시스템의 구성 요소에 의해 수행된 경우, 상기 시도가 악성이 아니라고 결정하는 것을 포함하는 것을 특징으로 하는 호스트 시스템.
  8. 컴퓨터 보안 위협으로부터 호스트 시스템을 보호하는 방법으로서, 상기 호스트 시스템은 하드웨어 프로세서 및 메모리를 포함하고, 상기 하드웨어 프로세서는 가상 머신(virtual machine, VM), 이벤트 필터 및 인트로스펙션 엔진을 실행하도록 구성되고, 상기 이벤트 필터는 상기 VM 내에서 실행되고, 상기 인트로스펙션 엔진은 상기 VM의 밖에서 실행되고, 상기 방법은:
    메모리 액세스 허가를 위반하는 방식으로 메모리 위치에 액세스하려는, 상기 VM 내에서 실행되는 소프트웨어 엔터티에 의한 시도를 탐지하는 것에 응답하여 제1 예외(exception)를 생성하도록 상기 하드웨어 프로세서를 구성하는 것;
    상기 제1 예외에 응답하여, 상기 소프트웨어 엔터티를 실행하는 것에서 상기 이벤트 필터를 실행하는 것으로 전환하도록 상기 하드웨어 프로세서를 구성하는 것;
    제2 예외에 응답하여, 상기 이벤트 필터를 실행하는 것에서 상기 인트로스펙션 엔진을 실행하는 것으로 전환하도록 상기 하드웨어 프로세서를 구성하는 것;
    상기 제1 예외에 응답하여, 상기 시도가 상기 인트로스펙션 엔진에 통지하기에 적격한지 여부를 이벤트 적격성 기준에 따라 결정하기 위해 상기 이벤트 필터를 채용하는 것;
    상기 시도가 통지하기에 적격한지 여부를 결정하는 것에 응답하여, 상기 시도가 적격한 경우, 상기 프로세서로 하여금 상기 제2 예외를 생성하도록 하는 것;
    상기 시도가 통지하기에 적격한지 여부를 결정하는 것에 응답하여, 상기 시도가 적격하지 않은 경우, 상기 프로세서가 상기 제2 예외를 생성하는 것을 방지하고, 대신에 상기 프로세서로 하여금 상기 소프트웨어 엔터티를 실행하는 것을 재개하도록 하는 것; 그리고
    상기 제2 예외에 응답하여, 상기 시도가 악성인지를 결정하기 위해 상기 인트로스펙션 엔진을 채용하는 것을 포함하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서,
    상기 시도가 통지하기에 적격한지 여부를 결정하는 것은:
    메모리 페이지의 섹션이 보호되는 객체의 일부를 저장하고 있는지 여부를 결정하는 것(상기 섹션은 메모리 위치에 의해 표시됨);
    상기 섹션이 상기 보호되는 객체의 일부를 저장하고 있는지 여부를 결정하는 것에 응답하여, 상기 섹션이 상기 보호되는 객체의 일부를 저장한 경우, 상기 시도가 적격하다고 결정하고; 그리고
    상기 섹션이 상기 보호되는 객체의 일부를 저장하고 있는지 여부를 결정하는 것에 응답하여, 상기 섹션이 상기 보호되는 객체의 일부를 저장하지 않은 경우, 상기 시도가 적격하지 않다고 결정하는 것을 포함하는 것을 특징으로 하는 방법.
  10. 제9항에 있어서,
    상기 메모리 페이지는 미보호되는 객체의 일부를 추가로 저장하는 것을 특징으로 하는 방법.
  11. 제9항에 있어서,
    상기 보호되는 객체는 상기 VM에 대하여 메모리 주소 변환(translation)을 수행하도록 상기 하드웨어 프로세서에 의해 사용되는 페이지 테이블을 포함하는 것을 특징으로 하는 방법.
  12. 제11항에 있어서,
    상기 시도가 통지하기에 적격한지 여부를 결정하는 것은, 상기 시도가 상기 페이지 테이블의 페이지 테이블 엔트리의 컨트롤 비트(control bit)의 값을 덮어쓰기(overwrite)하려는 시도를 포함하고 있는지 여부를 결정하는 것을 추가로 포함하는 것을 특징으로 하는 방법.
  13. 제11항에 있어서,
    상기 시도가 통지하기에 적격한지 여부를 결정하는 것은, 상기 시도가 상기 페이지 테이블의 페이지 테이블 엔트리의 주소 필드의 콘텐트를 덮어쓰기(overwrite)하려는 시도를 포함하고 있는지 여부를 결정하는 것을 추가로 포함하는 것을 특징으로 하는 방법.
  14. 제8항에 있어서,
    상기 시도가 악성인지를 결정하는 것은:
    상기 시도가 상기 가상 머신 내에서 실행되는 운영 시스템의 구성 요소에 의해 수행되었는지 여부를 결정하기 위해 상기 인트로스펙션 엔진을 채용하는 것; 및
    응답으로, 상기 시도가 상기 운영 시스템의 구성 요소에 의해 수행된 경우, 상기 시도가 악성이 아니라고 결정하는 것을 포함하는 것을 특징으로 하는 방법.
  15. 가상 머신(virtual machine, VM)을 노출하는 호스트 시스템의 하드웨어 프로세서에 의하여 실행될 때, 상기 호스트 시스템으로 하여금 이벤트 필터 및 인트로스펙션 엔진을 형성하도록 하는 명령들을 저장하는 비-일시적 컴퓨터 판독가능 매체(non-transitory computer-readable medium)로서,
    상기 이벤트 필터는 상기 VM 내에서 실행되고, 상기 인트로스펙션 엔진은 상기 VM의 밖에서 실행되고,
    상기 인트로스펙션 엔진은:
    메모리 액세스 허가를 위반하는 방식으로 메모리 위치에 액세스하려는, 상기 VM 내에서 실행되는 소프트웨어 엔터티에 의한 시도를 탐지하는 것에 응답하여 제1 예외(exception)를 생성하도록 상기 하드웨어 프로세서를 구성하고;
    상기 제1 예외에 응답하여, 상기 소프트웨어 엔터티를 실행하는 것에서 상기 이벤트 필터를 실행하는 것으로 전환하도록 상기 하드웨어 프로세서를 구성하고;
    제2 예외에 응답하여, 상기 이벤트 필터를 실행하는 것에서 상기 인트로스펙션 엔진을 실행하는 것으로 전환하도록 상기 하드웨어 프로세서를 구성하고; 그리고
    상기 제2 예외에 응답하여, 상기 시도가 악성인지를 결정하도록 구성되고, 그리고
    상기 이벤트 필터는:
    상기 제1 예외에 응답하여, 상기 시도가 상기 인트로스펙션 엔진에 통지하기에 적격한지 여부를 이벤트 적격성 기준에 따라 결정하고;
    상기 시도가 통지하기에 적격한지 여부를 결정하는 것에 응답하여, 상기 시도가 적격한 경우, 상기 프로세서로 하여금 상기 제2 예외를 생성하도록 하고;
    상기 시도가 통지하기에 적격한지 여부를 결정하는 것에 응답하여, 상기 시도가 적격하지 않은 경우, 상기 프로세서가 상기 제2 예외를 생성하는 것을 방지하고, 대신에 상기 프로세서로 하여금 상기 소프트웨어 엔터티를 실행하는 것을 재개하도록 하도록 구성되는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  16. 제15항에 있어서,
    상기 시도가 통지하기에 적격한지 여부를 결정하는 것은:
    메모리 페이지의 섹션이 보호되는 객체의 일부를 저장하고 있는지 여부를 결정하는 것(상기 섹션은 메모리 위치에 의해 표시됨);
    상기 섹션이 상기 보호되는 객체의 일부를 저장하고 있는지 여부를 결정하는 것에 응답하여, 상기 섹션이 상기 보호되는 객체의 일부를 저장한 경우, 상기 시도가 적격하다고 결정하고; 그리고
    상기 섹션이 상기 보호되는 객체의 일부를 저장하고 있는지 여부를 결정하는 것에 응답하여, 상기 섹션이 상기 보호되는 객체의 일부를 저장하지 않은 경우, 상기 시도가 적격하지 않다고 결정하는 것을 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  17. 제16항에 있어서,
    상기 메모리 페이지는 미보호되는 객체의 일부를 추가로 저장하는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  18. 제16항에 있어서,
    상기 보호되는 객체는 상기 VM에 대하여 메모리 주소 변환(translation)을 수행하도록 상기 하드웨어 프로세서에 의해 사용되는 페이지 테이블을 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  19. 제18항에 있어서,
    상기 시도가 통지하기에 적격한지 여부를 결정하는 것은, 상기 시도가 상기 페이지 테이블의 페이지 테이블 엔트리의 컨트롤 비트(control bit)의 값을 덮어쓰기(overwrite)하려는 시도를 포함하고 있는지 여부를 결정하는 것을 추가로 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  20. 제18항에 있어서,
    상기 시도가 통지하기에 적격한지 여부를 결정하는 것은, 상기 시도가 상기 페이지 테이블의 페이지 테이블 엔트리의 주소 필드의 콘텐트를 덮어쓰기(overwrite)하려는 시도를 포함하고 있는지 여부를 결정하는 것을 추가로 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  21. 제15항에 있어서,
    상기 시도가 악성인지를 결정하는 것은:
    상기 시도가 상기 가상 머신 내에서 실행되는 운영 시스템의 구성 요소에 의해 수행되었는지 여부를 결정하기 위해 상기 인트로스펙션 엔진을 채용하는 것; 및
    응답으로, 상기 시도가 상기 운영 시스템의 구성 요소에 의해 수행된 경우, 상기 시도가 악성이 아니라고 결정하는 것을 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
KR1020197013274A 2016-12-19 2017-12-19 가상 머신 보안 어플리케이션을 위한 이벤트 필터링 KR102189296B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662436027P 2016-12-19 2016-12-19
US62/436,027 2016-12-19
US15/845,060 US10635479B2 (en) 2016-12-19 2017-12-18 Event filtering for virtual machine security applications
US15/845,060 2017-12-18
PCT/EP2017/083579 WO2018114970A1 (en) 2016-12-19 2017-12-19 Event filtering for virtual machine security applications

Publications (2)

Publication Number Publication Date
KR20190096959A true KR20190096959A (ko) 2019-08-20
KR102189296B1 KR102189296B1 (ko) 2020-12-14

Family

ID=62556303

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197013274A KR102189296B1 (ko) 2016-12-19 2017-12-19 가상 머신 보안 어플리케이션을 위한 이벤트 필터링

Country Status (12)

Country Link
US (1) US10635479B2 (ko)
EP (1) EP3516571B1 (ko)
JP (1) JP7036821B2 (ko)
KR (1) KR102189296B1 (ko)
CN (1) CN109923546B (ko)
AU (1) AU2017384437B2 (ko)
CA (1) CA3037801A1 (ko)
ES (1) ES2925891T3 (ko)
IL (1) IL267289B (ko)
RU (1) RU2723668C1 (ko)
SG (1) SG10201913258XA (ko)
WO (1) WO2018114970A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11089064B1 (en) 2016-09-12 2021-08-10 Skyhigh Networks, Llc Cloud security policy enforcement for custom web applications
US10936353B2 (en) * 2017-05-16 2021-03-02 Dell Products L.P. Systems and methods for hypervisor-assisted hardware accelerator offloads in a virtualized information handling system environment
US10983926B2 (en) 2018-08-29 2021-04-20 Red Hat, Inc. Efficient userspace driver isolation for virtual machines
US10754796B2 (en) 2018-08-29 2020-08-25 Red Hat, Inc. Efficient user space driver isolation by CPU page table switching
FR3100901B1 (fr) * 2019-09-12 2021-08-27 Stmicroelectronics Grand Ouest Sas Système de protection de la mémoire
DE102019214541A1 (de) * 2019-09-24 2021-03-25 Siemens Aktiengesellschaft Rechenvorrichtung und Verfahren zum Erkennen einer Bedrohung in einer virtuellen Einheit
CN112199678B (zh) * 2020-09-25 2024-04-09 杭州安恒信息技术股份有限公司 一种在线取证的方法、装置、计算机设备和可读存储介质
WO2022081733A1 (en) * 2020-10-13 2022-04-21 BedRock Systems, Inc. A formally verified trusted computing base with active security and policy enforcement
CN112199158B (zh) * 2020-10-16 2021-11-23 常熟理工学院 虚拟机保护的解释例程识别方法、装置、设备及存储介质
US11934857B2 (en) * 2021-03-16 2024-03-19 Vmware, Inc. Supporting execution of a computer program by using a memory page of another computer program
US20230061511A1 (en) * 2021-08-30 2023-03-02 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution
KR20230065526A (ko) * 2021-11-05 2023-05-12 삼성전자주식회사 메모리 관리 시스템 및 메모리 관리 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150121135A1 (en) * 2013-10-31 2015-04-30 Assured Information Security, Inc. Virtual machine introspection facilities
US20150199514A1 (en) * 2014-01-10 2015-07-16 Bitdefender IPR Management Ltd. Computer Security Systems And Methods Using Virtualization Exceptions
US20160048679A1 (en) * 2014-08-18 2016-02-18 Bitdefender IPR Management Ltd. Systems And Methods for Exposing A Current Processor Instruction Upon Exiting A Virtual Machine

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5075845A (en) * 1989-12-22 1991-12-24 Intel Corporation Type management and control in an object oriented memory protection mechanism
US7124327B2 (en) * 2002-06-29 2006-10-17 Intel Corporation Control over faults occurring during the operation of guest software in the virtual-machine architecture
US7552426B2 (en) 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US20050138256A1 (en) * 2003-12-23 2005-06-23 Bolay Frederick H. Method and apparatus for processing hot key input using operating system visible interrupt handling
US9390031B2 (en) * 2005-12-30 2016-07-12 Intel Corporation Page coloring to associate memory pages with programs
US7797747B1 (en) * 2006-02-21 2010-09-14 Symantec Corporation Detection of malicious code in non-paged pool unused pages
US9015704B2 (en) * 2008-03-24 2015-04-21 International Business Machines Corporation Context agent injection using virtual machine introspection
US8225317B1 (en) 2009-04-17 2012-07-17 Symantec Corporation Insertion and invocation of virtual appliance agents through exception handling regions of virtual machines
US9129106B2 (en) * 2009-11-04 2015-09-08 Georgia Tech Research Corporation Systems and methods for secure in-VM monitoring
US20110197004A1 (en) * 2010-02-05 2011-08-11 Serebrin Benjamin C Processor Configured to Virtualize Guest Local Interrupt Controller
US8966623B2 (en) 2010-03-08 2015-02-24 Vmware, Inc. Managing execution of a running-page in a virtual machine
US8949797B2 (en) * 2010-04-16 2015-02-03 International Business Machines Corporation Optimizing performance of integrity monitoring
US8863283B2 (en) * 2011-03-31 2014-10-14 Mcafee, Inc. System and method for securing access to system calls
US20120254993A1 (en) 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US9298910B2 (en) 2011-06-08 2016-03-29 Mcafee, Inc. System and method for virtual partition monitoring
US9311126B2 (en) 2011-07-27 2016-04-12 Mcafee, Inc. System and method for virtual partition monitoring
CN102523215B (zh) * 2011-12-15 2014-10-01 北京海云捷迅科技有限公司 基于kvm虚拟化平台的虚拟机在线杀毒系统
US9405570B2 (en) * 2011-12-30 2016-08-02 Intel Corporation Low latency virtual machine page table management
US9529614B2 (en) * 2012-03-05 2016-12-27 Board Of Regents The University Of Texas Systems Automatically bridging the semantic gap in machine introspection
US9311248B2 (en) * 2012-05-07 2016-04-12 Raytheon Cyber Products, Llc Methods and apparatuses for monitoring activities of virtual machines
US9424199B2 (en) * 2012-08-29 2016-08-23 Advanced Micro Devices, Inc. Virtual input/output memory management unit within a guest virtual machine
US9275223B2 (en) * 2012-10-19 2016-03-01 Mcafee, Inc. Real-time module protection
RU2541895C2 (ru) * 2012-12-25 2015-02-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ повышения защищенности данных организации путем создания изолированной среды
US9037873B2 (en) * 2013-01-30 2015-05-19 Vmware, Inc. Method and system for preventing tampering with software agent in a virtual machine
US8875295B2 (en) * 2013-02-22 2014-10-28 Bitdefender IPR Management Ltd. Memory introspection engine for integrity protection of virtual machines
US9117080B2 (en) * 2013-07-05 2015-08-25 Bitdefender IPR Management Ltd. Process evaluation for malware detection in virtual machines
US9015374B2 (en) * 2013-07-09 2015-04-21 Advanced Micro Devices, Inc. Virtual interrupt filter
US9507727B2 (en) * 2013-07-17 2016-11-29 Bitdefender IPR Management Ltd. Page fault injection in virtual machines
US9323931B2 (en) * 2013-10-04 2016-04-26 Bitdefender IPR Management Ltd. Complex scoring for malware detection
US9563455B2 (en) 2013-10-28 2017-02-07 Intel Corporation Virtualization exceptions
EP3123390A4 (en) * 2014-03-27 2017-10-25 Barkly Protects, Inc. Malicious software identification integrating behavioral analytics and hardware events
US9703726B2 (en) * 2014-06-24 2017-07-11 Bitdefender IPR Management Ltd. Systems and methods for dynamically protecting a stack from below the operating system
US9454676B2 (en) 2014-06-27 2016-09-27 Intel Corporation Technologies for preventing hook-skipping attacks using processor virtualization features
US9335943B2 (en) * 2014-06-30 2016-05-10 Intel Corporation Method and apparatus for fine grain memory protection
US20150379265A1 (en) * 2014-06-30 2015-12-31 Bitdefender IPR Management Ltd. Systems And Methods For Preventing Code Injection In Virtualized Environments
US9356945B2 (en) 2014-07-17 2016-05-31 Check Point Advanced Threat Prevention Ltd Automatic content inspection system for exploit detection
US9703720B2 (en) 2014-12-23 2017-07-11 Intel Corporation Method and apparatus to allow secure guest access to extended page tables
US9965313B2 (en) 2016-01-05 2018-05-08 Bitdefender IPR Management Ltd. Systems and methods for auditing a virtual machine
US10248785B2 (en) * 2016-02-29 2019-04-02 Red Hat Israel, Ltd. Application memory protection using a host page table switching virtual machine function
US10515023B2 (en) * 2016-02-29 2019-12-24 Intel Corporation System for address mapping and translation protection
US10120738B2 (en) * 2016-06-24 2018-11-06 Vmware, Inc. Hypervisor techniques for performing non-faulting reads in virtual machines
US9965375B2 (en) * 2016-06-28 2018-05-08 Intel Corporation Virtualizing precise event based sampling
US10664181B2 (en) * 2017-11-14 2020-05-26 International Business Machines Corporation Protecting in-memory configuration state registers

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150121135A1 (en) * 2013-10-31 2015-04-30 Assured Information Security, Inc. Virtual machine introspection facilities
US20150199514A1 (en) * 2014-01-10 2015-07-16 Bitdefender IPR Management Ltd. Computer Security Systems And Methods Using Virtualization Exceptions
US20160048679A1 (en) * 2014-08-18 2016-02-18 Bitdefender IPR Management Ltd. Systems And Methods for Exposing A Current Processor Instruction Upon Exiting A Virtual Machine

Also Published As

Publication number Publication date
IL267289A (en) 2019-08-29
IL267289B (en) 2021-07-29
CN109923546B (zh) 2023-04-07
CA3037801A1 (en) 2018-06-28
WO2018114970A1 (en) 2018-06-28
AU2017384437B2 (en) 2022-01-13
CN109923546A (zh) 2019-06-21
EP3516571B1 (en) 2022-06-01
SG10201913258XA (en) 2020-02-27
US20180173555A1 (en) 2018-06-21
EP3516571A1 (en) 2019-07-31
ES2925891T3 (es) 2022-10-20
RU2723668C1 (ru) 2020-06-17
AU2017384437A1 (en) 2019-04-11
JP7036821B2 (ja) 2022-03-15
JP2020502638A (ja) 2020-01-23
KR102189296B1 (ko) 2020-12-14
US10635479B2 (en) 2020-04-28

Similar Documents

Publication Publication Date Title
KR102189296B1 (ko) 가상 머신 보안 어플리케이션을 위한 이벤트 필터링
US9400885B2 (en) Computer security systems and methods using virtualization exceptions
KR101946982B1 (ko) 가상 머신에서 멀웨어 탐지를 위한 프로세스 평가
US10296470B2 (en) Systems and methods for dynamically protecting a stack from below the operating system
US20160210069A1 (en) Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine
KR101955189B1 (ko) 스왑 아웃된 메모리 페이지의 가상 머신 가상화된 메모리로의 맵핑을 위한 가상 머신에서의 페이지 오류 삽입
US10140448B2 (en) Systems and methods of asynchronous analysis of event notifications for computer security applications
KR20170042602A (ko) 가상 머신을 나가자 마자 현재 프로세서 명령을 노출하기 위한 시스템 및 방법
US9536084B1 (en) Systems and methods for delivering event-filtered introspection notifications
US20150379265A1 (en) Systems And Methods For Preventing Code Injection In Virtualized Environments
US9531735B1 (en) Systems and methods for delivering introspection notifications from a virtual machine
Suzaki et al. Kernel memory protection by an insertable hypervisor which has VM introspection and stealth breakpoints

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant