KR20170060815A - 메모리의 커널영역을 보호하기 위한 전자장치 및 방법 - Google Patents
메모리의 커널영역을 보호하기 위한 전자장치 및 방법 Download PDFInfo
- Publication number
- KR20170060815A KR20170060815A KR1020150165474A KR20150165474A KR20170060815A KR 20170060815 A KR20170060815 A KR 20170060815A KR 1020150165474 A KR1020150165474 A KR 1020150165474A KR 20150165474 A KR20150165474 A KR 20150165474A KR 20170060815 A KR20170060815 A KR 20170060815A
- Authority
- KR
- South Korea
- Prior art keywords
- kernel
- area
- snooper
- memory
- protection
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S19/00—Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
- G01S19/01—Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
- G01S19/02—Details of the space or ground control segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
루트킷으로부터 현재 실행중인 프로세스가 사용하는 메모리의 중요 커널영역을 보호하기 위한 방법 및 전자장치가 개시된다. 본 발명의 방법은 운영체제의 복수 프로세스들 중 현재 실행 중인 프로세스에서 사용하는 레지스터(Translation Table Base Resistor)의 갱신 이벤트를 감시하여 상기 현재 실행 중인 프로세스의 가상주소를 물리주소로 변환하는 페이지테이블의 커널영역의 위치를 확인하는 단계와; 상기 커널영역의 위치정보를 운영체제의 프로세스에서 사용하는 메모리에 연결된 스누퍼에 전송하는 단계와; 상기 스누퍼에 의해 상기 수신된 위치정보를 기초로 현재 실행 중인 프로세스에서 사용하는 메모리의 상기 커널영역을 보호하는 단계를 포함한다. 본 발명에 의하면, 게스트 OS의 현재 실행 중인 프로세스가 사용하는 메모리의 고유 커널영역을 최소한 오버헤드로 탐지하고, 스누퍼가 프로세스가 실행될 때마다 중요 커널영역을 설정함으로써 중요 커널영역에 대한 레지스터를 선택적으로 정밀하게 보호할 수 있다.
Description
본 발명은 루트킷과 같은 유해프로그램으로 메모리의 중요 커널영역을 보호하기 위한 전자 장치 및 방법에 관한 것이다.
최근 컴퓨터나 모바일장치에서 루트킷(Rootkit)으로부터 운영체제(Operation System, 이하 "OS"라칭함)의 커널 무결성(Kernel Integrity)을 보호하기 위한 보안기술이 발표되고 있다. 루트킷(Rootkit)은 루트 권한을 획득한 공격자가 심어놓은 프로그램을 숨기기 위한 목적으로 사용되는 프로그램을 말한다. 루트킷은 펌웨어, 가상화 계층, 부트로더, 커널, 라이브러리 등 다양한 곳에서 작동할 수 있다.
루트킷으로부터 운영체제(Operation System) 커널 무결성(Kernel Integrity)을 보호하는 방법으로는 다수의 게스트 운영체제가 공동으로 구동될 수 있는 하이퍼바이저(hypervisor)의 가상머신모니터(Virtual Machine Monitor)가 게스트 OS의 프로세스가 사용하는 메모리의 커널영역을 보호하는 방법과 하드웨어적으로 호스트장치의 외부에 배치된 스누퍼가 메모리에 연결된 시스템버스의 트래픽을 스누핑하여 특정 중요 커널영역을 보호하는 방법이 있다.
하이퍼바이저(hypervisor)의 가상머신모니터는 게스트OS의 프로세스에 대응하는 가상주소를 물리주소로 변환하는 변환테이블("페이지 테이블"이라 칭하기도 함)을 관리하여 중요 커널영역을 보호한다. 하이퍼바이저(hypervisor)의 가상머신모니터에 의한 커널 무결성보호방법은 모든 OS의 발생 이벤트를 감시할 수 있는 장점은 있지만 기본적으로 설정한 최소 페이지 크기 단위가 4k바이트인 변환테이블에 대해 수행하기 때문에 오버헤드가 길어지는 문제가 발생한다. 특히, 모바일장치에서는 오버헤드가 길어져 심각한 성능 저하의 문제가 발생할 수 있다.
스누퍼를 이용한 메모리의 커널영역을 보호하는 방법은 부팅 후 시스템 런타임 동안 불변하는 영역에 대한 물리 주소를 기반으로 감시를 수행한다. 그러나, 이러한 방법은 활용 가능한 스누퍼 레지스터 수보다 감시대상 시스템상의 프로세스 수가 더 많아 모든 프로세스에 대한 보호가 불가능하다. 또한, 주요 레지스터 변경에 대한 이벤트 감시가 불가능하기 때문에, 공격자는 변환테이블 베이스 레지스터(TTBR), 시스템 제어 레지스터(SCTLR), 도메인 액세스 제어 레지스터(DACR)등을 자유롭게 변조할 수 있다. 또한, 물리주소만 감시 가능하지만 대부분의 시스템은 가상주소를 기반으로 동작하기 때문에, 공격자는 가상주소를 조작하여 스누퍼 기반 감시를 우회하고 있다.
본 발명의 목적은 종래 기술의 문제점들을 해결하기 위한 것으로, 오버헤드를 최소화할 수 있고 보호 정밀성(Protection Granularity)을 높일 수 있는 메모리의 중요 커널영역을 보호 방법 및 장치를 제공하는 데에 있다.
상기 본 발명의 해결과제를 달성하기 위한 실시예에 따른 방법은, 전자장치의 운영 운영체제의 실행 중인 프로세스에서 사용하는 레지스터의 갱신 이벤트를 감시하여 상기 실행 중인 프로세스의 가상주소를 물리주소로 변환하는 페이지테이블의 커널영역의 위치를 확인하는 단계와; 상기 커널영역의 위치정보를 상기 운영체제의 프로세스에서 사용하는 메모리에 연결된 스누퍼에 전송하는 단계와; 상기 스누퍼에 의해 상기 수신된 위치정보를 기초로 현재 실행 중인 프로세스에서 사용하는 상기 페이지테이블의 커널영역을 보호하는 단계를 포함하는 것을 특징으로 한다.
상기 운영체제는 하이퍼바이저 환경에서 구동되는 복수의 게스트 운영체제중의 하나일 수 있다.
상기 레지스터는 TTBR(Table Translation Base Resistor) 및 CR 3(Control Resistor 3) 중 하나일 수 있다.
상기 커널영역은 1레벨 페이지 디스크립터(First Level Descriptor) 및 페이지 디렉토리 디스크립터(Page Directory Descriptor) 중 하나의 커널정적영역을 포함할 수 있다.
상기 커널정적영역은 보호가 필요한 쓰기가능 커널영역일 수 있다.
상기 방법은 상기 수신된 상기 커널영역의 위치정보를 기초로 상기 스누퍼의 보호영역을 설정하는 단계를 더 포함할 수 있다.
상기 방법은 상기 현재 실행 중인 프로세스가 종료됨에 따라 상기 스누퍼의 보호영역 설정을 해제하는 단계를 더 포함할 수 있다.
상기 방법은 상기 커널영역에 대한 갱신 시도를 탐지하는 단계와; 상기 갱신 시도가 탐지됨에 따라 상기 커널영역에 대한 접근 경고를 표시하는 단계를 더 포함할 수 있다.
상기 방법은 커널코드에 사전 설정된 GPS 위치를 체크하는 로직을 삽입하는 단계와; 상기 커널코드 실행 결과 사전 설정된GPS 위치에 있을 경우 특정 프로세스에 대한 커널영역을 보호하는 단계를 더 포함할 수 있다.
상기 방법은 특정 프로세스에 대한 커널정적영역을 설정하는 단계와; 상기 특정 프로세스 실행 시에 상기 설정된 커널정적영역에 대한 정보를 상기 스누퍼에 전송하여 상기 커널정적영역을 보호하는 단계를 더 포함할 수 있다.
본 발명의 실시예에 따른 전자장치는, 물리주소를 가진 메모리와; 상기 메모리에 저장된 데이터와 관련된 운영체제의 프로세스를 실행하며, 상기 실행 중인 프로세스에서 사용하는 레지스터를 구비한 프로세서와; 상기 실행 중인 프로세스에 의한 상기 레지스터의 갱신 이벤트를 감시하여, 상기 프로세스의 가상주소를 물리주소로 변환하는 페이지테이블의 커널영역의 위치를 확인하는 커널영역 보호부와; 상기 커널영역 보호부로부터 페이지테이블의 커널영역의 위치정보를 수신하고, 상기 수신된 위치정보를 기초로 상기 메모리와 상기 프로세서를 연결하는 시스템버스를 스누핑하여 상기 실행 중인 프로세스에서 대응하는 상기 커널영역의 보호동작을 수행하는 스누퍼를 포함하는 것을 특징으로 한다.
본 발명의 다른 실시예에 따른 전자장치는, 물리주소를 가진 메모리와; 상기 메모리에 저장된 데이터와 관련된 프로세스를 실행하며, 운영체제의 상기 실행 중인 프로세스에서 사용하는 레지스터를 구비한 프로세서와; 복수의 게스트 운영체제가 동시에 구동되는 하이퍼바이저와; 상기 실행 중인 프로세스에 의한 상기 레지스터의 갱신 이벤트를 감시하여, 상기 실행 중인 게스트 운영체제 프로세스의 가상주소를 물리주소로 변환하는 게스트 페이지테이블의 커널영역의 위치를 확인하는 가상화 커널영역 보호부와; 상기 가상화 커널영역 보호부로부터 게스트 페이지테이블의 커널영역의 위치정보를 수신하고, 상기 수신된 위치정보를 기초로 상기 메모리와 상기 프로세서를 연결하는 시스템버스를 스누핑하여 상기 실행 중인 프로세스에서 대응하는 상기 커널영역의 보호동작을 수행하는 스누퍼를 포함하는 것을 특징으로 한다.
상기 레지스터는 TTBR(Table Translation Base Resistor) 및 CR 3(Control Resistor 3) 중 하나일 수 있다.
상기 커널영역은 1레벨 페이지 디스크립터(First Level Descriptor) 및 페이지 디렉토리 디스크립터(Page Directory Descriptor) 중 하나의 커널정적영역을 포함할 수 있다.
상기 커널정적영역은 보호가 필요한 쓰기가능 커널영역일 수 있다.
상기 스누퍼는 상기 수신된 상기 커널영역의 위치정보를 기초로 상기 스누퍼의 보호영역을 설정할 수 있다.
상기 가상화 커널영역보호부는 상기 스누퍼에 실행 프로세스의 종료를 통지할 수 있다.
상기 스누퍼는 상기 현재 실행 중인 프로세스의 종료통지를 수신함에 따라 상기 스누퍼의 보호영역 설정을 해제할 수 있다.
상기 가상화 커널영역보호부와 상기 스누퍼는 연동할 수 있다.
본 발명의 실시예에 따른 비휘발성 저장매체는 상술한 본 발명의 실시예에 따른 방법의 프로세스를 실행할 수 있는 코드화 로직을 포함하는 것을 특징으로 한다.
본 발명에 의하면, 변환테이블 베이스 레지스터의 갱신을 트랩하여 페이지 테이블의 커널영역(커널정적영역) 정보를 얻고, 이 정보를 이용한 스누퍼에 의해 OS의 프로세스에서 사용하는 페이지 테이블의 커널정적영역(약 16바이트)을 보호함으로써 오버헤드를 현저하게 줄일 수 있을 뿐만 아니라 보호 정밀성을 높일 수 있다.
도 1은 본 발명의 실시예에 따른 중요 커널영역 보호를 위한 장치의 구성을 나타내는 블록도,
도 2는 x86인텔 프로세서에서 가상주소를 물리주소로 변환하는 과정을 나타내는 도,
도 3은 ARM프로세서에서 가상주소를 물리주소로 변환하는 과정을 나타내는 도,
도 4는 페이지테이블의 커널정적영역을 나타내는 도,
도 5 는 도 1의 커널영역 보호부의 구성을 나타내는 블록도,
도 6은 도 1의 스누퍼의 구성을 나타내는 블록도,
도 7은 본 발명의 본 발명의 제1실시예에 따른 실행 프로세스의 페이지테이블의 중요 커널영역을 보호하는 장치를 예시적으로 나타내는 블록도,
도 8은 본 발명의 제2실시예에 따른 하이퍼바이저 환경에서의 중요 커널영역을 보호하는 과정을 나타내는 모식도,
도 9는 본 발명의 제2실시예에 따른 실행 프로세스의 페이지테이블의 커널영역을 보호하는 장치를 예시적으로 나타내는 블록도,
도 10은 커널영역 보호 프로세스를 나타내는 순서도,
도 11은 위치기반 모바일장치의 기능 제한을 설명하기 위한 모식도,
도 12는 모바일장치의 커널코드 보호를 통한 악성행위 방지를 설명하기 위한 모식도, 및
도 13은 스마트TV의 커널코드 보호를 통한 악성행위 방지를 설명하기 위한 모식도이다.
도 2는 x86인텔 프로세서에서 가상주소를 물리주소로 변환하는 과정을 나타내는 도,
도 3은 ARM프로세서에서 가상주소를 물리주소로 변환하는 과정을 나타내는 도,
도 4는 페이지테이블의 커널정적영역을 나타내는 도,
도 5 는 도 1의 커널영역 보호부의 구성을 나타내는 블록도,
도 6은 도 1의 스누퍼의 구성을 나타내는 블록도,
도 7은 본 발명의 본 발명의 제1실시예에 따른 실행 프로세스의 페이지테이블의 중요 커널영역을 보호하는 장치를 예시적으로 나타내는 블록도,
도 8은 본 발명의 제2실시예에 따른 하이퍼바이저 환경에서의 중요 커널영역을 보호하는 과정을 나타내는 모식도,
도 9는 본 발명의 제2실시예에 따른 실행 프로세스의 페이지테이블의 커널영역을 보호하는 장치를 예시적으로 나타내는 블록도,
도 10은 커널영역 보호 프로세스를 나타내는 순서도,
도 11은 위치기반 모바일장치의 기능 제한을 설명하기 위한 모식도,
도 12는 모바일장치의 커널코드 보호를 통한 악성행위 방지를 설명하기 위한 모식도, 및
도 13은 스마트TV의 커널코드 보호를 통한 악성행위 방지를 설명하기 위한 모식도이다.
이하, 본 발명의 일 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 발명의 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 실시예의 다양한 변경 (modification), 균등물 (equivalent), 및/또는 대체물 (alternative)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 명세서에서, “가진다,” “가질 수 있다,”“포함한다,” 또는 “포함할 수 있다” 등의 표현은 해당 특징 (예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 명세서에서, “A 또는 B,”“A 또는/및 B 중 적어도 하나,”또는 “A 또는/및 B 중 하나 또는 그 이상”등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, “A 또는 B,” “ A 및 B 중 적어도 하나,”또는 “ A 또는 B 중 적어도 하나”는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 명세서에서 “제 1,”“제 2,”“첫째,”또는“둘째,”등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 해당 구성요소들을 한정하지 않는다. 이러한 표현들은 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 수 있다. 예를 들면, 제 1 사용자 기기와 제 2 사용자 기기는, 순서 또는 중요도와 무관하게, 서로 다른 사용자 기기를 나타낼 수 있다. 예를 들면, 본 개시의 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 바꾸어 명명될 수 있다.
어떤 구성요소 (예: 제 1 구성요소)가 다른 구성요소 (예: 제 2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어 ((operatively or communicatively) coupled with/to)" 있다거나 "접속되어 (connected to)" 있다고 언급된 때에는, 어떤 구성요소가 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소 (예: 제 3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소 (예: 제 1 구성요소)가 다른 구성요소 (예: 제 2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 어떤 구성요소와 다른 구성요소 사이에 다른 구성요소 (예: 제 3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 명세서에서 사용된 표현 “~하도록 구성된 (또는 설정된)(configured to)”은 상황에 따라, 예를 들면, “~에 적합한 (suitable for),” “~하는 능력을 가지는 (having the capacity to),” “~하도록 설계된 (designed to),” “~하도록 변경된 (adapted to),” “~하도록 만들어진 (made to),”또는 “~를 할 수 있는 (capable of)”과 바꾸어 사용될 수 있다. 용어 “~하도록 구성 (또는 설정)된”은 하드웨어적으로 “특별히 설계된 (specifically designed to)”것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, “~하도록 구성된 장치”라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 “~할 수 있는” 것을 의미할 수 있다. 예를 들면, 문구 “A, B, 및 C를 수행하도록 구성 (또는 설정)된 프로세서”는 해당 동작을 수행하기 위한 전용 프로세서 (예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서 (generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
본 명세서에서 사용된 용어들은 단지 특정일 실시예를 설명하기 위해 사용된 것으로, 다른 실시예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 개시의 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 일반적으로 사용되는 사전에 정의된 용어들은 관련 기술의 문맥 상 가지는 의미와 동일 또는 유사한 의미를 가지는 것으로 해석될 수 있으며, 본 명세서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 명세서에서 정의된 용어일지라도 본 개시의 실시 예들을 배제하도록 해석될 수 없다.
도 1은 본 발명의 실시예에 따른 실행 프로세스의 페이지 테이블의 커널영역을 보호하는 기능을 가진 전자장치(1)의 구성을 나타내는 블록도이다. 전자장치(1)는 텔레비전, 퍼스널 컴퓨터, 스마트폰, 노트북 컴퓨터, 데스크탑 컴퓨터, 서버, 개인휴대단말기 등을 포함할 수 있다. 전자장치(1)는 프로세서(100), 메모리(200), 커널보호부(300) 및 스누퍼(400)를 포함한다. 물론 전자장치(1)는 상술한 구성 이외에 다양한 구성요소들을 더 포함할 수 있다. 예를 들면, 모바일장치, 예를 들면 스마트폰에 적용된다면, 통신모듈, 카메라, 마이크로폰, 각종센서, 신호처리부, 사용자입력을 위한 인터페이스 등을 더 포함할 수 있다. 스마트 TV에 적용한다면 통신모듈, 튜너, 영상처리부, 멀티플렉서, 메모리 등을 더 포함할 수 있다.
프로세서(100)는 프로세서가 적용된 전자장치에서 전반적인 구성부품들을 제어한다. 프로세서(100)는 데이터 프로세싱 코어(110), 캐시 메모리(120), 메모리관리부(130) 및 로드 저장 유닛(140)을 포함한다. 프로세서(100)는 OS의 각종 프로세스를 수행한다. 프로세서(100)는 중앙처리유닛(CPU), 마이크로 프로세싱 유닛(MPU), ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs (digital signal processing devices), PLDs (programmable logic devices), FPGAs (field programmable gate arrays), 마이크로 컨트롤러(micro-controllers), 마이크로 프로세서(microprocessors) 등으로 구현될 수 있다. 프로세서(100)는 예를 들면 ARM 프로세서, 인텔 x86 프로세서 등으로 구현될 수 있다.
프로세싱 코어(110)는 프로세스가 사용하는 가상 어드레스(VA)를 생성하며, 이것은 메모리 관리부(130)에 의해 물리 어드레스(PA)로 변환된다.
캐시 메모리(120)는 프로세싱 코어(110)의 논리 연산을 위해 임시로 저장하는 임시저장소이다.
메모리 관리부(130)는 메모리의 페이지와 관련된 특권 레벨 또는 메모리의 특정한 페이지(들)에 대한 액세스를 제어하는 기능을 가질 수 있다. 메모리 관리부(130)는 최근에 사용된 가상 어드레스(VA)를 물리 어드레스(PA)로 변환하기 위한 변환 데이터를 임시 기억하는 버퍼를 구비한다. 메모리 관리부(130)는 페이지 테이블 워크 연산을 수행한다. 이와 같은 페이지 테이블 워크 연산에 대한 시작점은 변환 테이블에의 엔트리 포인트(entry point)에 해당한다. 이와 같은 엔트리 포인트는 메모리 관리부(130) 내부의 변환 테이블 베이스 레지스터(TTBR: ARM 프로세서) 또는 CR3(Control Resister)(인텔 x86프로세서)에 기억된다.
로드 저장 유닛(140)은 메모리로부터 데이터를 로딩하거나 레지스터로부터 메모리에 다시 저장하기 위한 소자이다.
메모리(200)는 물리메모리로서 페이지 단위(페이지 프레임)로 할당된 물리주소를 포함하고 있다. 메모리(200)는 페이지 주소를 저장하고 있는 변환테이블을 포함하고 있다. 메모리관리부(130)에 가상주소를 물리주소로 변환하는 과정에서 상기 메모리(200)의 변환테이블을 이용한다.
이하 메모리 관리부(130)에 의한 가상주소를 물리주소로 변환하는 과정을 간략하게 설명한다.
운영체제에서 동작하는 복수 프로세스들 각각은 각 4GB의 가상메모리공간을 사용한다. 가상메모리공간은 3GB는 사용자공간을 할당하고 1GB는 커널공간으로 할당된다. 메모리관리부(130)가 선형(가상)주소를 물리주소로 변환하기 위해서는 변환테이블(페이지테이블)을 이용하여 수행한다.
도 2는 x86 인텔 프로세서에서의 주소 변환과정(페이징)을 나타내는 도이다. 페이지 테이블은 페이지 디렉토리와 페이지테이블을 포함한다. 페이지 디렉토리는 메모리 관리의 효율성을 위해 페이지 글로벌 디렉토리와 페이지 미들 디렉토리로 구성할 수 있다. x86 프로세서에서 2단계 페이징을 사용한다면 커널에서는 3단계 페이징을 사용하는 것이 다르다. ① 메모리관리부(130) 내의 CR3에서 페이지 디렉토리의 시작주소를 찾는다. ② 이 페이지 디렉토리의 시작주소와 선형주소의 디렉토리 엔트리 인덱스 값으로 디렉토리 엔트리를 찾는다. 이 디렉토리 엔트리는 페이지 테이블의 시작주소이다. ③ 상기 페이지 디렉토리 엔트리와 ④ 선형주소의 페이지테이블 인덱스 값으로 페이지 테이블 엔트리를 찾는다. 이 페이지 테이블 엔트리가 4kB 페이지의 베이스 주소이다. ⑤ 페이지 테이블 엔트리와 ⑥ 선형 주소의 페이지 옵셋 값으로 페이지 물리주소를 찾는다.
도 3은 ARM 프로세서에서의 주소 변환과정(페이징)을 나타내는 도이다. 페이지 테이블은 제1레벨 테이블과 제2레벨 테이블을 포함한다. 물론, 페이지 테이블은 메모리 관리의 효율성을 위해 3레벨 이상의 테이블을 적용할 수 있다. ① 메모리관리부(130) 내에 있는 변환테이블 베이스 레지스터에서 제1레벨 디스크립터의 시작주소를 찾는다. 제1레벨 디스크립터의 시작주소와 ② 선형 주소의 제1레벨 테이블 인덱스 값으로 제1레벨 디스크립터를 찾는다. ③ 이 제1레벨 디스크립터와 ④ 선형 주소의 제2레벨 테이블 인덱스 값으로 제2레벨 디스크립터를 찾는다. ⑤ 이 제2레벨 디스크립터와 ⑥ 선형 주소의 페이지 인덱스 값으로 물리메모리의 물리주소를 찾는다.
상술한 주소변환(페이징)에 사용하는 페이지 디렉토리, 페이지 글로벌 디렉토리, 제1레벨 테이블은 도 4에 나타낸 바와 같이, 루트킷과 같은 유해 프로그램에 의해 변경되는 것을 방지해야 할 보호대상으로서 약 16바이트 크기의 커널정적영역(.text, .data, ... , exception vector)을 포함한다. 커널정적영역은 프로세스가 실행될 때 마다 그 주소가 새롭게 설정될 수 있고, 그 내용은 쓰기 가능하지만 변경되지 않아야 하는 영역이다. 따라서, 이러한 커널정적영역은 운영체제 상에서 프로세스가 실행될 때마다 설정되는 주소의 위치를 파악할 필요가 있다. 물론 보호대상으로서 커널정적영역은 하나의 예에 불과하며, 페이지 디렉토리, 페이지 글로벌 디렉토리, 또는 제1레벨 테이블 이외의 커널영역으로 확장 가능하다.
커널영역 보호부(300)는 변환 테이블 베이스 레지스터(TTBR: ARM 프로세서) 또는 CR3(Control Resister)(인텔 x86프로세서)의 갱신여부에 대한 이벤트를 트랩(Trap)하여 페이지 디렉토리, 페이지 글로벌 디렉토리, 또는 제1레벨 테이블의 커널정적영역 위치를 파악한다.
커널영역 보호부(300)는 도 5에 나타낸 바와 같이 TTBR(CR3) 이벤트 모니터부(310), 이벤트 분석부(320) 및 제2프로세서(330)을 포함한다. TTBR(CR3) 이벤트 모니터부(310)는 TTBR(CR3)가 기억하는 변환 테이블, 예를 들면 페이지 디렉토리 또는 페이지 글로벌 디렉토리, 제1레벨 디스크립터의 엔트리 포인트(entry point) 갱신여부를 트랩(Trap)한다. 이벤트분석부(320)는 상기 트랩(Trap)된 엔트리 포인트(entry point)를 분석하여 페이지 디렉토리 또는 페이지 글로벌 디렉토리, 제1레벨 디스크립터의 커널정적영역에 대한 위치를 파악한다. 상기 제2프로세서(330)는 상기 TTBR(CR3) 이벤트 모니터부(310) 및 이벤트 분석부(320)를 제어하며, 상기 파악된 커널정적영역에 대한 위치정보를 스누퍼(400)로 전송한다.
도 6에 나타낸 바와 같이, 스누퍼(400)는 프로세서(100)와 물리메모리(200)를 연결하는 시스템 버스에 연결되어 트래픽을 스누핑한다. 스누퍼(400)는 커널영역 보호부(300)로부터 커널정적영역에 대한 위치 정보를 수신한 후, 물리메모리(200)의 커널정적영역을 보호하도록 설정한다. 스누퍼(400)는 스누핑부(410), 보호영역 설정부(420), 저장부(430) 및 제3프로세서(440)를 포함한다.
스누핑부(410)는 물리메모리(200)와 프로세서(100) 사이의 시스템버스에 연결되어 트래픽을 감지하여 설정된 커널영역, 예를 들면 커널정적영역의 쓰기 시도를 탐지할 수 있다. 보호영역 설정부(420)는 커널영역 보호부(300)로부터 수신된 커널정적영역에 대한 위치정보를 기초로 물리메모리의 커널정적영역에 대한 보호를 설정한다. 보호영역 설정부(420)는 커널영역 보호부(300)로부터 새로운 커널정적영역 위치를 수신할 때마다 수신된 위치의 커널정적영역을 보호한다. 즉, 프로세스마다 커널정적영역의 위치를 확인하여 확인된 커널정적영역을 보호하는 것이 가능하다. 만일 프로세스가 실행되어 해당 프로세스에 대한 커널정적영역을 보호하도록 설정된 후, 해당 프로세스가 종료되면 설정된 커널정적영역의 보호를 해제할 수 있다. 저장부(430)는 커널영역 보호부(300)로부터 수신된 커널정적영역에 대한 위치정보를 저장한다. 제3프로세서(440)는 상기 스누핑부(410), 상기 보호영역 설정부(420) 및 저장부(430)를 제어한다. 커널정적영역에 대한 보호설정이 이루어진 후에, 커널영역(커널정적영역)에 대해 루트킷과 같은 유해프로그램에 의해 쓰기시도가 발생하면 제3프로세서(440)는 경고메시지를 발생하고, 저장부(430)에 쓰기시도가 이루어진 커널정적영역 주소를 저장한다.
이하 도 7 내지 도 10을 참조하여 실행되는 프로세스의 페이지 테이블 커널정적영역 보호를 위한 과정을 상세히 설명한다.
도 7은 제1 실시예에 따른 운영체제 내에서 프로세스가 실행될 때 커널영역을 설정하고 보호하는 방법을 나타낸 도이다. 운영체제(OS) 내에서 실행되는 프로세스는 가상주소를 생성하고, 이 가상주소는 페이지 테이블을 이용하여 물리메모리의 물리주소로 변환된다. 이러한 과정을 전술한 도 2 및 3을 참조하여 설명한 바 있다. 프로세스가 실행되면 변환 테이블 베이스 레지스터(TTBR: ARM 프로세서) 또는 CR3(Control Resister)(인텔 x86프로세서)의 기억 내용은 갱신된다. 이때, 커널영역 보호부(300)는 변환 테이블 베이스 레지스터(TTBR: ARM 프로세서) 또는 CR3(Control Resister)(인텔 x86프로세서)의 갱신 내용을 트랩하여 페이지 디렉토리(페이지 글로벌 디렉토리) 또는 제1레벨 디스크립터의 커널정적영역의 위치를 알아낸다. 커널영역 보호부(300)는 알아낸 커널정적영역의 위치를 스누퍼(400)로 보내 스누퍼로 하여금 물리메모리(200)의 커널정적영역을 보호하도록 설정한다. 만일 루트킷과 같은 유해프로그램으로부터 페이지 디렉토리(페이지 글로벌 디렉토리) 또는 제1레벨 디스크립터의 커널정적영역에 대한 쓰기 시도가 발생하면, 스누퍼(400)가 이를 탐지하여 변경 시도를 방지하고 경고메시지를 발생한다.
도 8 및 9는 제2 실시예에 따른 운영체제 내에서 프로세스가 실행될 때 하이퍼바이저 환경에서 게스트 운영체제의 프로세스의 커널영역을 설정하고 보호하는 방법을 나타낸 도이다. 하이퍼바이저는 호스트 컴퓨터에서 다수의 운영체제가 동시에 실행할 수 있는 컴퓨터 소프트웨어/하드웨어 플랫폼 가상화 소프트웨어이다.
게스트운영체제의 사용자모드에서 다수의 프로세스, 예를 들면 프로세스A(510) 및 프로세스B(520)가 실행된다. 만일, 사용자모드에서 프로세스B(520)가 실행되면, 게스트운영체제모드에서 프로세스B의 게스트가상주소를 게스트물리주소로 변환하기 위해 프로세스B와 관련된 페이지테이블B(540)을 생성한다. 하이퍼바이저모드에서 커널영역 보호부(300)는 페이지테이블B(540)의 페이지 디렉토리(페이지 글로벌 디렉토리) 또는 제1레벨 디스크립터의 커널정적영역과 관련된 변환 테이블 베이스 레지스터(TTBR: ARM 프로세서) 또는 CR3(Control Resister)(인텔 x86프로세서)의 업데이트 이벤트를 탐지한다. 커널영역 보호부(300)는 변환 테이블 베이스 레지스터(TTBR) 또는 CR3(Control Resister)의 업데이트 이벤트를 탐지하여 페이지 디렉토리(페이지 글로벌 디렉토리) 또는 제1레벨 디스크립터의 커널정적영역 위치를 알아낸다. 커널영역 보호부(300)는 알아낸 커널정적영역 위치정보를 호스트장치 외부에 배치된 스누퍼(400)에 전송한다. 스누퍼(400)는 수신된 페이지테이블B(540)의 커널정적영역에 대한 보호 설정을 수행한다.
상술한 제2실시예에 따른 커널영역보호 방법 및 장치에 의하면, 하이퍼바이저 모드에서 동작하는 커널영역 보호부(300) 및 호스트컴퓨터 외부에서 동작하는 스누퍼(400)에 의해 커널영역에 대한 변경 시도 및 보호를 수행함으로써 보다 루트킷과 같은 유해프로그램으로부터 안전하게 페이지 테이블의 커널영역을 보호하는 것이 가능하다. 특히, 커널영역 보호부(300)에서 커널영역의 위치를 알아내고, 스누퍼(400)가 이 정보를 기초로 물리메모리(200)의 커널영역을 보호함으로써 보호 정밀성(Protection Granularity)을 높일 수 있다. 종전의 루트킷 탐지 및 보호는 페이지테이블 단위, 즉 최소 4KB 단위로 이루어지던 것을 디렉토리(페이지 글로벌 디렉토리) 또는 제1레벨 디스크립터의 커널정적영역(16B)으로 축소하여 수행함으로써 오버헤드를 줄일 수 있다.
도 10은 본 발명의 실시예에 따른 실행되는 프로세스의 페이지테이블의 커널영역을 보호하는 과정을 나타내는 순서도이다.
단계S110에서, 커널영역 보호부(300)는 운영체제의 실행 프로세스와 관련된 TTBR(CR3) 갱신 이벤트를 트랩(Trap)한다. TTBR(CR3)에는 제1레벨 디스크립터(페이지 (글로벌)디렉토리)의 시작주소가 기록되어 있다.
단계 S120에서, 커널영역 보호부(300)는 제1레벨 디스크립터(페이지 (글로벌)디렉토리)의 시작주소를 기초로 제1레벨 디스크립터(페이지 (글로벌)디렉토리)의 커널정적영역 위치를 파악한다.
단계 S130에서, 커널영역 보호부(300)는 제1레벨 디스크립터(페이지 (글로벌)디렉토리)의 커널정적영역 위치 정보를 스누퍼(400)에 전송한다.
단계 S140에서, 스누퍼(400)는 커널정적영역 위치 정보를 기초로 물리메모리(200)의 커널정적영역을 보호 설정한다.
단계 S150에서, 스누퍼(400)는 상기 보호 설정된 커널정적영역에 대한 쓰기시도(변경시도)가 탐지되는지 여부를 탐지한다.
단계 S160에서, 단계 S150에서 보호 설정된 커널정적영역에 대한 쓰기시도(변경시도)가 탐지되면 부정한 쓰기시도에 대한 경고메시지를 생성하고 쓰기를 방지한다. 여기서, 경고메시지는 스누퍼(400)에서 생성하거나 단순히 탐지결과를 프로세서(100)에 전달하여 프로세서(100)가 경고메시지를 생성하고 쓰기를 방지하도록 할 수도 있다.
단계 S170에서, 프로세스(100)는 프로세스의 실행이 종료되었는지를 판단한다.
단계 S180에서, 단계 S170에서 프로세스가 종료되었으면, 프로세서(100)는 커널영역보호부(300)를 거쳐 스누퍼(400)로 프로세스 종료를 통지하여, 보호영역으로 설정된 커널정적영역의 위치를 해제한다.
본 발명에 따른 커널영역 보호 방법 및 장치는 다양한 시나리오로 실시될 수 있다. 예를 들면 비밀이 보장되어야 하는 국가 주요시설, 공공기관, 회사 비밀부서 내에서 스마트폰(500)의 특정 기능 예를 들면 카메라에 의한 촬영기능이나 마이크에 의한 녹음기능의 사용을 제한할 수 있다. 예를 들면 스마트폰(500)의 카메라를 특정 GPS에서는 촬영프로세스 또는 촬영된 영상을 저장하는 프로세스가 동작되지 않도록 설정하는 것이 가능하다. 도 11은 사용자 위치기반 모바일 장치 관리를 설명하기 위한 모식도이다. 스마트폰(500)에서, 커널코드에 특정 GPS위치(보호구역의 GPS)를 체크하는 로직을 제조 시에 삽입하고, 사용자(스마트폰)가 보호구역에 있는 것을 GPS를 통해 판단될 경우 커널코드 후킹을 통해 모바일장치의 특정 기능을 제한하도록 할 수 있다.
또한, 스마트폰(500)의 사용자의 사생활을 보호하기 위한 데이터를 루트킷이 복사하는 프로세스를 방지할 수 있다. 또한, 사용자가 입력한 내용(아이디, 비밀번호 등)이나 GPS를 통한 위치정보 등이 변조된 커널의 비정상적인 경로를 통해 불법적으로 저장되거나 유출되는 것(예를 들면 커널 레벨 키로커, 불법위치 추적)을 방지할 수 있다. 도 12는 모바일장치의 커널코드 보호를 통한 악성행위 방지를 설명하기 위한 모식도이다. 상시 검증을 위해, 스마트폰(500)의 하이퍼바이저 환경에서 커널영역 보호부(300)(가상화 기능)와 스누퍼(400)(스누핑기능)의 연동코드를 제조 시에 삽입하고, 사용 시에 스마트폰(500)에서 수행되는 모든 프로세스에 대한 정상적인 커널 코드 및 페이지 테이블 매핑을 강제할 수 있다. 도 13은 스마트 TV(600)의 커널코드 보호를 통한 악성행위 방지를 설명하기 위한 모식도이다. 상시 검증을 위해, 스마트TV(600)의 하이퍼바이저 환경에서 커널영역 보호부(300)(가상화 기능)와 스누퍼(400)(스누핑기능)의 연동코드를 제조 시에 삽입하고, 사용 시에 스마트 TV(600)에서 수행되는 모든 프로세스에 대한 정상적인 커널 코드 및 페이지 테이블 매핑을 강제할 수 있다.
본 발명의 예시적 실시예에 따른 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이러한 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 예를 들어, 컴퓨터 판독 가능 매체는 삭제 가능 또는 재기록 가능 여부와 상관없이, ROM 등의 저장 장치와 같은 휘발성 또는 비휘발성 저장 장치, 또는 예를 들어, RAM, 메모리 칩, 장치 또는 집적 회로와 같은 메모리, 또는 예를 들어 CD, DVD, 자기 디스크 또는 자기 테이프 등과 같은 광학 또는 자기적으로 기록 가능함과 동시에 기계(예를 들어, 컴퓨터)로 읽을 수 있는 저장 매체에 저장될 수 있다. 이동 단말 내에 포함될 수 있는 메모리는 본 발명의 실시 예들을 구현하는 지시들을 포함하는 프로그램 또는 프로그램들을 저장하기에 적합한 기계로 읽을 수 있는 저장 매체의 한 예임을 알 수 있을 것이다. 본 저장 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어의 기술 분야에서 숙련된 기술자에게 공지되어 사용 가능한 것일 수도 있다.
이상과 같이 본 발명은 한정된 예시적 실시예와 도면을 통해 설명되었으나, 본 발명은 상기의 예시적 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 예시적 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 프로세서
110: 프로세싱 코어
120: 캐시
130: 메모리관리부
140: 로드 저장 유닛
200: 물리메모리
300: 커널영역 보호부
310: TTBR(CR3) 이벤트 모니터부
320: 이벤트 분석부
330; 제2프로세서
400: 스누퍼
410: 스누핑부
420; 보호영역 설정부
430: 저장부
440: 제3프로세서
110: 프로세싱 코어
120: 캐시
130: 메모리관리부
140: 로드 저장 유닛
200: 물리메모리
300: 커널영역 보호부
310: TTBR(CR3) 이벤트 모니터부
320: 이벤트 분석부
330; 제2프로세서
400: 스누퍼
410: 스누핑부
420; 보호영역 설정부
430: 저장부
440: 제3프로세서
Claims (20)
- 운영체제의 실행 중인 프로세스에서 사용하는 레지스터의 갱신 이벤트를 감시하여 상기 실행 중인 프로세스의 가상주소를 물리주소로 변환하는 페이지테이블의 커널영역의 위치를 확인하는 단계와;
상기 커널영역의 위치정보를 상기 운영체제의 프로세스에서 사용하는 메모리에 연결된 스누퍼에 전송하는 단계와;
상기 스누퍼에 의해 상기 수신된 위치정보를 기초로 현재 실행 중인 프로세스에서 사용하는 상기 페이지테이블의 커널영역을 보호하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제1항에 있어서,
상기 운영체제는 하이퍼바이저 환경에서 구동되는 복수의 게스트 운영체제중의 하나인 것을 특징으로 하는 방법.
- 제1항 또는 제2항에 있어서,
상기 레지스터는 TTBR(Table Translation Base Resistor) 및 CR 3(Control Resistor 3) 중 하나인 것을 특징으로 하는 방법.
- 제3항에 있어서,
상기 커널영역은 1레벨 페이지 디스크립터(First Level Descriptor) 및 페이지 디렉토리 디스크립터(Page Directory Descriptor) 중 하나의 커널정적영역을 포함하는 것을 특징으로 하는 방법.
- 제4항에 있어서,
상기 커널정적영역은 보호가 필요한 쓰기가능 커널영역인 것을 특징으로 하는 방법.
- 제3항에 있어서,
상기 수신된 상기 커널영역의 위치정보를 기초로 상기 스누퍼의 보호영역을 설정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제6항에 있어서,
상기 현재 실행 중인 프로세스가 종료됨에 따라 상기 스누퍼의 보호영역 설정을 해제하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제3항에 있어서,
상기 커널영역에 대한 갱신 시도를 탐지하는 단계와;
상기 갱신 시도가 탐지됨에 따라 상기 커널영역에 대한 접근 경고를 표시하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제3항에 있어서,
커널코드에 사전 설정된 GPS 위치를 체크하는 로직을 삽입하는 단계와;
상기 커널코드 실행 결과 사전 설정된GPS 위치에 있을 경우 특정 프로세스에 대한 커널영역을 보호하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제3항에 있어서,
특정 프로세스에 대한 커널정적영역을 설정하는 단계와;
상기 특정 프로세스 실행 시에 상기 설정된 커널정적영역에 대한 정보를 상기 스누퍼에 전송하여 상기 커널정적영역을 보호하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 전자장치에 있어서,
물리주소를 가진 메모리와;
상기 메모리에 저장된 데이터와 관련된 운영체제의 프로세스를 실행하며, 상기 실행 중인 프로세스에서 사용하는 레지스터를 구비한 프로세서와;
상기 실행 중인 프로세스에 의한 상기 레지스터의 갱신 이벤트를 감시하여, 상기 프로세스의 가상주소를 물리주소로 변환하는 페이지테이블의 커널영역의 위치를 확인하는 커널영역 보호부와;
상기 커널영역 보호부로부터 페이지테이블의 커널영역의 위치정보를 수신하고, 상기 수신된 위치정보를 기초로 상기 메모리와 상기 프로세서를 연결하는 시스템버스를 스누핑하여 상기 실행 중인 프로세스에서 대응하는 상기 커널영역의 보호동작을 수행하는 스누퍼를 포함하는 것을 특징으로 하는 전자장치.
- 전자장치에 있어서,
물리주소를 가진 메모리와;
상기 메모리에 저장된 데이터와 관련된 프로세스를 실행하며, 운영체제의 상기 실행 중인 프로세스에서 사용하는 레지스터를 구비한 프로세서와;
복수의 게스트 운영체제가 동시에 구동되는 하이퍼바이저와;
상기 실행 중인 프로세스에 의한 상기 레지스터의 갱신 이벤트를 감시하여, 상기 실행 중인 게스트 운영체제 프로세스의 가상주소를 물리주소로 변환하는 게스트 페이지테이블의 커널영역의 위치를 확인하는 가상화 커널영역 보호부와;
상기 가상화 커널영역 보호부로부터 게스트 페이지테이블의 커널영역의 위치정보를 수신하고, 상기 수신된 위치정보를 기초로 상기 메모리와 상기 프로세서를 연결하는 시스템버스를 스누핑하여 상기 실행 중인 프로세스에서 대응하는 상기 커널영역의 보호동작을 수행하는 스누퍼를 포함하는 것을 특징으로 하는 전자장치.
- 제12항에 있어서,
상기 레지스터는 TTBR(Table Translation Base Resistor) 및 CR 3(Control Resistor 3) 중 하나인 것을 특징으로 하는 전자장치.
- 제12항에 있어서,
상기 커널영역은 1레벨 페이지 디스크립터(First Level Descriptor) 및 페이지 디렉토리 디스크립터(Page Directory Descriptor) 중 하나의 커널정적영역을 포함하는 것을 특징으로 하는 전자장치.
- 제14항에 있어서,
상기 커널정적영역은 보호가 필요한 쓰기가능 커널영역인 것을 특징으로 하는 전자장치.
- 제12항에 있어서,
상기 스누퍼는 상기 수신된 상기 커널영역의 위치정보를 기초로 상기 스누퍼의 보호영역을 설정하는 것을 특징으로 하는 전자장치.
- 제12항에 있어서,
상기 가상화 커널영역보호부는 상기 스누퍼에 실행 프로세스의 종료를 통지하는 것을 특징으로 하는 전자장치.
- 제17항에 있어서,
상기 스누퍼는 상기 현재 실행 중인 프로세스의 종료통지를 수신함에 따라 상기 스누퍼의 보호영역 설정을 해제하는 것을 특징으로 하는 전자장치.
- 제12항에 있어서,
상기 가상화 커널영역보호부와 상기 스누퍼는 연동하는 것을 특징으로 하는 전자장치.
- 청구항 1에 기재된 방법의 프로세스를 실행할 수 있는 코드화 로직을 포함하는 것을 특징으로 하는 비휘발성 저장매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150165474A KR102494167B1 (ko) | 2015-11-25 | 2015-11-25 | 메모리의 커널영역을 보호하기 위한 전자장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150165474A KR102494167B1 (ko) | 2015-11-25 | 2015-11-25 | 메모리의 커널영역을 보호하기 위한 전자장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170060815A true KR20170060815A (ko) | 2017-06-02 |
KR102494167B1 KR102494167B1 (ko) | 2023-02-01 |
Family
ID=59222467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150165474A KR102494167B1 (ko) | 2015-11-25 | 2015-11-25 | 메모리의 커널영역을 보호하기 위한 전자장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102494167B1 (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190052510A (ko) * | 2017-11-08 | 2019-05-16 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
KR20200066011A (ko) * | 2018-11-30 | 2020-06-09 | 서울대학교산학협력단 | 중첩 페이징 없이 커널을 보호하는 방법 및 그 장치 |
KR20200116311A (ko) * | 2019-04-01 | 2020-10-12 | 서울대학교산학협력단 | 커널 무결성 검증 장치 및 그 방법 |
WO2024048922A1 (ko) * | 2022-09-01 | 2024-03-07 | 울산과학기술원 | 커널 코드 영역에 대한 동작을 제어하기 위한 전자 장치 및 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120043377A (ko) * | 2010-10-26 | 2012-05-04 | 한국과학기술원 | 커널 코드의 오류로부터 응용 프로그램의 메모리를 보호하는 장치 및 방법 |
KR101358815B1 (ko) * | 2013-06-04 | 2014-02-11 | 서울대학교산학협력단 | 스누프 기반의 커널 무결성 감시 장치 및 그 방법 |
KR101658641B1 (ko) * | 2015-06-12 | 2016-09-22 | 서울대학교산학협력단 | 하드웨어 기반의 커널 코드 삽입 공격 탐지 장치 및 그 방법 |
-
2015
- 2015-11-25 KR KR1020150165474A patent/KR102494167B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120043377A (ko) * | 2010-10-26 | 2012-05-04 | 한국과학기술원 | 커널 코드의 오류로부터 응용 프로그램의 메모리를 보호하는 장치 및 방법 |
KR101358815B1 (ko) * | 2013-06-04 | 2014-02-11 | 서울대학교산학협력단 | 스누프 기반의 커널 무결성 감시 장치 및 그 방법 |
KR101658641B1 (ko) * | 2015-06-12 | 2016-09-22 | 서울대학교산학협력단 | 하드웨어 기반의 커널 코드 삽입 공격 탐지 장치 및 그 방법 |
Non-Patent Citations (1)
Title |
---|
장대희 외 4인, "메모리 주소 변환 공격에 대한 스케줄러 기반의 방어 방법.", 정보보호학회논문지 VOL.25, No.4(2015.8.31.)* * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190052510A (ko) * | 2017-11-08 | 2019-05-16 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
US11669614B2 (en) | 2017-11-08 | 2023-06-06 | Samsung Electronics Co., Ltd. | Electronic device and control method therefor |
KR20200066011A (ko) * | 2018-11-30 | 2020-06-09 | 서울대학교산학협력단 | 중첩 페이징 없이 커널을 보호하는 방법 및 그 장치 |
KR20200116311A (ko) * | 2019-04-01 | 2020-10-12 | 서울대학교산학협력단 | 커널 무결성 검증 장치 및 그 방법 |
WO2024048922A1 (ko) * | 2022-09-01 | 2024-03-07 | 울산과학기술원 | 커널 코드 영역에 대한 동작을 제어하기 위한 전자 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR102494167B1 (ko) | 2023-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10810309B2 (en) | Method and system for detecting kernel corruption exploits | |
RU2723668C1 (ru) | Фильтрация событий для приложений безопасности виртуальных машин | |
US9129106B2 (en) | Systems and methods for secure in-VM monitoring | |
CN107066311B (zh) | 一种内核数据访问控制方法与*** | |
CN109643290B (zh) | 用于具用扩展分段的面向对象的存储器管理的技术 | |
EP3103056B1 (en) | Methods and apparatus for protecting operating system data | |
RU2510074C2 (ru) | Система и способ проверки исполняемого кода перед его выполнением | |
US9037873B2 (en) | Method and system for preventing tampering with software agent in a virtual machine | |
KR101253394B1 (ko) | 컴퓨팅 환경의 다중 페이징가능 게스트에 의한 스토리지 사용의 관리 | |
US9021605B2 (en) | Method and system for protecting sensitive data in a program | |
KR101955189B1 (ko) | 스왑 아웃된 메모리 페이지의 가상 머신 가상화된 메모리로의 맵핑을 위한 가상 머신에서의 페이지 오류 삽입 | |
CN105393255A (zh) | 用于虚拟机中的恶意软件检测的过程评估 | |
US10114948B2 (en) | Hypervisor-based buffer overflow detection and prevention | |
JP6370098B2 (ja) | 情報処理装置、情報処理監視方法、プログラム、及び記録媒体 | |
CN111400702A (zh) | 一种虚拟化的操作***内核保护方法 | |
JP2018523201A (ja) | ファームウェア関連イベント通知 | |
KR20170060815A (ko) | 메모리의 커널영역을 보호하기 위한 전자장치 및 방법 | |
Ding et al. | HyperVerify: A VM-assisted architecture for monitoring hypervisor non-control data | |
Chubachi et al. | Hypervisor-based prevention of persistent rootkits | |
Tian et al. | A policy‐centric approach to protecting OS kernel from vulnerable LKMs | |
US20210157601A1 (en) | Exception interception | |
Suzaki et al. | Kernel memory protection by an insertable hypervisor which has VM introspection and stealth breakpoints | |
Wang et al. | Hacs: A hypervisor-based access control strategy to protect security-critical kernel data | |
KR102183648B1 (ko) | 중첩 페이징 없이 커널을 보호하는 방법 및 그 장치 | |
JP2018036695A (ja) | 情報処理監視装置、情報処理監視方法、監視プログラム、記録媒体及び情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |