KR20220080126A - 프로세서에서 하이퍼바이저 보안 이벤트 핸들링 - Google Patents

프로세서에서 하이퍼바이저 보안 이벤트 핸들링 Download PDF

Info

Publication number
KR20220080126A
KR20220080126A KR1020227014845A KR20227014845A KR20220080126A KR 20220080126 A KR20220080126 A KR 20220080126A KR 1020227014845 A KR1020227014845 A KR 1020227014845A KR 20227014845 A KR20227014845 A KR 20227014845A KR 20220080126 A KR20220080126 A KR 20220080126A
Authority
KR
South Korea
Prior art keywords
event
processor
hypervisor
guest
information
Prior art date
Application number
KR1020227014845A
Other languages
English (en)
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 KR20220080126A publication Critical patent/KR20220080126A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • 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
    • 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
    • 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
    • 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
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Abstract

가상화된 컴퓨팅 환경은 게스트 가상 머신의 이벤트(인터럽트 또는 예외) 핸들링 경로의 하나 이상의 부분에 대한 하이퍼바이저의 액세스를 제한함으로써 악성 하이퍼바이저로부터 보호되며, 게스트 가상 머신은 게스트에 대한 보안을 관리하기 위한 보안 계층 및 이벤트 프로세싱을 핸들링하기 위한 하나 이상의 비보안 계층 모두를 포함한다. 하이퍼바이저는 게스트 가상 머신(본 명세서에서 단순히 "게스트"로 지칭됨)에 정상적인 예외 정보를 제공하는 것이 제한되고, 대신에 게스트의 보안 계층에 이벤트 신호를 제공하는 것만이 허용된다. 이벤트 신호에 응답하여, 게스트의 보안 계층은 이벤트 정보에 대해 지정된 메모리 영역에 액세스하고, 정보를 검토하고, 이벤트 정보가 지정된 보안 프로토콜들을 준수하는 경우에만 프로세싱하기 위해 게스트의 다른 비보안 계층에 정보를 제공한다.

Description

