KR20170108332A - 전자기기에서 코드 삽입 공격으로부터 보호를 위한 메모리 운용 방법 - Google Patents

전자기기에서 코드 삽입 공격으로부터 보호를 위한 메모리 운용 방법 Download PDF

Info

Publication number
KR20170108332A
KR20170108332A KR1020160032045A KR20160032045A KR20170108332A KR 20170108332 A KR20170108332 A KR 20170108332A KR 1020160032045 A KR1020160032045 A KR 1020160032045A KR 20160032045 A KR20160032045 A KR 20160032045A KR 20170108332 A KR20170108332 A KR 20170108332A
Authority
KR
South Korea
Prior art keywords
task
memory
stack
space
code
Prior art date
Application number
KR1020160032045A
Other languages
English (en)
Other versions
KR102028704B1 (ko
Inventor
김영호
문용혁
이윤경
정보흥
주홍일
김정녀
전용성
임재덕
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020160032045A priority Critical patent/KR102028704B1/ko
Publication of KR20170108332A publication Critical patent/KR20170108332A/ko
Application granted granted Critical
Publication of KR102028704B1 publication Critical patent/KR102028704B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 보안 취약성이 많이 노출되고 있는 응용 태스크 내부 동작에서의 불법적인 코드 삽입 공격에 대해 커널 수준에서 탐지 및 차단할 수 있도록 데이터 메모리 보호 기법을 적용하고, 공격 코드가 태스크 스택 내부로 삽입되더라도 정확한 주소 정보를 예측하지 못하도록 무작위 주소 공간 배치(random address space layout) 기법을 적용하는, 메모리 운용 방법에 관한 것이다.

Description

전자기기에서 코드 삽입 공격으로부터 보호를 위한 메모리 운용 방법 {Method for Protecting Memory Against Code Insertion Attacks in Electronic Device}
본 발명은 전자기기의 메모리 운용 방법에 관한 것으로서, 특히, 사물인터넷 환경의 경량 임베디드 전자 기기 등에서의 다중 태스크 운영체제용 데이터 메모리에 대한 해커의 코드 삽입 공격과 실행을 방지하여 전자기기를 보호하는 메모리 운용 방법에 관한 것이다.
일반적으로 네트워크를 통한 해킹 공격은 대상 전자 기기 또는 시스템의 소프트웨어 취약성을 주로 이용하여 내부로 침투한다. 소프트웨어 취약성은 공격자가 전자 기기 또는 시스템 내부 메모리에 버퍼오버플로우 등의 공격기법으로 코드를 삽입하고 실행 제어권을 우회적으로 탈취하는데 이용된다. 다중 태스크를 지원하는 각종 전자 기기나 시스템의 경량 임베디드 운영체제에서는 태스크와 커널이 메모리 주소 공간을 공유하는 구조를 갖는다. 따라서, 상대적으로 검증이 부족한 태스크를 통한 코드 삽입 공격은 전체 시스템을 쉽게 장악할 수 있게 된다.
이와 같은 코드 삽입 공격에 대하여, 개인 컴퓨터 및 서버 등의 범용 시스템에서는 운영체제 수준에서 메모리 보호 기술을 적용하여, 코드 삽입 기법에 의한 해킹 공격을 차단하고 있다. 하지만 사물인터넷 환경에서의 경량 임베디드 기기의 경우, 특성상 제한된 하드웨어 자원과 단순한 소프트웨어 동작으로 인해 코드 삽입 공격을 방어하는 기술이 미비하다.
따라서, 제한적인 하드웨어 및 소프트웨어 환경을 갖는 경량 기기가 소프트웨어 취약성에 의한 공격에 노출되더라도 외부 공격자의 코드 삽입에 의한 해킹 시도 시, 이에 대응하는 기술이 필요하다. 또한, 공격 대응 기법은 적용될 대상 기기의 운영체제 구조 및 내부 지원 태스크 개수와 상관없이 적용 가능해야 하며 기능에 대한 일관성을 갖는 해킹 방지 기법이 제공되어야 한다.
따라서, 본 발명은 상술한 문제점을 해결하기 위하여 안출된 것으로, 본 발명의 목적은, 경량 전자 기기의 내부 소프트웨어의 동적 실행 환경은 제한된 하드웨어 자원으로 인해 내부 소프트웨어 취약성을 이용한 공격에 쉽게 노출되므로, 사물인터넷 환경 등에서 외부의 불법적인 해킹 공격으로부터 전자 기기를 보호하는, 메모리 운용 방법을 제공하는 데 있다.
이를 위하여, 본 발명은 보안 취약성이 많이 노출되고 있는 응용 태스크(프로그램의 실행 상태) 내부 동작에서의 불법적인 코드 삽입 공격에 대해 커널 수준에서 탐지 및 차단할 수 있도록 데이터 메모리 보호 기법을 적용하고, 공격 코드가 태스크 스택 내부로 삽입되더라도 정확한 주소 정보를 예측하지 못하도록 무작위 주소 공간 배치(random address space layout) 기법을 적용하는, 메모리 운용 방법을 제공하는 데 있다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재들로부터 당업자에게 명확하게 이해될 수 있을 것이다.
먼저, 본 발명의 특징을 요약하면, 상기의 목적을 달성하기 위한 본 발명의 일면에 따른 전자기기에서 코드 삽입 공격으로부터 보호를 위한 메모리 운용 방법은, 제어장치에서 메모리의 소정의 공간 크기에 대하여, 읽기 및 쓰기가 가능하지만 코드의 실행이 금지되는 보호 구역을 설정하는 단계; 및 프로그램 실행 중 상기 제어장치에서 상기 보호 구역에 대응되는 상기 메모리의 공간에 읽기 또는 쓰기를 제어하는 단계를 포함하고, 상기 프로그램 실행 중 상기 보호 구역에 대응되는 상기 메모리의 공간에 공격 코드가 삽입되더라도, 상기 제어장치의 제어에 따라 상기 공격 코드의 실행 금지가 이루어지는 것을 특징으로 한다.
상기 보호 구역이 설정된 상기 메모리의 공간은, 공유 전역 메모리 공간의 힙 영역 또는 전역데이터영역을 포함할 수 있다.
또한, 상기 보호 구역이 설정된 상기 메모리의 공간은, 지역 메모리 공간의 태스크 스택 영역을 포함할 수 있다. 여기서, 상기 태스크 스택 영역은 현재 실행 중인 태스크 스택의 범위일 수 있다.
상기 메모리 운용 방법은, 상기 제어장치에서 쓰기가 금지되는 스택 방화벽을 위한 구역을 설정하는 단계를 더 포함하되, 상기 스택 방화벽을 위한 구역은 상기 현재 실행 중인 태스크 스택의 상한 주소 보다 상위 주소를 갖는 상기 지역 메모리 공간에 설정된다.
상기 메모리 운용 방법은, 상기 현재 실행 중인 태스크의 문맥 전환 시에, 상기 제어장치의 제어에 따라 신규로 실행되는 태스크 스택의 범위로 이동하여 상기 보호 구역을 설정하도록 설정 변경하고, 상기 신규로 실행되는 태스크 스택의 보다 상위 주소를 갖는 상기 지역 메모리 공간으로 이동하여 상기 스택 방화벽을 위한 구역을 설정하도록 설정 변경하는 단계를 더 포함한다.
또한, 본 발명의 다른 일면에 따른 전자기기에서 코드 삽입 공격으로부터 보호를 위한 메모리 운용 방법은, 제어장치에서 새로운 태스크를 생성할 때, 메모리의 지역 메모리 공간에 상기 새로운 태스크에 대한 태스크 제어 블록을 생성하는 단계; 및 상기 제어장치에서 상기 지역 메모리 공간에 상기 새로운 태스크에 대한 태스크 스택을 할당하는 단계를 포함하고, 상기 태스크 스택을 할당하는 단계에서, 미리 정해진 위치에 할당되지 않도록, 난수 처리를 이용하여 상기 태스크 스택을 임의의 무작위 위치에 할당하는 것을 특징으로한다.
그리고, 본 발명의 또 다른 일면에 따른 전자기기는, 메모리; 및 코드 삽입 공격으로부터 보호를 위한 제어를 수행하는 제어장치를 포함하고, 상기 제어장치는, 상기 메모리의 소정의 공간 크기에 대하여, 읽기 및 쓰기가 가능하지만 코드의 실행이 금지되는 보호 구역을 설정하고, 프로그램 실행 중 상기 보호 구역에 대응되는 상기 메모리의 공간에 읽기 또는 쓰기를 제어하되, 상기 프로그램 실행 중 상기 보호 구역에 대응되는 상기 메모리의 공간에 공격 코드가 삽입되더라도, 상기 공격 코드의 실행 금지가 이루어지도록 제어할 수 있다.
상기 보호 구역이 설정된 상기 메모리의 공간은, 공유 전역 메모리 공간의 힙 영역 또는 전역데이터영역을 포함할 수 있다.
상기 보호 구역이 설정된 상기 메모리의 공간은, 지역 메모리 공간의 태스크 스택 영역을 포함할 수 있다. 상기 태스크 스택 영역은 현재 실행 중인 태스크 스택의 범위일 수 있다.
상기 제어장치에서 상기 현재 실행 중인 태스크 스택의 상한 주소 보다 상위 주소를 갖는 상기 지역 메모리 공간에, 쓰기가 금지되는 스택 방화벽을 위한 구역을 설정할 수 있다.
상기 현재 실행 중인 태스크의 문맥 전환 시에, 상기 제어장치는 신규로 실행되는 태스크 스택의 범위로 이동하여 상기 보호 구역을 설정하도록 설정 변경하고, 상기 신규로 실행되는 태스크 스택의 보다 상위 주소를 갖는 상기 지역 메모리 공간으로 이동하여 상기 스택 방화벽을 위한 구역을 설정하도록 설정 변경을 제어할 수 있다.
상기 제어장치는, 새로운 태스크를 생성할 때, 상기 메모리의 지역 메모리 공간에 상기 새로운 태스크에 대한 태스크 제어 블록을 생성하며, 상기 지역 메모리 공간에 상기 새로운 태스크에 대한 태스크 스택을 할당하되, 상기 새로운 태스크에 대한 상기 태스크 스택이 미리 정해진 위치에 할당되지 않도록, 난수 처리를 이용하여 상기 태스크 스택을 임의의 무작위 위치에 할당할 수 있다.
본 발명에 따른 전자기기의 메모리 운용 방법에 따르면, 커널과 일반 태스크들이 메모리의 주소 공간을 공유하더라도 응용 태스크(프로그램의 실행 상태) 내부 동작에서의 불법적인 코드 삽입 공격에 대해 커널 수준에서 탐지 및 차단할 수 있으므로, 제한된 하드웨어 자원을 갖는 사물인터넷 환경에서의 경량 전자 기기 등에 적용하여 내부 소프트웨어의 동적 실행 환경에서 효과적으로 해킹 공격으로부터 전자 기기를 보호할 수 있다.
또한, 본 발명에 따른 전자기기의 메모리 운용 방법에 따르면, 메모리 보호 구역이 데이터 메모리 보호 기법의 적용으로 메모리 보호 유닛(MPU)을 통해 쉽게 구현이 가능하기 때문에 데이터 메모리에 대한 실행 권한 및 쓰기 권한 금지에 대한 작업 비용을 최소화할 수 있다. 또한, 한정된 수량의 메모리 보호 유닛(MPU)만으로 데이터 영역에 대한 코드 삽입 공격을 효과적으로 차단할 수 있다.
또한, 본 발명에 따른 전자기기의 메모리 운용 방법에 따르면, 태스크 생성시 무작위 함수에 의한 스택 할당은 유동적으로 스택 주소 공간을 배치하여 불법적으로 스택에 삽입된 코드의 주소 예측을 어렵게 할 수 있다. 뿐만 아니라, 동일한 공격 코드를 다른 기기에 쉽게 적용하지 못하게 하여 악성코드 확산 방지 효과를 갖는다.
그리고, 본 발명에 따른 전자기기의 메모리 운용 방법에 따르면, 운영체제 특수성을 최소화하였으므로 경량 임베디드 기기나 기타 다양한 종류의 모든 전자기기의 운영체제에 적용될 수 있다.
도 1은 본 발명의 일 실시예에 따른 다중 태스크 지원 운영체제 메모리의 구조를 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 코드 삽입 공격 시나리오의 예들을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 전자기기에서의 메모리 운용 방법을 설명하기 위한 도면이다.
도 4a 및 도 4b는 본 발명의 다른 실시예에 따른 전자기기에서의 메모리 운용 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 또 다른 실시예에 따른 전자기기에서의 메모리 운용 방법을 설명하기 위한 도면이다.
도 6은 도 5의 태스크 스택 주소 공간 무작위 할당 기법을 적용한 태스크 생성 방법을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 메모리를 구비하는 전자기기의 구현 방법의 일례를 설명하기 위한 도면이다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명의 실시예를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 실시예에 대한 이해를 방해한다고 판단되는 경우에는 그 상세한 설명은 생략한다.
본 발명의 실시예의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 또한, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 일 실시예에 따른 다중 태스크 지원 운영체제 메모리의 구조를 설명하기 위한 도면이다. 본 발명에서 사물인터넷 환경에서의 경량 전자 기기에 적용되는, 단일주소공간(single address space)을 사용하는 다중 태스크(multi-task) 지원 경량 임베디드 기기용 운영체제(operating system) 메모리를 제어하고 운용하기 위한 메모리 운용 방법에 대하여 설명하지만, 이에 한정되는 것은 아니며 본 발명의 메모리 운용 방법은 기타 다양한 종류의 모든 전자기기의 운영체제 메모리에도 적용될 수 있다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 다중 태스크 지원 운영체제 메모리는, 코드 영역, 전역 데이터 영역, 힙(heap) 영역을 포함하는 시스템 공유 전역(global) 메모리 공간(S1), 및 하나 이상의 태스크 스택 영역(예, 1~n, n은 자연수)을 포함하는 태스크별 지역 메모리 공간(S2)을 포함한다. 이와 같은 영역들은 복수의 저장소에 분산되어 분포할 수 있으며 단일 주소공간 체제에 따라 하나의 단일 저장소와 같이 취급되고 관리 운용될 수 있다.
운영체제 마다 실제 배치는 조금씩 다를 수 있지만, 이와 같은 각 영역에 대한 존재와 목적은 동일하게 적용된다. 단일주소공간 내에서 커널과 프로그램 실행 중의 모든 태스크는 개념적으로 전체 메모리에 대한 접근(access)이 가능하기 때문에 코드 영역, 전역데이터 영역, 힙(heap) 영역(동적 메모리 할당 공간)은 공유하는 구조로 이루어진다. 반면, 단일 주소 공간 내에서 다중 태스크 실행 구조를 실현하기 위해서, 커널 스택과 별도로 개별 태스크 마다 별도의 태스크 스택(stack) 영역을 갖는다.
본 발명에서는 이와 같이 메모리 배치를, 시스템 전체가 공유하는 전역 메모리 공간(S1)과 개별 태스크를 위한 지역 메모리 공간(S2)으로 크게 2 종류로 구분하고 있다. 이와 같은 구분에 따르면, 하기하는 바와 같이(도 5 참조) 본 발명의 지역 메모리 공간(S2)의 태스크 스택 영역은, 데이터 영역으로서의 태스크 스택(Z), 및 태스크 문맥전환(context switching)을 위한 태스크 제어 블록(task control block)(T)을 포함하게 된다. 반면, 전역 메모리 공간(S1)은 실행 가능한 명령어의 집합인 코드 영역과 힙과 전역 데이터 영역을 동시에 포함한다. 실제 경량 임베디스 기기에서 코드 영역은 비휘발성 플래시(flash) 메모리 장치 내부에 위치하고, 나머지 영역은 SRAM(Static Random Access Memory) 또는 DRAM(Dynamic Random Access Memory) 등의 휘발성(volatile) 메모리 내부에 위치한다.
도 2는 본 발명의 일 실시예에 따른 코드 삽입 공격 시나리오의 예들을 설명하기 위한 도면이다. 도 2에서는 본 발명에서 탐지 및 방지하려는 보안 위협 모델인 3가지 코드 삽입 공격 시나리오를 예시한다.
메모리에 소정의 운영체제를 탑재한 전자기기에서 제어장치(예, MCU)가 소정의 프로그램을 실행시키면, 도 2에서, 먼저, 시나리오 I은 가장 전형적인 공격 패턴으로서, 현재 실행중인 태스크 스택 영역(Z4)에 공격코드(V1)를 삽입하고, 현재 태스크 스택 영역(Z4)에 저장된 함수 복귀주소(return address)(V2)를 덮어쓰기(overwrite)로 변경해 놓아, 함수 리턴 시 변경된 함수 복귀 주소(V2)를 이용하여 공격 코드(V1)를 바로 실행하는 경우이다. 이와 같이 공격 코드(V1)로 실행 제어권을 넘기기 위한 방법으로서, 스택 내부 함수 복귀주소(V2) 덮어쓰기 이외에 공격코드(V1)를 실행시킬 수 있는 다른 다양한 방법들이 사용될 수 있다.
시나리오 II는, 시나리오 I과 유사하며, 공격 코드(V1)를 현재 실행중인 태스크의 스택 영역(Z4) 외부의 다른 스택 영역에 삽입하고, 함수 리턴 시 공격 코드(V1)로 실행 제어권을 넘기는 경우이다.
마지막으로, 시나리오 III는 공격 코드(V1)를 태스크 스택 영역, 즉, 지역 메모리 공간(S2)이 아닌 힙 영역 혹은 전역 데이터 영역에 삽입하고, 함수 리턴 시 공격 코드(V1)로 실행 제어권을 넘기는 경우이다.
본 발명에서는 크게 세 가지 기법을 이용하여 도 2와 같은 다양한 시나리오의 공격에 대응하고자 한다. 첫째는 메모리 보호 구역 기반 전역 데이터 보호 기법, 두 번째는 태스크 스택 방화벽 및 메모리 보호 구역 기반 지역 데이터 보호 기법, 세 번째는 태스크 제어 블록(task control block) 기반 태스크 스택 주소 공간 무작위화(address randomization) 기법이다. 이와 같은 기법은 2가지 이상 조합되어 적용될 수도 있다.
도 3은 본 발명의 일 실시예에 따른 전자기기에서의 메모리 운용 방법을 설명하기 위한 도면이다. 도 3은 공격 코드에 대응하여 메모리 보호 구역 기반 전역 데이터 보호 기법으로 전역 메모리 실행 권한이 금지되는 경우를 나타낸다.
전자기기에서 제어장치(예, MCU)가 소정의 프로그램을 실행시킬 때, 코드 삽입 공격은 도 2와 같이 공격 코드를 먼저 메모리에 삽입하고 실행 제어권을 해당 공격 코드로 전환하는 두 단계로 이루어진다. 코드 삽입 공격을 방지하기 위하여, 본 발명의 메모리 보호 구역 기반 전역 데이터 보호 기법은, 삽입된 공격 코드의 주소가 프로그램 카운터(Program Counter, PC)로 적재되지 못하도록 하는 방법이다.
앞에서 구분한 시스템 공유 전역 메모리 공간(S1)의 힙 영역(Z3)과 전역데이터영역(Z2)는 시스템의 전체 생애 주기 동안 고정된 위치에서 동적 데이터 할당 및 전역 변수에 대한 데이터 영역으로 사용된다. 따라서, 이 공간(Z2, Z3)에서의 실행 코드 존재는 불법적이며 공격 상황으로 간주될 수 있기 때문에, 해당 공간(Z2, Z3)을 하나의 메모리 보호 구역(P0)으로 정의하고 해당 구역 내에서의 코드 실행을 금지하는 설정이 필요하다. 다시 말해, 공격 코드가 해당 공간(Z2, Z3)으로 삽입(쓰기)될 수는 있지만, 해당 공격 코드를 실행하려는 순간에는 예외상황(exception)이 발생하도록 조치할 수 있다.
메모리 보호 구역(P0)은 제어장치, 예를 들어, 일반적인 임베디드 마이크로컨트롤러 유닛(Micro Controller Unit, MCU) 내에서 하드웨어적으로 제공하는 메모리 보호 유닛(Memory Protection Unit, MPU)를 통해 구현할 수 있다. 예컨데, 해당 공간(Z2, Z3)의 크기가 16KB 범위 내에 있을 때, 메모리 보호 유닛(MPU)의 소정의 영역(region)을 도 3의 메모리 보호 구역 0(P0)의 속성처럼 설정하면, 해당 공간(Z2, Z3) 내부에서의 코드 실행이 불가능해지고, 외부 공격자에 의한 불법적 시도들은 예외상황으로 처리가 가능하다. 즉, 제어장치(MCU)의 제어에 따라 메모리 보호 유닛(MPU)에 메모리 보호 구역 0(P0)에 대한 소정의 설정(읽기/쓰기 가능, 실행 금지)이 이루어지면, 제어장치(MCU)는 메모리 보호 구역 0(P0)의 해당 공간 크기(예, 16KB)에 대하여 읽기 또는 쓰기가 가능하도록 제어하지만, 메모리 보호 구역 0(P0)의 코드는 실행 금지되어 실행되지 않도록 제어할 수 있다. 즉, 제어장치(MCU)는 메모리 보호 구역 0(P0)의 설정에 따라 공격 코드의 주소가 프로그램 카운터(PC)로 적재되지 못하도록 제어할 수 있다. 이에 따라 커널과 일반 태스크들이 메모리의 주소 공간(Z2, Z3)을 공유하더라도 프로그램의 실행 중 태스크 내부 동작에서의 불법적인 코드 삽입 공격에 대해 커널 수준에서 탐지 및 차단할 수 있다.
도 4a 및 도 4b는 본 발명의 다른 실시예에 따른 전자기기에서의 메모리 운용 방법을 설명하기 위한 도면이다. 도 4a 및 도 4b는 태스크 스택 방화벽 및 메모리 보호 구역 기반 지역 데이터 보호 기법을 이용하여 공격 코드에 대한 실행이 금지되는 경우의 예들을 나타낸다.
전역 메모리 공간(S1)의 전역데이터영역(Z2) 및 힙 영역(Z3)과는 달리, 태스크 별 스택 영역을 갖는 지역 메모리 공간(S2)은 운영체제 마다 다양한 구조를 갖는다. 특히, 실행되는 태스크들의 스택들은 연속적인 메모리 주소에 배치되지 않거나, 극단적인 경우 다른 태스크 스택과의 경계 사이에 코드 영역 같은 전혀 다른 용도의 영역이 존재할 수 있다. 따라서, 전역 메모리 공간(Z2, Z3)처럼 한 개의 메모리 보호 구역 설정으로 전체 태스크 스택들을 보호하기 어렵다. 또한, 개별 태스크 스택마다 하나의 메모리 보호 구역으로 설정하려면 태스크 수만큼의 메모리 보호 구역이 필요하기 때문에 현실적으로 구현이 어렵거나 불가능할 수 있다. 이에 본 발명에서는, 도 2의 공격 시나리오 중에서 태스크 스택을 이용한 공격인 시나리오 I과 시나리오 II에 대응하는 방법으로 태스크 스택 메모리 보호 기법과 태스크 스택 방화벽을 제안한다.
먼저, 도 4a를 참조하면, 태스크 스택 메모리 보호 기법은 첫 번째 방법인 전역 메모리 실행 권한 금지 기법(도 3 참조)과 유사하게 태스크 스택 영역에 메모리 보호 구역1(P1)을 설정하되, 현재 실행중인 태스크의 스택(Z4) 범위로 한정하여 메모리 보호 구역(P1)을 설정한다. 따라서, 현재 실행중인 태스크의 스택(Z4) 내에서 공격 코드가 삽입되고 실행 제어권이 넘어가려는 순간, 제어장치(MCU)의 제어(도 3 참조)에 따라 예외상황이 발생하게 되어 공격 시나리오 I에 대한 대응이 가능하다. 반면, 시나리오 II는 현재 실행중인 태스크 스택(Z4)이 아닌 다른 태스크 스택으로 공격 코드가 삽입되고 해당 공격 코드로 실행 제어권이 넘어가는 경우이므로, 앞서 설정된 메모리 보호 구역(P1)의 범위가 아니기 때문에 공격코드 실행이 가능해 질 수 있다. 따라서, 현재 실행중인 태스크 스택(Z4)을 기준으로 다른 스택으로 공격 코드를 삽입하는 동작이 차단되도록 하여, 공격 시나리오 II에 대해 대응할 수 있게 하여야 한다.
본 발명에서는 '스택 방화벽(F)'이라고 명명한 기법을 통해, 현재 실행중인 태스크의 스택(Z4) 영역을 넘어 다른 스택(지역 메모리 공간)에 대한 쓰기 작업이 금지되도록 통제한다. 일반적으로, 스택에 덮어쓰기 공격에 의한 공격 코드 삽입은 메모리 주소 오름차순(ascending order)로 진행되기 때문에 현재 실행중인 스택(Z4)의 상한 주소(top) 보다 상위 주소를 갖는 메모리 영역에서 발생된다. 따라서, 이 영역에 설정된 스택 방화벽(F)은 현재 실행중인 태스크 스택(Z4)이 덮어쓰기 공격에 의해 공격 코드가 삽입되더라도 해당실행중인 태스크 스택(Z4) 영역 밖으로 공격 코드 삽입이 발생하지 못하도록 예방하는 기법이다. 이와 같은 스택 방화벽 적용 예시는 도 4a처럼 별도의 메모리 보호 구역(P2) 설정을 현재 실행중인 태스크 스택(Z4) 상단 영역에 소정의 크기(예, 크기 64KB)로 쓰기 권한이 금지되는 스택 방화벽(F)을 위한 메모리 보호구역2(P2)을 메모리 보호 유닛(MPU)에 설정함으로써, 메모리 보호 유닛(MPU)의 해당 설정과 제어장치(MCU)의 제어에 따라 공격 시나리오 II에 대한 대응이 가능하다.
공격 시나리오 II와 시나리오 III는 현재 실행 중인 태스크의 스택 범위를 넘어 다른 메모리 영역으로 공격 코드를 삽입하는 경우이다. 이 중 시나리오 III는 힙 영역으로 공격 코드를 삽입하는 경우로서, 본 발명의 첫 번째 기법(도 3 참조)인 전역 메모리 실행 권한 금지를 통해 차단하기 때문에 삽입된 공격 코드로 실행 제어권이 이동할 때 차단할 수 있다. 반면, 시나리오 II는 현재 실행중인 태스크 스택(Z4) 영역 상위에 소정의 크기의 저장 공간을 스택 방화벽으로 설정하여 공격 코드 삽입 단계에서 차단한다.
도 4a에서 설명된 메모리 보호 구역 기반 태스크 스택 보호와 스택 방화벽 기법은 현재 실행중인 태스크를 중심으로 설정되기 때문에, 태스크의 문맥 전환(context switching) 시에 해당 보호 구역 설정은 새로 실행되는 태스크를 중심으로 변경되어야 한다. 즉, 태스크의 문맥 전환이 이루어지면, 도 4b와 같이 신규로 실행되는 태스크(Z5)를 중심으로 해당 범위로 이동하여 태스크 스택 보호를 위한 메모리 보호 구역1(P1)이 설정되고, 그 상위 주소에 스택 방화벽(F)을 위한 메모리 보호 구역2(P2)(예, 크기 64KB)이 이동되어 설정되도록 변경이 이루어진다. 이 때, 새로운 태스크(Z5)에 대한 메모리 보호 구역(P1, P2)은 태스크 제어 블록(TCB, task control block) 정보를 통해 제어장치(MCU)의 제어에 따라 메모리 보호 유닛(MPU)에 설정될 수 있다. 따라서, 2 개의 메모리 보호 구역(P1, P2)으로 모든 태스크의 스택에 보호 구역과 스택 방화벽을 설정할 수 있다.
이와 같이 메모리의 현재 태스크 스택이나 다른 태스크 스택에 공격 코드를 삽입하거나 태스크의 문맥 전환 시의 공격 코드에 대하여도 커널 수준에서 탐지 및 차단할 수 있다.
도 5는 본 발명의 또 다른 실시예에 따른 전자기기에서의 메모리 운용 방법을 설명하기 위한 도면이다. 도 5는 공격 코드에 대응하여 태스크 제어 블록(task control block) 기반 태스크 스택 주소 공간 무작위화(address randomization) 기법을 이용하여 공격 코드에 대한 실행이 금지되는 경우를 나타낸다.
위에서 기술한 바와 같이 코드 삽입 공격은 소프트웨어 취약성을 이용하여 스택 또는 힙 영역에 먼저 코드를 삽입하고 해당 코드로 실행 제어권을 옮기는 구조로 되어 있다. 이 때, 실행 제어권을 삽입된 코드로 이동하기 위해서는 삽입된 코드의 위치(메모리 주소)에 대한 정보가 반드시 요구된다. 일반적으로 임베디드 시스템(기기)에서는 소프트웨어 구조가 단순하고 고정적이기 때문에, 한 기기가 해킹되어 소프트웨어 구조 및 바이너리 정보가 노출되면 해당 정보는 같은 운영체제를 이용하는 다른 기기에도 적용될 가능성이 매우 높다. 따라서, 동일한 공격 코드가 동일 운영체제를 탑재한 여러 기기에 그대로 적용될 수 있게 되어 삽입될 공격 코드를 매우 쉽게 구현하게 된다.
본 발명에서는, 태스크 스택 주소 공간 무작위 할당 기법을 통해 공격 코드가 기기 내부 메모리에 삽입되더라도 코드를 실행시키는 성공률을 떨어뜨리고 공격자로 하여금 동일한 공격 코드를 재사용할 수 없도록 한다. 만약, 공격자가 삽입될 코드의 위치를 미리 아는 경우, 공격 코드 삽입 후 해당 위치로 제어권을 이동시키는 것은 매우 용이하다. 따라서, 태스크 스택 주소 공간 무작위 할당 기법은 공격 코드가 삽입되더라도, 공격자가 공격 코드의 삽입 위치를 미리 예측하기 어렵도록 일부 메모리 주소 공간을 무작위로 배치하는 방법이다.
특히, 도 5와 같이, 공격 코드가 주로 삽입되는 태스크의 스택(Z)은 태스크 생성시 태스크 제어 블록 할당(R) 시에 그 위치(메모리 주소)가 정해져 할당되므로, 본 발명에서는 이 단계에서 난수 처리로 결정된 위치, 즉, 임의의 무작위 위치로의 할당(F)을 통해 태스크 스택의 위치를 예측하기 어렵게 하였다. 즉, 태스크 생성 순서와 상관없이 태스크 스택(Z)의 위치에 대한 무작위(random) 성질이 제공된다면, 공격자가 태스크 스택(Z) 내부에 삽입된 공격 코드를 실행시킬 성공율을 떨어뜨릴 수 있다.
이와 같은 태스크 스택 주소 공간 무작위 할당 기법에 대한 절차를 도 6의 흐름도를 참조하여 자세히 설명한다.
도 6은 도 5의 태스크 스택 주소 공간 무작위 할당 기법을 적용한 태스크 생성 방법을 설명하기 위한 도면이다.
도 6을 참조하면, 태스크 스택 주소 공간에 대한 무작위화(randomization)는 태스크 생성시 이루어지며, 먼저, 시스템 초기화 또는 운영 중간에 제어장치(MCU)의 제어에 따라 프로그램 실행 중 새로운 태스크를 생성할 때(601), 제어장치(MCU)는 가장 먼저 메모리에 태스크 제어 블록(T)을 생성한다(602). 제어장치(MCU)는 도 5의 태스크 제어 블록(T)처럼 태스크 동작에 필요한 여러 요소들, 즉, 스택시작주소, 스택크기, 현재스택포인터, 대기작업큐, 수면대기시간, 우선순위,...등을 메모리 보호 유닛(MPU)에 관리할 수 있다. 이때, 태스크 제어 블록 생성 시에는 필수적으로 태스크 스택 할당 요청(603)이 이루어지고, 제어장치(MCU)는 해당 태스크에 대하여 태스크 스택 공간(Z)을 할당하여 메모리 보호 유닛(MPU)에 관리하고, 현재 스택 포인터의 위치 등을 관리한다.
다만, 본 발명에서는 이와 같은 태스크 스택(Z) 할당(또는 설정) 시에, 본 발명에서 제안한 무작위 할당 기능(604)이 설정된 경우, 제어장치(MCU)는 무작위 할당 함수(605)를 이용하여 태스크 스택(Z) 위치를 예측 불가한 임의의 무작위 위치(주소)로 결정하여 태스크 스택 할당(606)을 수행할 수 있다. 이 때 무작위 할당 함수(605)에서는 태스크 스택 할당을 위해 제공되는 전체 메모리 주소 공간(S2) 내에서 난수 함수(random number generation function)를 기반으로 새로운 태스크 스택의 주소를 무작위로 할당하며, 이 난수 함수는 하드웨어 또는 소프트웨어를 이용한 모든 구현 방법을 포함할 수 있다.
이와 달리 스택 무작위 할당 기능 설정(604)이 꺼져있는 경우에는, 항상 고정된 순서에 따라 태스크 스택을 할당(606)하게 된다. 이후 제어장치(MCU)는 태스크 제어 블록(T)에 대한 초기화(607)를 진행하고 태스크 생성을 완료(608)하게 된다.
지금까지 본 발명에서는 코드 삽입 공격이 발생될 수 있는 스택의 범위를 태스크 스택 위주로 설명하였다. 이러한 이유는, 일반 태스크 코드에 비해 커널 코드에 대한 검증이 많이 이루어져 상대적으로 보안 취약성이 낮기 때문에 커널의 취약성을 통한 공격 보다는 일반 태스크를 통한 코드 삽입 공격이 많기 때문이다. 하지만, 본 발명의 기법들은 커널 스택을 보호하는 데에도 쉽게 확장하여 적용될 수 있으며 일반 태스크 스택 보호를 위한 것만으로만 한정하지 않는다.
도 7은 본 발명의 일 실시예에 따른 메모리를 구비하는 전자기기의 구현 방법의 일례를 설명하기 위한 도면이다. 본 발명의 일 실시예에 따른 전자기기는 하드웨어, 소프트웨어, 또는 이들의 결합으로 이루어질 수 있다. 예를 들어, 본 발명의 일 실시예에 따른 전자기기는 도 7과 같은 컴퓨팅 시스템(1000)으로 구현될 수 있다.
컴퓨팅 시스템(1000)은 버스(1200)를 통해 연결되는 적어도 하나의 프로세서(1100)(또는 제어장치), 메모리(1300), 사용자 인터페이스 입력 장치(1400), 사용자 인터페이스 출력 장치(1500), 스토리지(1600), 및 네트워크 인터페이스(1700)를 포함할 수 있다. 프로세서(1100)는 중앙 처리 장치(CPU) 또는 메모리(1300) 및/또는 스토리지(1600)에 저장된 명령어들에 대한 처리를 실행하는 반도체 장치일 수 있다. 메모리(1300) 및 스토리지(1600)는 다양한 종류의 휘발성 또는 불휘발성 저장 매체를 포함할 수 있다. 예를 들어, 메모리(1300)는 ROM(Read Only Memory)(1310) 및 RAM(Random Access Memory)(1320)을 포함할 수 있다. 이외에도 메모리(1300)는 비휘발성 플래시 메모리를 포함할 수 있다. 본 발명의 일 실시예에 따른 전자기기는 메모리(1300)에 위에서 기술한 바와 같은 코드 삽입 공격 방지를 위한 운영체제를 저장하여 운영될 수 있으며, 예를 들어, 경량 임베디드 기기나 기타 다양한 종류의 모든 전자기기일 수 있다.
따라서, 본 명세서에 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계는 프로세서(1100)에 의해 실행되는 하드웨어, 소프트웨어 모듈, 또는 그 2 개의 결합으로 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈형 디스크, CD-ROM과 같은 저장 매체(즉, 메모리(1300) 및/또는 스토리지(1600))에 상주할 수도 있다. 예시적인 저장 매체는 프로세서(1100)에 커플링되며, 그 프로세서(1100)는 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기입할 수 있다. 다른 방법으로, 저장 매체는 프로세서(1100)와 일체형일 수도 있다. 프로세서 및 저장 매체는 주문형 집적회로(ASIC) 내에 상주할 수도 있다. ASIC는 사용자 단말기 내에 상주할 수도 있다. 다른 방법으로, 프로세서 및 저장 매체는 사용자 단말기 내에 개별 컴포넌트로서 상주할 수도 있다.
상술한 바와 같이, 본 발명에 따른 전자기기의 메모리 운용 방법에 따르면, 커널과 일반 태스크들이 메모리의 주소 공간을 공유하더라도 응용 태스크(프로그램의 실행 상태) 내부 동작에서의 불법적인 코드 삽입 공격에 대해 커널 수준에서 탐지 및 차단할 수 있으므로, 제한된 하드웨어 자원을 갖는 사물인터넷 환경에서의 경량 전자 기기 등에 적용하여 내부 소프트웨어의 동적 실행 환경에서 효과적으로 해킹 공격으로부터 전자 기기를 보호할 수 있다. 또한, 메모리 보호 구역이 데이터 메모리 보호 기법의 적용으로 메모리 보호 유닛(MPU)을 통해 쉽게 구현이 가능하기 때문에 데이터 메모리에 대한 실행 권한 및 쓰기 권한 금지에 대한 작업 비용을 최소화할 수 있다. 또한, 한정된 수량의 메모리 보호 유닛(MPU)만으로 데이터 영역에 대한 코드 삽입 공격을 효과적으로 차단할 수 있다.
또한, 태스크 생성시 무작위 함수에 의한 스택 할당은 유동적으로 스택 주소 공간을 배치하여 불법적으로 스택에 삽입된 코드의 주소 예측을 어렵게 할 수 있다. 뿐만 아니라, 동일한 공격 코드를 다른 기기에 쉽게 적용하지 못하게 하여 악성코드 확산 방지 효과를 갖는다. 그리고, 운영체제 특수성을 최소화하였으므로 경량 임베디드 기기나 기타 다양한 종류의 모든 전자기기의 운영체제에 적용될 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다.
따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (14)

  1. 전자기기에서 코드 삽입 공격으로부터 보호를 위한 메모리 운용 방법에 있어서,
    제어장치에서 메모리의 소정의 공간 크기에 대하여, 읽기 및 쓰기가 가능하지만 코드의 실행이 금지되는 보호 구역을 설정하는 단계; 및
    프로그램 실행 중 상기 제어장치에서 상기 보호 구역에 대응되는 상기 메모리의 공간에 읽기 또는 쓰기를 제어하는 단계를 포함하고,
    상기 프로그램 실행 중 상기 보호 구역에 대응되는 상기 메모리의 공간에 공격 코드가 삽입되더라도, 상기 제어장치의 제어에 따라 상기 공격 코드의 실행 금지가 이루어지는 것을 특징으로 하는 메모리 운용 방법.
  2. 제1항에 있어서,
    상기 보호 구역이 설정된 상기 메모리의 공간은, 공유 전역 메모리 공간의 힙 영역 또는 전역데이터영역을 포함하는 것을 특징으로 하는 메모리 운용 방법.
  3. 제1항에 있어서,
    상기 보호 구역이 설정된 상기 메모리의 공간은, 지역 메모리 공간의 태스크 스택 영역을 포함하는 것을 특징으로 하는 메모리 운용 방법.
  4. 제3항에 있어서,
    상기 태스크 스택 영역은 현재 실행 중인 태스크 스택의 범위인 것을 특징으로 하는 메모리 운용 방법.
  5. 제4항에 있어서,
    상기 제어장치에서 쓰기가 금지되는 스택 방화벽을 위한 구역을 설정하는 단계를 더 포함하되, 상기 스택 방화벽을 위한 구역은 상기 현재 실행 중인 태스크 스택의 상한 주소 보다 상위 주소를 갖는 상기 지역 메모리 공간에 설정되는 것을 특징으로 하는 메모리 운용 방법.
  6. 제5항에 있어서,
    상기 현재 실행 중인 태스크의 문맥 전환 시에, 상기 제어장치의 제어에 따라 신규로 실행되는 태스크 스택의 범위로 이동하여 상기 보호 구역을 설정하도록 설정 변경하고, 상기 신규로 실행되는 태스크 스택의 보다 상위 주소를 갖는 상기 지역 메모리 공간으로 이동하여 상기 스택 방화벽을 위한 구역을 설정하도록 설정 변경하는 단계
    를 더 포함하는 것을 특징으로 하는 메모리 운용 방법.
  7. 전자기기에서 코드 삽입 공격으로부터 보호를 위한 메모리 운용 방법에 있어서,
    제어장치에서 새로운 태스크를 생성할 때, 메모리의 지역 메모리 공간에 상기 새로운 태스크에 대한 태스크 제어 블록을 생성하는 단계; 및
    상기 제어장치에서 상기 지역 메모리 공간에 상기 새로운 태스크에 대한 태스크 스택을 할당하는 단계를 포함하고,
    상기 태스크 스택을 할당하는 단계에서, 미리 정해진 위치에 할당되지 않도록, 난수 처리를 이용하여 상기 태스크 스택을 임의의 무작위 위치에 할당하는 것을 특징으로 하는 메모리 운용 방법.
  8. 메모리; 및
    코드 삽입 공격으로부터 보호를 위한 제어를 수행하는 제어장치를 포함하고,
    상기 제어장치는, 상기 메모리의 소정의 공간 크기에 대하여, 읽기 및 쓰기가 가능하지만 코드의 실행이 금지되는 보호 구역을 설정하고, 프로그램 실행 중 상기 보호 구역에 대응되는 상기 메모리의 공간에 읽기 또는 쓰기를 제어하되, 상기 프로그램 실행 중 상기 보호 구역에 대응되는 상기 메모리의 공간에 공격 코드가 삽입되더라도, 상기 공격 코드의 실행 금지가 이루어지도록 제어하는 것을 특징으로 하는 전자기기.
  9. 제8항에 있어서,
    상기 보호 구역이 설정된 상기 메모리의 공간은, 공유 전역 메모리 공간의 힙 영역 또는 전역데이터영역을 포함하는 것을 특징으로 하는 전자기기.
  10. 제8항에 있어서,
    상기 보호 구역이 설정된 상기 메모리의 공간은, 지역 메모리 공간의 태스크 스택 영역을 포함하는 것을 특징으로 하는 전자기기.
  11. 제10항에 있어서,
    상기 태스크 스택 영역은 현재 실행 중인 태스크 스택의 범위인 것을 특징으로 하는 전자기기.
  12. 제11항에 있어서,
    상기 제어장치에서 상기 현재 실행 중인 태스크 스택의 상한 주소 보다 상위 주소를 갖는 상기 지역 메모리 공간에, 쓰기가 금지되는 스택 방화벽을 위한 구역을 설정하는 것을 특징으로 하는 전자기기.
  13. 제11항에 있어서,
    상기 현재 실행 중인 태스크의 문맥 전환 시에, 상기 제어장치는 신규로 실행되는 태스크 스택의 범위로 이동하여 상기 보호 구역을 설정하도록 설정 변경하고, 상기 신규로 실행되는 태스크 스택의 보다 상위 주소를 갖는 상기 지역 메모리 공간으로 이동하여 상기 스택 방화벽을 위한 구역을 설정하도록 설정 변경을 제어하는 것을 특징으로 하는 전자기기.
  14. 제8항에 있어서,
    상기 제어장치는,
    새로운 태스크를 생성할 때, 상기 메모리의 지역 메모리 공간에 상기 새로운 태스크에 대한 태스크 제어 블록을 생성하며, 상기 지역 메모리 공간에 상기 새로운 태스크에 대한 태스크 스택을 할당하되,
    상기 새로운 태스크에 대한 상기 태스크 스택이 미리 정해진 위치에 할당되지 않도록, 난수 처리를 이용하여 상기 태스크 스택을 임의의 무작위 위치에 할당하는 것을 특징으로 하는 전자기기.
KR1020160032045A 2016-03-17 2016-03-17 전자기기에서 코드 삽입 공격으로부터 보호를 위한 메모리 운용 방법 KR102028704B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160032045A KR102028704B1 (ko) 2016-03-17 2016-03-17 전자기기에서 코드 삽입 공격으로부터 보호를 위한 메모리 운용 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160032045A KR102028704B1 (ko) 2016-03-17 2016-03-17 전자기기에서 코드 삽입 공격으로부터 보호를 위한 메모리 운용 방법

Publications (2)

Publication Number Publication Date
KR20170108332A true KR20170108332A (ko) 2017-09-27
KR102028704B1 KR102028704B1 (ko) 2019-10-07

Family

ID=60036144

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160032045A KR102028704B1 (ko) 2016-03-17 2016-03-17 전자기기에서 코드 삽입 공격으로부터 보호를 위한 메모리 운용 방법

Country Status (1)

Country Link
KR (1) KR102028704B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200064702A (ko) * 2018-11-29 2020-06-08 한국전자통신연구원 하드웨어 기반의 임베디드 시스템의 주소 공간 레이아웃 랜덤화 방법 및 이를 위한 장치
US11341285B2 (en) 2018-05-09 2022-05-24 Samsung Electronics Co., Ltd. Integrated circuit device and operating method of integrated circuit device
CN116795494A (zh) * 2023-08-23 2023-09-22 北京紫光芯能科技有限公司 内存保护单元信息的处理方法、系统以及可读介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007304954A (ja) * 2006-05-12 2007-11-22 Sharp Corp メモリ保護機能を有するコンピュータシステム
KR20090130189A (ko) * 2007-04-20 2009-12-18 모토로라 인코포레이티드 기록 보호 메모리 관리 유니트 레지스터들을 가진 로직 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007304954A (ja) * 2006-05-12 2007-11-22 Sharp Corp メモリ保護機能を有するコンピュータシステム
KR20090130189A (ko) * 2007-04-20 2009-12-18 모토로라 인코포레이티드 기록 보호 메모리 관리 유니트 레지스터들을 가진 로직 장치

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Mark McLoughlin, "Stack Guard Page"(2012.01.)* *
김경수, "리눅스 시스템 해킹방어 메카니즘 및 해킹환경 구축하기"(2015.04.)* *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11341285B2 (en) 2018-05-09 2022-05-24 Samsung Electronics Co., Ltd. Integrated circuit device and operating method of integrated circuit device
KR20200064702A (ko) * 2018-11-29 2020-06-08 한국전자통신연구원 하드웨어 기반의 임베디드 시스템의 주소 공간 레이아웃 랜덤화 방법 및 이를 위한 장치
CN116795494A (zh) * 2023-08-23 2023-09-22 北京紫光芯能科技有限公司 内存保护单元信息的处理方法、系统以及可读介质
CN116795494B (zh) * 2023-08-23 2024-01-02 北京紫光芯能科技有限公司 内存保护单元信息的处理方法、系统以及可读介质

Also Published As

Publication number Publication date
KR102028704B1 (ko) 2019-10-07

Similar Documents

Publication Publication Date Title
CN111651778B (zh) 基于risc-v指令架构的物理内存隔离方法
US20200034527A1 (en) Fine-grained address space layout randomization
KR102095614B1 (ko) 메모리 보호
EP1857943A1 (en) Computer system having memory protection function
CN105760773A (zh) 通过易受攻击的应用控制打开文件的系统和方法
Oliverio et al. Secure Page Fusion with VUsion: https://www. vusec. net/projects/VUsion
CN110325994B (zh) 增强软件应用的控制流完整性的设备和方法
US10303885B2 (en) Methods and systems for securely executing untrusted software
US20160062655A1 (en) System and Method for Improved Memory Allocation in a Computer System
CN112256396B (zh) 内存管理方法、系统及安全处理装置、数据处理装置
KR102028704B1 (ko) 전자기기에서 코드 삽입 공격으로부터 보호를 위한 메모리 운용 방법
US20190370439A1 (en) Secure system on chip for protecting software program from tampering, rehosting and piracy and method for operating the same
CN107851032B (zh) 用于在容器中执行服务的计算装置、系统及方法
US11003430B2 (en) Method of enforcing control flow integrity in a monolithic binary using static analysis
CN111373405B (zh) 用于防止计算设备中比特翻转攻击的计算机实现方法
CN112534416A (zh) 用于在计算设备的虚拟机监视器中提供一次性可编程存储器部件的装置和方法
CN114722404B (zh) 基于risc-v实现任意数量eapp的方法、系统
US10387644B2 (en) Systems and methods for intrinsic runtime security
CN110929304A (zh) 一种基于risc-v的内存保护方法
US10152331B2 (en) Method and system for enforcing kernel mode access protection
Adiletta et al. Mayhem: Targeted Corruption of Register and Stack Variables
US20160313938A1 (en) Fine grained memory protection to thwart memory overrun attacks
JP2005209178A (ja) メモリ保護装置、メモリ保護方法及びメモリ保護プログラム
CN116635855A (zh) 基于执行上下文管理可执行代码对数据内存的访问的装置和方法
JP2008269589A (ja) 仮想化環境での安全なシステム保護装置および方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)