프로세서에서 하이퍼바이저 보안 이벤트 핸들링
관련 출원에 대한 상호 참조
본 출원은 2019년 10월 10일에 출원되고 제목이 "VIRTUAL MACHINE INTERRUPT INJECTION RESTRICTIONS"인 미국 가특허 출원 일련 번호 62/913,487에 대한 우선권을 주장하며, 이는 전체가 참조로 여기에 포함된다.
컴퓨터 서비스의 효율적인 제공을 향상시키기 위해 일부 서버 및 기타 컴퓨터 시스템은 가상화된 컴퓨팅 환경을 구현한다. 이러한 환경에서, 호스트 컴퓨터 시스템은 다수의 가상 머신들을 동시에 실행하며, 때때로 호스트 컴퓨터 시스템의 "게스트들"로 지칭된다. 게스트의 설계와 실행을 단순화하기 위해, 호스트 컴퓨터 시스템은 동시 실행 게스트에 대한 시스템 하드웨어 리소스 제공을 관리하는 하이퍼바이저(hypervisor)를 이용한다. 즉, 하이퍼바이저는 하드웨어 리소스의 제공을 관리하여, 마치 게스트가 자신의 전용 컴퓨터 시스템에서 실행하는 것처럼 하드웨어가 각각의 게스트에게 나타난다. 따라서 게스트는 표준 운영 체제, 라이브러리, 드라이버 및 기타 프로그램을 이용하여 시스템 하드웨어와 인터페이스할 수 있다. 또한, 하이퍼바이저는, 예를 들어, 하나의 게스트가 다른 게스트와 연관된 개인 데이터에 액세스할 수 없도록, 상이한 게스트들 사이의 격리 계층(layer of isolation)을 제공함으로써 게스트들에 대한 보안을 제공한다. 그러나, 어떤 경우에는 하이퍼바이저 자체가 게스트 데이터에 악의적으로(maliciously) 액세스하거나 게스트 동작을 부적절하게 조작할 수 있는 수단을 제공한다.
본 개시는 첨부된 도면을 참조함으로써 당업자에게 더 잘 이해될 수 있고, 많은 특징 및 장점이 명백해질 수 있다. 다른 도면에서 동일한 참조 기호를 사용하는 것은 유사하거나 동일한 항목을 나타낸다.
도 1은 일부 실시예들에 따른 이벤트 핸들링으로부터 하이퍼바이저를 격리하는 컴퓨터 시스템의 블록도이다.
도 2는 일부 실시예들에 따른 하이퍼바이저로부터의 신호에 응답하여 이벤트 큐(queue)에 액세스하기 위해 가상 머신의 보안 계층을 이용하는 도 1의 컴퓨터 시스템의 일 예를 예시하는 블록도이다.
도 3은 일부 실시예들에 따라 이벤트 큐에 액세스하기 위해 가상 머신의 보안 계층을 이용함으로써 이벤트 핸들링으로부터 하이퍼바이저를 격리하는 방법의 흐름도이다.
도 4는 일부 실시예들에 따른 이벤트 제어 정보를 저장하기 위해 메모리의 보안 영역을 이용하는 도 1의 컴퓨터 시스템의 일 예를 예시하는 블록도이다.
도 5는 일부 실시예들에 따른 이벤트 제어 정보를 저장하기 위해 메모리의 보안 영역을 이용함으로써 이벤트 핸들링으로부터 하이퍼바이저를 격리하는 방법의 흐름도이다.
도 1-5는 게스트 가상 머신의 이벤트(인터럽트 또는 예외) 핸들링 경로의 하나 이상의 부분에 대한 하이퍼바이저의 액세스를 제한함으로써 악성(malicious) 하이퍼바이저로부터 가상화된 컴퓨팅 환경을 보호하기 위한 기술들을 예시하며, 여기서 게스트 가상 머신은 게스트에 대한 보안을 관리하기 위한 보안 계층(secure layer) 및 이벤트 프로세싱을 핸들링하기 위한 하나 이상의 비보안 계층(non-secure layer) 모두를 포함한다. 예를 들어, 일부 실시예들에서, 하이퍼바이저는 게스트 가상 머신(본 명세서에서 단순히 "게스트"로 지칭됨)에 정상적인 예외 정보를 제공하는 것이 제한되고, 대신에 게스트의 보안 계층에 이벤트 신호를 제공하는 것만이 허용된다. 이벤트 신호에 응답하여, 게스트의 보안 계층은 이벤트 정보에 대해 지정된 메모리 영역에 액세스하고, 정보를 검토하고, 이벤트 정보가 지정된 보안 프로토콜들을 준수하는(comply) 경우에만 프로세싱하기 위해 게스트의 다른 비보안 계층에 정보를 제공한다.
다른 실시예들에서, 하이퍼바이저는 이벤트들이 프로세싱되는지 여부 및 어떻게 프로세싱되는지를 결정하기 위해 게스트에 의해 사용되는 태스크 우선순위 레지스터(task priority register, TPR) 정보와 같은 이벤트 제어 정보에 액세스하는 것이 제한된다. 이벤트 제어 정보는 하이퍼바이저에서 액세스할 수 없는 암호화된 메모리 영역에 저장된다. 특히, 하이퍼바이저로부터 이벤트의 표시(indication)를 수신하는 것에 응답하여, 게스트의 보안 계층은 이벤트에 대한 이벤트 제어 정보를 암호화된 메모리 영역에 저장하고, 프로세서의 이벤트 인터페이스는 이벤트 우선순위 정보가 암호화된 영역에 저장된 TPR 정보를 준수하도록 보장하는 것과 같이 이벤트가 지정된 이벤트 프로토콜을 준수하도록 보장하기 위해 이벤트 제어 정보를 사용한다. 이벤트 정보가 지정된 프로토콜을 준수하지 않을 경우, 대응하는 이벤트는 프로세싱되지 않는다. 하이퍼바이저가 암호화된 메모리 영역에 액세스할 수 없기 때문에, 하이퍼바이저는 이벤트 제어 정보를 사용하여 게스트를 부정 이용할 수 없다.
일부 실시예들에서, 하이퍼바이저는 게스트의 비보안 계층들에 대한 예외 정보를 제공하는 것, 및 게스트에 대한 이벤트 제어 정보에 액세스하는 것 모두로부터 제한된다. 대신, 하이퍼바이저는 게스트의 보안 계층에 이벤트를 시그널링하며, 이에 응답하여 보안 프로토콜의 준수를 위해 연관된 이벤트 정보를 검토한다. 보안 프로토콜을 준수하는 이벤트 정보에 응답하여, 보안 계층은 프로세싱을 위해 비보안 계층으로 이벤트 정보를 제공하고, 암호화된 메모리 영역에 이벤트에 대한 이벤트 제어 정보를 저장한다. 비보안 계층은 암호화된 메모리 영역의 이벤트 제어 정보에 액세스하여 이벤트 제어 정보를 이용하여 이벤트를 프로세싱 한다.
이벤트 큐 및 이벤트 제어 정보 중 하나 이상에 대한 하이퍼바이저의 액세스를 제한함으로써, 게스트는 악성 하이퍼바이저 공격으로부터 보호된다. 예를 통해 예시하기 위해, 일부 경우들에서, 게스트의 이벤트 핸들링 경로는 시스템 하드웨어가 TPR에 의해 설정된 우선순위보다 낮은 우선순위를 갖는 인터럽트를 생성하거나 시그널링하지 않을 것이라는 가정과 같이 시스템 하드웨어 행동(behavior)에 관한 지정된 가정에 의존한다. 그러나, 하이퍼바이저는 가상화된 컴퓨팅 환경에서 게스트와 시스템 하드웨어 사이에 추상화 계층(layer of abstraction)을 제공하기 때문에, 악성 하이퍼바이저는 예컨대 TPR-설정 우선순위보다 낮은 우선순위를 갖는 게스트 운영 체제에 인터럽트를 제공함으로써 디바이스 행동의 지정된 가정에 위반하는 이벤트들을 생성할 수 있다. 그렇지 않으면 금지되는 이러한 이벤트는 게스트의 보안 데이터 및 기타 측면을 무단 액세스(unauthorized access) 또는 조작에 취약하게 만든다. 본 명세서에 설명된 기술을 사용하면, 악성 하이퍼바이저가 이러한 방식으로 게스트를 악용하는 것을 방지하여, 시스템 보안이 향상된다. 또한, 본 명세서에 설명된 바와 같이, 일부 실시예들에서 기술들은 이벤트들을 수신하고 프로세싱하도록 설계된 프로세서의 기존 이벤트 인터페이스로 구현되고, 이에 의해 기술들을 구현하는데 요구되는 소프트웨어 또는 하드웨어 재설계의 양을 감소시킨다.
도 1은 일부 실시예들에 따른 이벤트 핸들링 경로의 부분들에 대한 하이퍼바이저 액세스를 제한하는 프로세싱 시스템(100)의 블록도를 예시한다. 프로세싱 시스템(100)은 일반적으로 전자 디바이스를 대신하여 태스크들을 수행하기 위해 컴퓨터 명령어들(instructions)(예를 들어, 컴퓨터 프로그램들)의 세트들을 실행하는 시스템이다. 따라서, 상이한 실시예들에서, 프로세싱 시스템(100)은 데스크탑 또는 랩탑 컴퓨터, 서버, 스마트폰, 태블릿, 게임 콘솔 등과 같은 전자 디바이스의 일부이다. 설명을 위해, 프로세싱 시스템(100)은 가상화된 컴퓨팅 환경을 구현하는 서버의 일부로 가정된다.
컴퓨터 명령어들의 실행을 지원하기 위해, 프로세싱 시스템(100)은 프로세서(101) 및 메모리(110)를 포함한다. 메모리(110)는 랜덤 액세스 메모리(RAM)와 같은 휘발성 메모리, 플래시 메모리와 같은 비휘발성 메모리, 또는 이들의 조합이고 프로세서(101)를 대신하여 데이터를 저장한다. 특히, 프로세서(101)가 명령어들을 실행함에 따라, 데이터(명령어들 및 피연산자 데이터를 포함함)는 메모리(110)에 기록되고 그로부터 판독된다. 메모리(110)가 프로세서(101)와 별개로 예시되었지만, 일부 실시예들에서 메모리(110)의 전부 또는 일부는 프로세서(101)의 일부이고 프로세서(101)와 동일한 반도체 다이 또는 반도체 패키지에 통합된다는 것이 이해될 것이다.
프로세서(101)는 하나 이상의 프로세서 코어들(예를 들어, 프로세서 코어(102)) 및 컴퓨터 명령어들을 실행하기 위한 지원 회로부를 포함하는 중앙 프로세싱 유닛(CPU)과 같은 프로세싱 디바이스이다. 단순화를 위해 프로세서(101)가 단일 프로세서 코어로 예시되었지만, 일부 실시예들에서 프로세서(101)는 다수의 프로세서 코어들을 포함한다는 것이 이해될 것이다.
도시된 예에서, 명령어들의 실행을 지원하는 회로부는 키보드와 같은 하나 이상의 입력/출력 디바이스들에 인터페이스를 제공하는 입력/출력(I/O) 제어 모듈(107)을 포함한다. 일부 실시예들에서, 프로세서(101)는 컴퓨터 또는 통신 네트워크와 인터페이스하기 위한 하나 이상의 네트워크 인터페이스들, 프로세서(101)의 메모리 서브시스템과 인터페이스하기 위한 하나 이상의 메모리 제어기들 등과 같은 추가적인 지원 회로부를 포함한다. 그들의 지정된 동작들을 실행하는 과정에서, 지원 회로부는 본 명세서에서 프로세서 이벤트들(예를 들어, 이벤트(108))로서 지칭되는 조건들을 생성한다.
본 명세서에서 사용되는 바와 같이, 프로세서 이벤트는 프로세서의 하드웨어 모듈에 의해 시그널링되는 인터럽트 또는 예외를 지칭한다. 예를 들어, 사용자가 입력/출력 디바이스를 조작하는 것에 응답하여, I/O 제어 모듈(107)은 프로세서(101)가 사용자 조작에 응답할 수 있도록 인터럽트를 시그널링한다. 회로부는 이벤트를 프로세싱하기 위해 인터럽트 핸들러 또는 예외 핸들러와 같은 이벤트 핸들러의 실행을 트리거하기 위해 이벤트를 호출한다. 예를 들어, 키보드 또는 다른 입력 디바이스에서의 사용자 입력에 응답하여, I/O 제어 모듈(107)은, 예를 들어, 사용자 입력에 기반하여 데이터를 지정된 버퍼(미도시)에 저장함으로써, 사용자 입력을 프로세싱하는 인터럽트 핸들러를 트리거하기 위해 인터럽트 이벤트를 호출한다.
I/O 제어 모듈(107) 또는 다른 회로부에 의해 시그널링된 이벤트에 응답하여 예외 핸들러를 트리거하기 위해, 프로세서(101)는 지정된 이벤트 큐 등과 같은 지정된 회로부를 사용하여 지정된 시퀀스에서 지정된 동작을 실행한다. 프로세서 이벤트를 핸들링하기 위해 프로세서(101)에 의해 사용되는 동작, 시퀀스 및 회로부는 본 명세서에서 프로세서(101)의 이벤트 프로세싱 경로라고 지칭된다. 이벤트를 핸들링하는 것을 돕기 위해, 프로세서(101)는 이벤트 인터페이스(109)를 포함한다. 일부 실시예에서, 이벤트 인터페이스(109)는 고급 프로그래머블 인터럽트 제어기(Advanced Programmable Interrupt Controller, APIC) 또는 x2APIC 표준과 같은 지정된 이벤트 인터페이스 표준을 준수하는 모듈이다. 따라서, 일부 실시예들에서, 이벤트 인터페이스(109)는 인터럽트 및 예외와 같은 프로세서 이벤트를 표시하는 신호들을 수신하고, 이벤트의 소스 또는 벡터를 식별하고, 이벤트에 관한 임의의 추가 정보와 함께 이벤트의 표시를 프로세서 코어(102)에 제공하는 모듈이다. 이에 응답하여, 프로세서 코어(102)는 이벤트와 연관된 이벤트 핸들러를 호출한다. 특히, 프로세서 코어(102)는 이벤트 인터페이스에 의해 제공되는 정보를 이용하여 이벤트에 대응하는 이벤트 핸들러를 선택하고, 이벤트 핸들러를 실행함으로써 이벤트를 핸들링한다.
위에서 언급한 바와 같이, 가상화된 컴퓨팅 환경에서, 이벤트 프로세싱 경로는 프로세서(101)의 동작들 또는 데이터에 대한 무단 액세스를 추구하는 악성 엔티티들에 의한 잠재적인 공격 수단(avenue)를 제공한다. 이러한 공격들로부터 보호하기 위해, 가상화된 컴퓨팅 환경을 실행할 때, 프로세서(101)는 이벤트 프로세싱 경로의 하나 이상의 부분들에 대한 하이퍼바이저의 액세스를 제한한다.
예시하기 위해, 도 1의 예에서, 프로세서(101)는 게스트(104 및 106)로도 지칭되는 2개의 가상 머신 VM1(104) 및 VM2(106)를 동시에 실행함으로써 가상화된 컴퓨팅 환경을 구현한다. 게스트(104 및 106) 각각은 운영 체제, 애플리케이션 프로그램 등과 같은 하나 이상의 컴퓨터 프로그램을 포함하는 가상 머신이다. 일부 실시예들에서, 무단 액세스 또는 조작으로부터 보안을 제공하기 위해, 게스트들(104 및 106)은 다수의 계층들을 포함하며, 각각의 계층은 무단 액세스를 방지하기 위해 지정된 액세스 보호들을 갖는다. 예를 들어, 게스트(104)는 다른 계층들에서 소프트웨어에 의한 액세스 및 조작으로부터 보호되는 보안 계층(120)(지정된 가상 머신 권한 레벨 0(VMPL0)) 및 인터럽트 핸들러들, 예외 핸들러들 등의 실행과 같은 게스트(104)에 대한 이벤트 프로세싱을 수행하는 비보안 계층(132)을 포함하는 다수의 계층들을 갖는다. 따라서, 예를 들어, 일부 실시예들에서, 비보안 계층(132)은 운영 체제를 실행하는 VMPL3 계층이지만, VMPL0 계층에서의 데이터 또는 동작들을 변경하라는 운영 체제로부터의 명령들(commands)은 그들이 지정된 보안 프로토콜들과 일치하지(match) 않는 한 무시되고, 그에 의해 게스트(104)를 부정이용(exploitation)으로부터 보호한다.
다른 실시예들에서, 보안 계층(120)은 비보안 계층(132)에 위치된 운영 체제에 대한 중앙 프로세싱 유닛(CPU)을 에뮬레이트하고, 보안 계층(120)은 비보안 계층(132)에 대한 인터럽트 핸들링 및 APIC 에뮬레이션 모두를 수행한다. 이는 비보안 계층(132)에서 실행되는 운영 체제가 이벤트 인터페이스(109)를 표준 APIC 또는 x2APIC 인터페이스로서 이용하도록 하며, 보안 계층(120)은 본 명세서에 추가로 설명된 바와 같은 이벤트 핸들링을 수행한다.
가상화를 지원하기 위해, 프로세서(101)는 프로세서(101)의 하드웨어 리소스와 게스트(104 및 106) 사이의 인터페이스를 제공하는 하이퍼바이저(105)를 포함한다. 특히, 게스트(104 및 106)는 게스트가 전용 컴퓨터 시스템에서 실행 중인 것처럼 하드웨어 요청 및 기타 통신을 생성하는 표준 디바이스 드라이버 및 기타 인터페이스 소프트웨어를 포함한다. 하이퍼바이저(105)는 디바이스 드라이버들 및 다른 인터페이스 소프트웨어로부터 통신들을 수신하고, 상기 통신들에 기반하여 게스트들(104 및 106)에 대한 하드웨어 리소스들의 제공을 관리한다. 따라서, 하이퍼바이저(105)는 게스트(104 및 106)와 하드웨어 리소스를 추상화하는 프로세서(101)의 하드웨어 리소스 사이에 계층을 제공하여 게스트(104 및 106)가 전용 컴퓨터 시스템용으로 설계된 표준 하드웨어 인터페이스 소프트웨어를 사용할 수 있도록 한다.
가상화를 추가로 지원하기 위해, 하이퍼바이저(105)는 이벤트 프로세싱의 적어도 일부 측면을 핸들링한다. 예를 들어, I/O 제어 모듈(107)로부터의 인터럽트의 표시에 응답하여, 하이퍼바이저(105)는 인터럽트와 연관된 게스트를 식별하고 인터럽트 식별자, 인터럽트와 연관된 우선순위 레벨 등과 같은 임의의 연관된 이벤트 핸들링 정보와 함께 이벤트 인터페이스(109)를 통해 게스트에게 인터럽트를 시그널링한다. 일반적으로, 하이퍼바이저는 이벤트 인터페이스(109)를 사용하여 이벤트 하드웨어 정보를 게스트에 직접 주입하고, 게스트는 대응하는 이벤트 핸들러를 이용하여 주입된 이벤트 핸들링 정보를 기반하여 이벤트를 프로세싱한다. 그러나, 위에서 언급한 바와 같이, 하이퍼바이저가 이벤트 인터페이스(109) 또는 이벤트 핸들링 경로의 다른 부분을 통해 임의의 이벤트 핸들링 정보를 주입하는 것을 허용하는 것은 악성 하이퍼바이저에 대한 잠재적인 공격 수단을 제공한다. 따라서, 프로세서(101)는 하이퍼바이저가 이벤트 프로세싱 경로의 하나 이상의 부분에 액세스하는 것을 제한한다.
예시하기 위해, 게스트들(104 및 106)의 각각의 계층은 제한된 주입 모드(Restricted Injection Mode) 및 대체 주입 모드(Alternate Injection Mode)로 지정된, 2개의 상이한 모드들 중 어느 하나에서 개별적으로 동작가능하다. 이들 모드는 게스트(104)에서의 구현예와 관련하여 설명될 것이지만, 게스트(106)는 유사한 방식으로 동작한다는 것이 이해될 것이다. 제한된 주입 모드에서, 하이퍼바이저(105)는 게스트의 비보안 계층에 직접 이벤트 핸들링 정보를 제공하는 것을 허용하지 않는다. 대신에, 하이퍼바이저(105)는 이벤트 인터페이스(109)를 통해 이벤트의 발생을 게스트(104)의 보안 계층(120)에 시그널링하고, 이벤트에 대한 이벤트 핸들링 정보를 메모리(110)에 저장된 이벤트 큐(130)에 저장한다. 일부 실시예들에서, 이벤트 핸들링 정보는: 이벤트 소스의 표시자(예를 들어, 인터럽트를 트리거한 하드웨어 모듈), 이벤트의 유형(예를 들어, 이벤트가 인터럽트 또는 예외인지 여부, 인터럽트 또는 예외 유형 등), 이벤트의 우선순위 레벨 등 중 하나 이상을 포함한다.
이벤트 신호에 응답하여, 보안 계층(120)은 이벤트 큐(130)에서 이벤트 핸들링 정보에 액세스하기 위해 예외 핸들러를 호출한다. 예외 핸들러를 통해, 보안 계층(120)은 이벤트 제어 정보가 지정된 보안 프로토콜을 준수하는지를 결정하고, 만약 그렇다면, 정상적인 프로세싱을 위해 이벤트 핸들링 정보를 비보안 계층(132)에 제공한다. 예를 들어, 일부 실시예들에서, 보안 계층(120)은 이벤트 핸들링 정보가 프로세서(101)의 예상된 하드웨어 행동과 일치하는지를 결정한다. 따라서, 일부 실시예들에서, 보안 계층(120)은 이벤트 우선순위 레벨, 이벤트 유형, 이벤트 소스, 이벤트 식별자 등 중 하나 이상을 대응하는 지정된 값 범위와 비교한다. 임의의 이벤트 정보가 대응하는 지정된 범위를 벗어나면, 보안 계층(120)은 이벤트를 비-보안 계층(132)에 시그널링하지 않고, 보안 계층(120)은 이벤트 핸들링 정보를 비-보안 계층(132)에 제공하지 않는다. 일부 실시예들에서, 보안 계층(120)은 네트워크를 통해 사용자 또는 다른 컴퓨터 시스템에 잠재적인 시도된 보안 침해(breach)를 시그널링하는 것, 게스트(104)의 실행을 중단하는 것 등과 같은 추가적인 교정 조치(remedial action)를 취한다.
이벤트 핸들링 정보가 지정된 보안 프로토콜을 준수하는 경우, 보안 계층(120)은 이벤트 핸들링 정보와 함께 이벤트를 이벤트 인터페이스(109)에 시그널링한다. 이에 응답하여, 이벤트 인터페이스(109)는 이벤트를 비보안 계층(132)에 통지하고 이벤트 핸들링 정보를 비보안 계층(132)에 제공한다. 비보안 계층(132)은 이벤트에 대한 예외 핸들러를 호출하는 것과 같이 이벤트 핸들링 정보를 사용하여 이벤트를 프로세싱한다. 따라서, 이벤트 핸들링 정보는 정보가 프로세싱을 위해 비보안 계층(132)으로 이벤트 인터페이스(109)를 통해 전달되도록 허용되기 전에 보안 계층(120)에 의해 먼저 검토된다. 제한된 주입 모드는 도 2 및 3과 관련하여 아래에서 더 설명된다.
대체 주입 모드에서, 게스트(104)의 계층(예를 들어, 비보안 계층(132))은 이벤트 제어 정보(118)를 사용하여 이벤트 핸들링 정보를 프로세싱한다. 이벤트 제어 정보(118)는 이벤트 인터페이스(109)를 제어하는 정보이다. 예를 들어, 일부 실시예들에서, 이벤트 제어 정보(118)는 프로세싱되도록 허용되는 이벤트들의 우선순위 레벨을 설정하는 태스크 우선순위 레지스터(TPR) 정보를 포함한다. 하이퍼바이저(105)가 제공하는 이벤트가 TPR 정보보다 낮은 우선순위 레벨을 가지는 경우, 이벤트를 프로세싱하지 않아 게스트(104)를 악성 공격으로부터 보호한다.
일부 실시예들에서, 이벤트 제어 정보(118)는 메모리(110)의 암호화된 영역에 저장되며, 여기서 암호화된 영역에 저장된 데이터는 게스트(104)와 연관된 키로 암호화된다. 키는 하이퍼바이저(105)에 알려지지 않으며, 이에 의해 하이퍼바이저(105)가 이벤트 제어 정보(118)를 변경하는 것을 방지하고 게스트(104)를 더 보호한다. 대체 주입 모드는 도 4 및 5와 관련하여 아래에서 더 설명된다.
게스트들(104 및 106)의 개별 계층들에 대한 보안 모드를 설정하기 위해, 프로세서 코어(102)는 모드 제어 레지스터(111)를 포함한다. 모드 제어 레지스터(111)는 복수의 필드들을 포함하며, 각각의 필드는 대응하는 게스트 레벨에 대한 보안 모드를 설정함으로써, 상이한 게스트 레벨들에 대한 보안 모드가 독립적으로 설정되도록 한다. 따라서, 예를 들어, 일부 실시예들에서, 보안 계층(120)은 제한된 주입 모드에 있고, 동시에 비보안 계층(132)은 대체 주입 모드에 있다. 일부 실시예들에서, 모드 제어 레지스터(111)는 게스트의 보안 계층(예를 들어, 보안 계층(120))에 의해서만 프로그램가능하고, 하이퍼바이저(105)에 의해 프로그램가능하지 않으므로, 프로세서(101)의 이벤트 프로세싱 경로를 더 보호할 수 있다. 또한, 일부 실시예들에서, 모드 제어 레지스터(111)는 제한된 주입 모드 및 대체 주입 모드 둘 모두가 동일한 게스트 계층에 대해 동시에 유효하도록 허용하지 않는다.
일부 실시예들에서, 게스트(104)의 보안은 보안 계층(120)을 제한된 주입 모드에 배치함으로써 강화되고, 비보안 계층(132)은 대체 주입 모드에 배치된다. 이러한 배열 하에서, 하이퍼바이저(105)는 이벤트(예를 들어, 이벤트(108))를 이벤트 인터페이스(109)에 시그널링하고 대응하는 이벤트 핸들링 정보를 이벤트 큐(130)에 저장한다. 이벤트 신호에 응답하여, 보안 계층(120)(제한된 주입 모드에서)은 이벤트 큐(130)로부터 이벤트 핸들링 정보를 검색하고 이벤트 핸들링 정보가 지정된 보안 프로토콜을 준수하는지를 결정한다. 그렇지 않다면, 보안 계층(120)은 이벤트 인터페이스(109)에 이벤트를 시그널링하지 않는다.
이벤트 핸들링 정보가 보안 프로토콜과 일치하면, 보안 계층(120)은 이벤트에 대한 이벤트 제어 정보를 이벤트 제어 정보(118)로서 메모리(110)의 암호화된 영역에 저장한다. 보안 계층(120)은 이벤트 핸들링 정보(118)를 이벤트 인터페이스(109)에 제공한다. 이에 응답하여, 그리고 비보안 계층(132)이 대체 주입 모드에 있는 것에 응답하여, 이벤트 인터페이스(109)는 이벤트 제어 정보(118)에 액세스하고, 이벤트 제어 정보를 복호화하며, 복호화된 제어 정보 및 이벤트 핸들링 정보를 사용하여, 예컨대 비보안 계층(132)에 이벤트와 연관된 이벤트 핸들러(예를 들어, 인터럽트 또는 예외 핸들러)를 실행하도록 요청함으로써 이벤트를 프로세싱한다. 따라서, 이벤트 핸들링은 이벤트 인터페이스(109)에 의해 제공된 표준 인터페이스를 통해 관리되지만, 하이퍼바이저(105)에 의해 직접 보다는 보안 계층(120)에 의해 호출된다. 이는 비보안 계층(132) 또는 이벤트 인터페이스(109)에서 실행되는 소프트웨어의 재설계를 요구하지 않고, 비보안 계층(132)이 표준 방식으로 이벤트를 핸들링하고 이에 응답할 수 있게 한다.
도 2는 일부 실시예들에 따른 프로세서(101)에서의 제한된 주입 모드에서의 이벤트 프로세싱의 예를 예시한다. 예시된 예에서, 가상 머신(104)은 두 개의 계층, 즉 보안 계층(120)과 비보안 계층(132)을 포함한다. 전술한 바와 같이, 보안 계층(120)은 비보안 계층(132), 하이퍼바이저(105) 및 다른 비보안 엔티티들에 의한 수정으로부터 보호되는 게스트(104)의 보안 부분이다. 비보안 계층(132)은 게스트 운영 체제 및 다른 프로그램들을 실행하는 게스트(104)의 계층이고, 일반적으로 게스트(104)의 다른 프로그램들 또는 계층들과 같은 다른 엔티티들에 의해 액세스가능하다.
동작 시에, 하이퍼바이저(105)는 이벤트(인터럽트 또는 예외)의 표시를 수신한다. 표시는 이벤트의 유형, 이벤트가 지향된(directed) 게스트의 표시자 등과 같은 이벤트 정보를 더 포함한다. 이벤트의 표시에 응답하여, 하이퍼바이저(105)는 이벤트를 생성한 디바이스의 식별자, 이벤트의 우선순위 레벨 등과 같은 추가적인 이벤트 정보를 생성한다. 하이퍼바이저(105)는 메모리(110)에 저장된 이벤트 큐(130)에 이벤트 핸들링 정보(234)를 저장한다.
또한, 이벤트에 응답하여, 하이퍼바이저는 이벤트 인터페이스(109)에 이벤트 신호(208)를 제공한다. 일부 실시예들에서, 이벤트 신호(208)는 이벤트 핸들링 정보(234) 또는 이벤트의 유형 또는 소스의 임의의 표시를 포함하지 않고 대신에 이벤트가 발생했음을 시그널링하는 단순 예외 신호(예를 들어, x86 예외 신호)이다. 이벤트 신호(208)에 응답하여, 이벤트 인터페이스는 게스트(104)에게 통지한다. 이에 응답하여, 보안 계층(120)은 이벤트 핸들러를 실행하여, 이벤트 핸들링 정보(234)를 검색하기 위해 메모리(110)에서 이벤트 큐(230)에 액세스한다. 일부 실시예들에서, 보안 계층(120)은 이벤트의 소스 및 유형이 예상된 소스 및 유형임을 보장하는 것과 같은, 이벤트의 우선순위 레벨이 TPR 정보를 준수하는 것과 같은, 지정된 보안 프로토콜의 준수를 위해 이벤트 핸들링 정보(234)를 검토한다. 이벤트 핸들링 정보(234)가 보안 프로토콜을 준수하지 않으면, 보안 계층(120)은 프로세싱을 위해 이벤트 인터페이스(109)에 이벤트를 시그널링하지 않으며, 이에 의해 잠재적인 공격으로부터 게스트(104)를 보호한다. 보안 프로토콜들을 준수하는 이벤트 핸들링 정보(234)에 응답하여, 보안 계층(120)은 정상적인 이벤트 프로세싱을 위해 이벤트 인터페이스(109)에 이벤트를 시그널링한다.
따라서, 상기 예에 의해 도시된 바와 같이, 제한된 주입 모드에서 하이퍼바이저(105)는 이벤트 정보를 비보안 계층(132)에 직접 통신하는 것이 제한된다. 대신에, 하이퍼바이저(105)는 이벤트의 비교적 간단한 표시들을 보안 계층(120)에 제공하고 게스트(104)의 보안 계층(120)에 의해서만 액세스 가능한 이벤트 큐를 통해 이벤트 정보를 제공한다. 따라서, 비보안 계층(132)은 이벤트 정보를 비보안 계층(132)에 직접 제공하고 잠재적으로 보안 정보에 액세스하거나 게스트(104)를 조작하는 악성 하이퍼바이저로부터 보호된다.
도 3은 일부 실시예들에 따른 제한된 주입 모드에서 게스트 계층을 동작시키는 방법(300)의 흐름도이다. 설명의 목적들을 위해, 방법(300)은 도 1의 프로세싱 시스템(100)에서의 예시적인 구현예와 관련하여 설명된다. 블록(302)에서, 하이퍼바이저(105)는 I/O 제어 모듈(107)과 같은 프로세서(101)의 하드웨어 리소스로부터 프로세서 이벤트의 표시를 수신한다. 이에 응답하여, 하이퍼바이저(105)는 이벤트를 생성한 리소스, 이벤트가 지향되는 게스트, 이벤트와 연관된 우선순위 레벨 등과 같은 이벤트와 연관된 이벤트 정보를 결정한다. 블록(304)에서, 하이퍼바이저(105)는 메모리(110)에 위치된 이벤트 큐(230)에 이벤트 정보를 저장한다.
블록(306)에서, 하이퍼바이저(105)는 이벤트의 발생을 표시하는 신호를 이벤트 인터페이스(109)에 제공하며, 여기서 신호는 이벤트가 타겟팅되는 게스트를 표시한다. 따라서, 이벤트가 게스트(104)에 타겟팅되는 경우, 하이퍼바이저(105)는 이벤트를 표시하는 신호를 이벤트 인터페이스(109)에 제공한다. 일부 실시예에서, 이벤트 인터페이스는 하이퍼바이저(105)에 의해 제공된 임의의 이벤트 정보를 신호와 함께 무시한다. 따라서, 신호는 연관된 이벤트 정보 없이 이벤트가 발생했음을 게스트에 표시하는 "도어벨(doorbell)"으로만 작동한다.
블록(308)에서, 하이퍼바이저(105)로부터의 신호에 응답하여, 이벤트 인터페이스(109)는 이벤트의 보안 계층에 통지한다. 이에 응답하여, 보안 계층(120)은 이벤트 큐(230)에 액세스하고 이벤트 정보를 검색한다. 이벤트 정보가 이벤트 보안 프로토콜을 준수하는 경우, 보안 계층(120)은 이벤트를 프로세서(101)의 이벤트 인터페이스(109)에 표시하는 것과 같이, 이벤트 정보를 비보안 계층(232)에 제공한다. 비보안 계층(232)은 이벤트를 프로세싱하기 위해 예외 핸들러를 실행한다. 이벤트 정보가 보안 프로토콜들을 준수하지 않는 경우, 보안 계층(120)은 이벤트 인터페이스(109)에 이벤트를 시그널링하지 않으며, 따라서 이벤트가 프로세싱되지 않으며, 이에 의해 게스트(104)가 부정 이용으로부터 보호된다.
도 4는 일부 실시예들에 따른 프로세서(101)에서의 대체 주입 모드에서의 이벤트 프로세싱의 예를 예시한다. 예시된 예에서, 도 2의 예와 유사하게, 가상 머신(104)은 두 개의 계층, 즉 보안 계층(120)과 비보안 계층(132)을 포함한다. 전술한 바와 같이, 보안 계층(120)은 비보안 계층(232), 하이퍼바이저(105) 및 다른 비보안 엔티티들에 의한 수정으로부터 보호되는 게스트(104)의 보안 부분이다. 도 2의 예에서와 같이, 비보안 계층(132)은 게스트 운영 체제 및 다른 프로그램들을 실행하는 게스트(104)의 계층이고, 일반적으로 게스트(104)의 다른 프로그램들 또는 계층들에 의해 액세스가능하다.
또한, 예시된 예에서, 메모리(110)는 암호화된 영역, 지정된 가상 머신 상태 지역(Virtual Machine State Area, VMSA) 영역(442)을 포함한다. VMSA 영역(442)은 게스트(104)와 고유하게 연관되는 키로 암호화된 데이터를 저장한다. 일부 실시예들에서, 키는 보안 계층(120)에 의해서만 사용될 수 있고 하이퍼바이저(105)에 의해서는 사용될 수 없다. 따라서 보안 계층(120)은 VMSA 영역(442)에 대한 모든 액세스를 관리한다. 특히, 보안 계층(120)은 게스트-특정 키를 사용하여 기록 및 판독을 위한 데이터를 각각 암호화 및 복호화함으로써 VMSA 영역(442)에 대한 데이터의 기록 및 판독을 관리한다. 일부 실시예들에서, 데이터의 암호화 및 복호화는 보안 계층(120)의 요청에서 프로세서(101)의 전용 하드웨어(도시되지 않음)에 의해 구현된다. 게스트-특정 키는 알려지지 않고 하이퍼바이저(105)에 액세스가능하지 않으며, 따라서 VMSA 영역(442)에 저장된 데이터는 하이퍼바이저(105)에 액세스가능하지 않다.
VMSA 영역(442)은 게스트(104)에 의해 어떤 이벤트들이 프로세싱되는지 및 그러한 이벤트들이 어떻게 프로세싱되는지 중 하나 이상을 관리하는(govern) 이벤트 제어 정보(444)를 저장한다. 예를 들어, 일부 실시예들에서, 이벤트 제어 정보(444)는 게스트(104)의 운영 체제에 의해 프로세싱되도록 허용된 이벤트들의 최소 우선순위 레벨을 표시하는 TPR 정보를 저장한다. 운영 체제는 종래의 운영 체제 프로토콜들에 따라 TPR 레벨을 설정하고, TPR 레벨을 보안 계층(120)에 표시하며, 보안 계층(120)은 이하에 더 설명되는 바와 같이 이벤트 제어 정보(444)에서 TPR 레벨을 저장한다.
동작 시에, 하이퍼바이저(105)는 I/O 제어 모듈(107)과 같은 하드웨어 리소스로부터 이벤트의 표시를 수신한다. 이에 응답하여, 하이퍼바이저(105)는 이벤트와 연관된 이벤트 정보(408)를 결정한다. 전술한 바와 같이, 이벤트 정보(408)는 이벤트와 연관된 우선순위 레벨, 이벤트를 생성한 하드웨어 리소스, 이벤트의 유형 등과 같은 정보를 포함한다. 하이퍼바이저(105)는 도 2와 관련하여 전술한 바와 같이 이벤트 큐(130)를 통해 또는 직접적으로 보안 계층(120)에 이벤트 정보(408)를 제공한다.
지정된 보안 프로토콜을 준수하는 이벤트 정보(408)에 응답하여, 보안 계층(120)은 이벤트에 대한 이벤트 제어 정보(444)를 VMSA 영역(442)에 저장한다. 일부 실시예에서, 이벤트 제어 정보(444)는 정보가 메모리(110)에 저장됨에 따라 프로세서(101)의 하드웨어에 의해 자동으로 암호화된다. 또한, 보안 계층(120)은 이벤트 정보(408)와 함께 이벤트 인터페이스(109)에 이벤트를 시그널링한다. 이에 응답하여, 이벤트 인터페이스(109)는 VMSA 영역(442)에서 이벤트 제어 정보(444)에 액세스하고 이벤트 제어 정보(444) 및 이벤트 정보(408)에 기반하여 이벤트를 프로세싱한다. 따라서, 도 4의 예에서, 하이퍼바이저(105)는 어떤 이벤트들이 프로세싱되고 어떻게 프로세싱되는지를 관리하는 이벤트 제어 정보에 액세스하는 것이 제한되며, 이에 의해 악성 하이퍼바이저로부터 게스트(104)를 보호한다.
도 5는 일부 실시예들에 따른 대체 주입 모드에서 프로세서를 동작시키는 방법(500)의 흐름도를 도시한다. 방법(500)은 도 1의 프로세싱 시스템(100)에서의 예시적인 구현예와 관련하여 설명된다. 블록(502)에서, 하이퍼바이저(105)는 I/O 제어 모듈(107)과 같은 하드웨어 리소스로부터 이벤트의 표시를 수신한다. 이에 응답하여, 블록(504)에서, 하이퍼바이저(105)는 이벤트를 보안 계층(120)에 표시한다. 일부 실시예들에서, 보안 계층(120)은 제한된 주입 모드에 있고, 이벤트 표시에 응답하여, 이벤트 큐(130)로부터 이벤트에 대한 이벤트 핸들링 정보를 검색한다. 보안 계층(120)은 이벤트 핸들링 정보가 지정된 보안 프로토콜과 일치하는지를 결정하고, 그렇지 않으면, 이벤트의 추가 프로세싱을 방지한다. 이벤트 핸들링 정보가 보안 프로토콜들을 준수하는 경우, 방법은 블록(506)으로 진행한다.
블록(506)에서, 게스트(104)의 보안 계층(120)은 메모리(110)의 VMSA 영역(442)에서 이벤트 제어 정보(444)로서 태스크 우선순위 레벨(TPR)와 같은 이벤트 제어 데이터를 저장한다. 저장 프로세스 이전 또는 동안, 보안 계층(120)은 게스트(104)와 연관된 키로 이벤트 제어 정보(444)를 암호화하며, 여기서 키는 알려지지 않고 하이퍼바이저(105)에 액세스할 수 없다.
블록(508)에서, 게스트(104)의 보안 계층(120)은 이벤트 인터페이스(109)를 통해 비보안 계층(132)에 이벤트 정보(408)가 프로세싱될 준비가 되었음을 표시한다. 이에 응답하여, 이벤트 인터페이스(109)는 VMSA(442)로부터 암호화된 이벤트 제어 정보(444)를 검색하고, 정보를 복호화하고, 복호화된 이벤트 제어 정보(444)를 사용하여 표준 이벤트 프로세싱 프로토콜을 사용하여 이벤트를 프로세싱한다.
일부 실시예들에서, 위에서 설명된 기술들의 특정 측면들은 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서들에 의해 구현될 수 있다. 소프트웨어는 비일시적 컴퓨터 판독가능 저장 매체 상에 저장되거나 그렇지 않으면 유형적으로 실시된 하나 이상의 실행가능한 명령어들의 세트들을 포함한다. 소프트웨어는 하나 이상의 프로세서들에 의해 실행될 때, 위에서 설명된 기술들의 하나 이상의 측면들을 수행하기 위해 하나 이상의 프로세서들을 조작하는 명령어들 및 특정 데이터를 포함할 수 있다. 비일시적 컴퓨터 판독 가능 저장 매체는 자기 또는 광학 디스크 저장 장치, 플래시 메모리(Flash memory), 캐시(cache), 램(RAM) 등과 같은 솔리드 스테이트 저장 장치 또는 다른 비휘발성 메모리 장치 등을 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체 상에 저장된 실행가능한 명령어들은 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 하나 이상의 프로세서들에 의해 해석되거나 다른 방식으로 실행가능한 다른 명령어 포맷일 수 있다.
일반적인 설명에서 상술한 모든 활동 또는 엘리먼트가 요구되지 않으며, 특정 활동 또는 장치의 일부가 요구되지 않을 수 있으며, 상술한 것들에 더하여 하나 이상의 추가적인 활동이 수행될 수 있거나, 또는 포함된 엘리먼트들이 요구된다는 점에 유의한다. 또한 활동이 나열되는 순서는 반드시 활동이 수행되는 순서는 아니다. 또한, 구체적인 실시예를 참조하여 개념을 설명하였다. 그러나 통상의 지식을 가진 자라면 아래의 청구항들에 기재된 바와 같이 본 개시의 범위를 벗어나지 않는 범위에서 다양한 수정 및 변경이 가능하다는 것을 알 수 있다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아니라 예시적인 것으로 간주되어야 하며, 이러한 모든 수정은 본 개시의 범위 내에 포함되도록 의도된다.
이점들, 다른 장점들, 및 문제점들에 대한 해결책들이 특정 실시예들과 관련하여 위에서 설명되었다. 그러나, 이점, 장점, 문제에 대한 해결책, 및 어떤 이점, 장점, 또는 해결책이 발생하거나 더 두드러지게 될 수 있는 어떤 특징은 청구항들 중 어느 하나 또는 모든 청구항들의 중요한, 요구되는, 또는 필수적인 특징으로 해석되지 않는다. 더욱이, 위에서 개시된 특정 실시예들은 단지 예시적이며, 개시된 주제가 본 명세서의 교시들의 이점을 갖는 당업자들에게 명백하지만 상이한 그러나 동등한 방식들로 수정되고 실시될 수 있다. 이하의 청구항에 기재된 것 이외의, 본 명세서에 기재된 구성 또는 설계의 상세사항에 대한 제한은 의도되지 않는다. 따라서, 위에서 개시된 특정 실시예들은 변경 또는 수정될 수 있고, 이러한 모든 변형들은 개시된 주제의 범위 내에서 고려된다는 것이 명백하다. 따라서, 본 명세서에서 추구하는 보호범위는 아래의 청구범위에 명시된 바와 같다.

Claims (20)

  1. 방법에 있어서,
    게스트 프로그램에서 하이퍼바이저로부터 프로세서 이벤트의 표시를 수신하는 단계;
    상기 프로세서 이벤트의 상기 표시를 수신하는 것에 응답하여, 지정된 메모리 영역에서 이벤트 핸들링 정보에 액세스하는 단계; 및
    상기 이벤트 핸들링 정보를 기반으로 상기 프로세서 이벤트를 프로세싱하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 게스트 프로그램은 보안 계층 및 비보안 계층을 포함하고; 및
    상기 프로세서 이벤트의 상기 표시를 수신하는 단계는 상기 게스트 프로그램의 상기 보안 계층에서 상기 프로세서 이벤트의 상기 표시를 수신하는 단계를 포함하는, 방법.
  3. 제2항에 있어서,
    상기 이벤트 핸들링 정보에 액세스하는 것은 상기 이벤트 핸들링 정보에 액세스하는 보안 계층을 포함하는, 방법.
  4. 제2항에 있어서,
    상기 프로세서 이벤트의 상기 표시를 수신하는 단계는 프로세서의 이벤트 인터페이스에서 상기 프로세서 이벤트의 상기 표시를 수신하는 단계를 포함하는, 방법.
  5. 제1항에 있어서,
    상기 지정된 메모리 영역은 상기 하이퍼바이저에 액세스할 수 없는 메모리 영역을 포함하는, 방법.
  6. 제5항에 있어서, 상기 지정된 메모리 영역은 암호화된 메모리 영역인, 방법.
  7. 제5항에 있어서, 상기 이벤트 핸들링 정보는 태스크 우선순위 레지스터 (Task Priority Register, TPR) 정보를 포함하는, 방법.
  8. 방법에 있어서,
    프로세서에서 보안 레지스터의 상태를 설정하는 단계; 및
    상기 보안 레지스터의 상기 상태에 기반하여, 하이퍼바이저에 의한 이벤트 통지를 게스트 프로그램의 계층으로 제한하는 단계를 포함하고, 상기 이벤트는 인터럽트 및 예외 중 적어도 하나를 포함하는, 방법.
  9. 제8항에 있어서, 상기 이벤트 통지를 제한하는 단계는,
    상기 게스트 프로그램의 보안 계층에서 상기 하이퍼바이저로부터 이벤트의 표시를 수신하는 단계;
    상기 표시를 수신하는 것에 응답하여, 지정된 메모리 영역에서 이벤트 데이터에 액세스하는 단계를 포함하는, 방법.
  10. 제9항에 있어서,
    상기 하이퍼바이저는 상기 지정된 메모리 영역에 상기 이벤트 데이터를 저장하는, 방법.
  11. 제8항에 있어서, 상기 이벤트 통지를 제한하는 단계는,
    상기 하이퍼바이저로부터 이벤트의 표시를 수신하는 단계;
    상기 표시에 응답하여, 이벤트 제어 정보를 검색하기 위해 지정된 메모리 영역에 액세스하는 단계를 포함하고, 상기 지정된 메모리 영역은 상기 하이퍼바이저에 액세스할 수 없는, 방법.
  12. 제11항에 있어서, 상기 지정된 메모리 영역은 상기 게스트 프로그램과 연관된 키로 암호화되는, 방법.
  13. 제11항에 있어서, 상기 이벤트 제어 정보는 태스크 우선순위 레지스터 (Task Priority Register, TPR) 정보를 포함하는, 방법.
  14. 프로세서에 있어서,
    게스트 프로그램을 실행하도록 구성된 프로세서 코어;
    프로세서 이벤트의 표시를 상기 게스트 프로그램에 제공하도록 구성된 하이퍼바이저를 포함하고; 및
    상기 게스트 프로그램은, 상기 프로세서 이벤트의 상기 표시를 수신하는 것에 응답하여, 지정된 메모리 영역에서 이벤트 핸들링 정보에 액세스하고 상기 이벤트 핸들링 정보에 기반하여 상기 프로세서 이벤트를 프로세싱하도록 구성되는, 프로세서.
  15. 제14항에 있어서,
    상기 게스트 프로그램은 상기 프로세서 이벤트의 상기 표시를 수신하도록 구성된 보안 계층과 비보안 계층을 포함하는, 프로세서.
  16. 제15항에 있어서,
    상기 보안 계층은 상기 이벤트 핸들링 정보에 액세스하도록 구성되는, 프로세서.
  17. 제15항에 있어서,
    상기 프로세서 이벤트의 상기 표시를 수신하는 것은 상기 프로세서의 이벤트 인터페이스에서 상기 표시를 수신하는 것을 포함하는, 프로세서.
  18. 제14항에 있어서,
    상기 지정된 메모리 영역은 상기 하이퍼바이저에 액세스할 수 없는 메모리 영역을 포함하는, 프로세서.
  19. 제18항에 있어서, 상기 지정된 메모리 영역은 암호화된 메모리 영역인, 프로세서.
  20. 제19항에 있어서, 상기 이벤트 핸들링 정보는 태스크 우선순위 레지스터 (Task Priority Register, TPR) 정보를 포함하는, 프로세서.
KR1020227014845A 2019-10-10 2020-10-09 프로세서에서 하이퍼바이저 보안 이벤트 핸들링 KR20220080126A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962913487P 2019-10-10 2019-10-10
US62/913,487 2019-10-10
US16/712,190 2019-12-12
US16/712,190 US11842227B2 (en) 2019-10-10 2019-12-12 Hypervisor secure event handling at a processor
PCT/US2020/055049 WO2021072243A1 (en) 2019-10-10 2020-10-09 Hypervisor secure event handling at a processor

Publications (1)

Publication Number Publication Date
KR20220080126A true KR20220080126A (ko) 2022-06-14

Family

ID=75382943

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227014845A KR20220080126A (ko) 2019-10-10 2020-10-09 프로세서에서 하이퍼바이저 보안 이벤트 핸들링

Country Status (6)

Country Link
US (1) US11842227B2 (ko)
EP (1) EP4042303A4 (ko)
JP (1) JP2022551684A (ko)
KR (1) KR20220080126A (ko)
CN (1) CN114868126A (ko)
WO (1) WO2021072243A1 (ko)

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110197004A1 (en) * 2010-02-05 2011-08-11 Serebrin Benjamin C Processor Configured to Virtualize Guest Local Interrupt Controller
US8910158B2 (en) 2011-12-14 2014-12-09 Intel Corporation Virtualizing interrupt priority and delivery
US8892802B2 (en) 2012-01-01 2014-11-18 International Business Machines Corporation Enhancing interrupt handling in a virtual environment
US9400885B2 (en) 2014-01-10 2016-07-26 Bitdefender IPR Management Ltd. Computer security systems and methods using virtualization exceptions
US9792448B2 (en) * 2014-02-28 2017-10-17 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
GB2532415A (en) 2014-11-11 2016-05-25 Ibm Processing a guest event in a hypervisor-controlled system
US11379385B2 (en) * 2016-04-16 2022-07-05 Vmware, Inc. Techniques for protecting memory pages of a virtual computing instance
US10459850B2 (en) * 2016-09-20 2019-10-29 Advanced Micro Devices, Inc. System and method for virtualized process isolation including preventing a kernel from accessing user address space
US20180165224A1 (en) * 2016-12-12 2018-06-14 Ati Technologies Ulc Secure encrypted virtualization
US11687654B2 (en) * 2017-09-15 2023-06-27 Intel Corporation Providing isolation in virtualized systems using trust domains
US10860359B2 (en) * 2018-02-28 2020-12-08 Red Hat, Inc. Key management for encrypted virtual machines
US11074094B2 (en) * 2018-08-29 2021-07-27 Red Hat, Inc. Securing hypercall support for user space processes in virtual machines
US11693952B2 (en) * 2018-10-31 2023-07-04 Vmware, Inc. System and method for providing secure execution environments using virtualization technology
US10824349B1 (en) * 2018-12-17 2020-11-03 Advanced Micro Devices, Inc. Secured input/output resource protection
US11048800B2 (en) * 2018-12-17 2021-06-29 Intel Corporation Composable trustworthy execution environments
US11308215B2 (en) * 2019-03-08 2022-04-19 International Business Machines Corporation Secure interface control high-level instruction interception for interruption enablement
US11099878B2 (en) * 2019-06-28 2021-08-24 Intel Corporation Scalable virtual machine operation inside trust domains within the trust domain architecture

Also Published As

Publication number Publication date
US20210109798A1 (en) 2021-04-15
EP4042303A4 (en) 2023-10-18
JP2022551684A (ja) 2022-12-13
EP4042303A1 (en) 2022-08-17
US11842227B2 (en) 2023-12-12
WO2021072243A1 (en) 2021-04-15
CN114868126A (zh) 2022-08-05

Similar Documents

Publication Publication Date Title
CN107851151B (zh) 保护虚拟机的状态信息
EP3281146B1 (en) Isolating guest code and data using multiple nested page tables
EP3326104B1 (en) Technologies for secure trusted i/o access control
KR102255767B1 (ko) 가상 머신 감사를 위한 시스템 및 방법들
Cho et al. {Hardware-Assisted}{On-Demand} Hypervisor Activation for Efficient Security Critical Code Execution on Mobile Devices
US20210124824A1 (en) Securing secret data embedded in code against compromised interrupt and exception handlers
KR101052400B1 (ko) 액세스 권한 위임 방법, 머신 판독가능한 저장 매체, 장치 및 프로세싱 시스템
US20080229117A1 (en) Apparatus for preventing digital piracy
JP6682752B2 (ja) セキュアエンクレーブを用いてデータ暗号化を強化するための技術
US11442770B2 (en) Formally verified trusted computing base with active security and policy enforcement
CN110874468A (zh) 应用程序安全保护方法以及相关设备
WO2016164424A1 (en) Isolating guest code and data using multiple nested page tables
EP3314502B1 (en) Protecting state information for virtual machines
US11842227B2 (en) Hypervisor secure event handling at a processor
US11893107B2 (en) Apparatus and method for preventing security threat to virtual machine
EP3314516B1 (en) System management mode privilege architecture