KR102324950B1 - 취약점을 효율적으로 탐지할 수 있는 아키텍처로 구성된 힙 영역 메모리 관리 방법 및 그 장치 - Google Patents

취약점을 효율적으로 탐지할 수 있는 아키텍처로 구성된 힙 영역 메모리 관리 방법 및 그 장치 Download PDF

Info

Publication number
KR102324950B1
KR102324950B1 KR1020190031547A KR20190031547A KR102324950B1 KR 102324950 B1 KR102324950 B1 KR 102324950B1 KR 1020190031547 A KR1020190031547 A KR 1020190031547A KR 20190031547 A KR20190031547 A KR 20190031547A KR 102324950 B1 KR102324950 B1 KR 102324950B1
Authority
KR
South Korea
Prior art keywords
memory
block
memory block
heap area
vulnerability
Prior art date
Application number
KR1020190031547A
Other languages
English (en)
Other versions
KR20200111909A (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 KR1020190031547A priority Critical patent/KR102324950B1/ko
Publication of KR20200111909A publication Critical patent/KR20200111909A/ko
Application granted granted Critical
Publication of KR102324950B1 publication Critical patent/KR102324950B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

취약점을 효율적으로 탐지할 수 있는 아키텍처로 구성된 힙(HEAP) 영역 메모리 관리 방법 및 그 장치에 대한 기술이 제공된다. 본 발명의 일 실시예에 따른 힙 영역 메모리 관리 방법은 힙(Heap)영역 메모리 할당 요청을 수신하는 단계, 상기 메모리 할당 요청에 응답하여 힙 영역에 저장하고자 하는 데이터가 저장된 데이터 블록, 상기 데이터 블록에서 발생되는 취약점 탐지에 이용되는 가드 블록 및 제1 메모리 블록과 상이한 제2 메모리 블록의 시작주소를 가리키는 포인터가 저장된 포인터 블록을 포함하는 상기 제1 메모리 블록을 생성하는 단계를 포함하되, 상기 가드 블록은 상기 데이터 블록 및 상기 포인터 블록 사이에 위치한 것임을 포함한다.

Description

취약점을 효율적으로 탐지할 수 있는 아키텍처로 구성된 힙 영역 메모리 관리 방법 및 그 장치{A METHOD AND APPARATUS FOR EFFICIENTLY DETECTING A VULNERABILITY IN A MEMORY OF A HEAP AREA}
본 발명은 취약점을 효율적으로 탐지할 수 있는 아키텍처로 구성된 힙(HEAP) 영역의 메모리 관리 방법 및 그 장치에 관한 것이다. 보다 자세하게는, 힙 영역에서 발생되는 취약점을 빠르게 탐지할 수 있는 아키텍처로 구성된 메모리 블록으로 구성된 힙 영역 관리 방법 및 그 장치에 관한 것이다.
다양한 스택 메모리 보호 기법은 컴파일시 카나리(Canary)를 생성하거나 메모리 사용 전 메모리 공간을 초기화 하는 방법이 이용된다. 하지만 힙 영역의 경우, 힙 영역의 아키텍처를 변경함으로써 다른 플랫폼과의 호환성 문제가 발생할 수 있다는 한계가 있다. 이에 따라 힙 영역의 경우, 메모리에서 허용되는 메모리 크기를 넘어선 데이터의 입력으로 발생하는 버퍼 오버 플로우(buffer overflow), 이미 해제된 메모리 블록을 한번 더 해제하는 더블 프리(double-free)등 다양한 취약점이 발생되었다.
종래는 도 1과 같이 힙 영역(10, 20, 30)에서 발생하는 버퍼 오버 플로우를 탐지하기 위해 별도의 자료구조(40)를 이용하여 힙 영역의 메모리를 관리하였으나, 별도의 자료구조(40)를 이용하는 경우 시간 복잡도(time complexity)와 공간 복잡도(space complexity)가 O(n)으로 비효율적이다는 문제가 존재하였다. 이를 해결하기 위한 효율적인 힙 영역 메모리 관리 방법 및 그 장치에 대한 기술의 제공이 요구된다.
한국공개특허 2004-0047097(2004.06.05)
본 발명이 해결하고자 하는 기술적 과제는, 힙 영역을 관리하기 위한 별도의 메모리를 이용하지 않고, 힙 영역의 메모리에서 발생하는 취약점을 효율적으로 탐지하는 방법 및 그 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는, 취약점을 효율적으로 탐지하는 힙 영역 아키텍처를 소스코드 없이 생성하는 방법 및 그 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 힙 영역 메모리 관리 방법은 컴퓨팅장치에 의해 수행되는 방법에 있어서, 힙(Heap)영역 메모리 할당 요청을 수신하는 단계 및 상기 메모리 할당 요청에 응답하여 힙 영역에 저장하고자 하는 데이터가 저장된 데이터 블록, 상기 데이터 블록에서 발생되는 취약점 탐지에 이용되는 가드 블록 및 제1 메모리 블록과 상이한 제2 메모리 블록의 시작주소를 가리키는 포인터가 저장된 포인터 블록을 포함하는 상기 제1 메모리 블록을 생성하는 단계를 포함하되, 상기 가드 블록은 상기 데이터 블록 및 상기 포인터 블록 사이에 위치한 것일 수 있다.
일 실시예에 따른 상기 제1 메모리 블록을 생성하는 단계는, 상기 데이터 블록의 크기 정보를 포함하는 상기 메모리 할당 요청에 응답하여, 상기 제1 메모리 블록의 메모리를 할당하여 상기 제1 메모리 블록을 생성하는 단계를 포함하되, 상기 할당된 제1 메모리 블록의 크기는 상기 데이터 블록의 크기 및 상기 가드 블록의 크기를 포함하고, 상기 가드 블록은 상기 제1 메모리 블록의 취약점 발생을 확인하기 위한 마킹 넘버를 포함하는 것일 수 있다.
일 실시예에 따른 상기 제1 메모리 블록을 생성하는 단계는, 상기 마킹 넘버와 상기 데이터 블록 사이에 위치하도록 지정된 크기의 버퍼 블록을 더 포함하는 상기 가드 블록을 포함하는 상기 제1 메모리 블록을 생성하는 단계를 포함하되, 상기 버퍼 블록은 상기 데이터 블록의 주소값 직후에 위치하는 것일 수 있다.
일 실시예에 따른 상기 제1 메모리 블록을 생성하는 단계는, 상기 제1 메모리 블록의 시작주소에 상기 버퍼 블록의 크기를 더한 제1 주소값의 지정된 자리를 올림하여 제2 주소값을 생성하는 단계, 상기 제2 주소값에 위치하는 상기 마킹 넘버를 포함하는 상기 가드 블록을 포함하는 상기 제1 메모리 블록을 생성하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 제2 주소값을 생성하는 단계는, 상기 제1 주소값의 0xFF 자리를 올림하여 제2 주소값을 생성하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 제1 메모리 블록을 생성하는 단계는, 지정된 함수가 호출되는 것에 응답하여 상기 마킹 넘버를 이용하여 상기 제1 메모리 블록의 취약점 발생 여부를 판단하는 단계를 더 포함할 수 있다.
일 실시예에 따른 상기 제1 메모리 블록의 버퍼 오버 플로우 발생 여부를 판단하는 단계는, 상기 호출된 함수가 힙 영역의 메모리에 데이터를 쓰는 인스트럭션(write instruction)을 포함하는 함수인 경우, 상기 함수 호출 후 상기 마킹 넘버가 변경된 경우에 한하여 상기 제1 메모리 블록에 취약점이 발생된 것으로 판단하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 제1 메모리 블록을 생성하는 단계는, 상기 제1 메모리 블록의 메모리 반환 여부와 관련된 정보를 더 포함하는 상기 가드 블록을 포함하는 상기 제1 메모리 블록을 생성하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 제1 메모리 블록의 취약점 발생 여부를 판단하는 단계는, 상기 호출된 함수가 힙 영역의 메모리 할당을 요청하는 인스트럭션을 포함하는 함수인 경우, 상기 함수 호출 후 상기 메모리 반환 여부와 관련된 정보가 변경되거나 상기 마킹 넘버가 변경된 경우 상기 제1 메모리 블록에 취약점이 발생된 것으로 판단하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 제1 메모리 블록의 취약점 발생 여부를 판단하는 단계는, 상기 호출된 함수가 힙 영역의 메모리를 반환하는 인스트럭션을 포함하는 함수인 경우, 상기 함수 호출 후 상기 메모리 반환 여부와 관련된 정보가 변경되거나 상기 마킹 넘버가 변경된 경우 상기 제1 메모리 블록에 취약점이 발생된 것으로 판단하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 제1 메모리 블록의 취약점 발생 여부를 판단하는 단계는, 상기 호출된 함수가 힙 영역의 메모리를 반환하는 인스트럭션을 포함하는 함수인 경우, 상기 함수 호출 후 상기 메모리 반환 여부와 관련된 정보만 이용하여 상기 제1 메모리 블록에 취약점이 발생된 것으로 판단하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 마킹 넘버를 이용하여 상기 제1 메모리 블록의 취약점 발생 여부를 판단하는 단계는, 상기 마킹 넘버가 지정된 비트 이상 수정된 경우에 한하여 상기 제1 메모리 블록에 취약점이 발생된 것으로 판단하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 마킹 넘버를 이용하여 상기 제1 메모리 블록의 취약점 발생 여부를 판단하는 단계는, 상기 제1 메모리 블록에 취약점이 발생된 것으로 판단된 경우, 상기 호출된 함수를 종료하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 제1 메모리 블록을 생성하는 단계는, 컴파일 이후 실행 단계에서 상기 제1 메모리 블록을 생성하는 단계를 포함할 수 있다.
본 발명의 다른 실시예에 따른 힙 영역 관리 장치는 힙 영역의 메모리 관리 프로그램이 로드 되는 메모리, 상기 메모리에 로드된 힙 영역의 메모리 관리 프로그램을 실행하는 프로세서를 포함하되, 힙 영역의 메모리 관리 프로그램은, 힙(Heap)영역 메모리 할당 요청에 응답하여, 힙 영역에 저장하고자 하는 데이터가 저장된 데이터 블록, 상기 데이터 블록의 취약점 탐지에 이용되는 가드 블록 및 상기 제1 메모리 블록과 상이한 제2 메모리 블록의 시작주소를 가리키는 포인터가 저장된 포인터 블록을 포함하는 제1 메모리 블록을 생성하는 인스트럭션(instruction)을 포함하되, 상기 가드 블록은 상기 데이터 블록 및 상기 포인터 블록 사이에 위치한 것 일 수 있다.
도 1은 종래 힙 영역 메모리 보호 기법을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 힙 영역 메모리 관리 방법에 대한 순서도이다.
도 3은 도 2의 일부 동작을 자세히 설명하기 위한 순서도이다.
도 4는 본 발명의 다른 실시예에 따른 가드 블록을 포함하는 아키텍처로 구성된 힙 영역 메모리 관리 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 또 다른 실시예에 따른 버퍼 블록 및 마킹 넘버를 포함하는 아키텍처로 구성된 힙 영역 메모리 관리 방법을 설명하기 위한 도면이다.
도 6은 본 발명의 또 다른 실시예에 따른 상이한 크기를 갖는 버퍼 블록을 포함하는 힙 영역의 메모리 관리 방법을 설명하기 위한 도면이다.
도 7은 본 발명의 또 다른 실시예에 따른 지정된 위치에 존재하는 마킹 넘버를 포함하는 힙 영역 메모리 관리 방법을 설명하기 위한 도면이다.
도 8은 본 발명의 또 다른 실시예에 따른 지정된 함수가 호출된 경우 힙 영역의 취약점 발생을 탐지하는 방법을 포함하는 힘 영역 메모리 관리 방법의 순서도이다.
도 9는 본 발명의 또 다른 실시예에 따른 힙 영역에 쓰기 동작을 수행하는 함수 호출 후 취약점이 발생되지 않은 경우의 힙 영역 메모리 관리 방법을 설명하기 위한 도면이다.
도 10은 본 발명의 또 다른 실시예에 따른 힙 영역에 쓰기 동작을 수행하는 함수 호출 후 취약점이 발생된 경우의 힙 영역 메모리 관리 방법을 설명하기 위한 도면이다.
도 11은 본 발명의 또 다른 실시예에 따른 힙 영역에 메모리 할당을 요청하는 함수 호출 후 취약점이 발생되지 않은 경우의 힙 영역 메모리 관리 방법을 설명하기 위한 도면이다.
도 12는 본 발명의 또 다른 실시예에 따른 힙 영역에 메모리 할당을 요청하는 함수 호출 후 취약점이 발생된 경우의 힙 영역 메모리 관리 방법을 설명하기 위한 도면이다.
도 13은 본 발명의 또 다른 실시예에 따른 힙 영역에 메모리 반환을 요청하는 함수 호출 후 취약점이 발생되지 않은 경우의 힙 영역 메모리 관리 방법을 설명하기 위한 도면이다.
도 14는 본 발명의 또 다른 실시예에 따른 힙 영역에 메모리 반환을 요청하는 함수 호출 후 취약점이 발생된 경우의 힙 영역 메모리 관리 방법을 설명하기 위한 도면이다.
도 15는 본 발명의 또 다른 실시예에 따른 힙 영역 메모리 관리 장치의 하드웨어 구성도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
이하, 도면들을 참조하여 본 발명의 몇몇 실시예들을 설명한다.
도 1을 참조하여 종래 힙 영역의 메모리 관리 방법에 대하여 상세히 설명한다.
힙 영역의 메모리 할당 요청에 따라 힙 영역에 생성된 복수개의 메모리 블록(10, 20, 30)은 사용자가 직접 메모리 관리를 해주어야 한다. 이에 따라 사용자에 의해 힙 영역의 메모리 관리가 완전하게 이루어 지지 않은 경우, 상기 힙 영역에서 다양한 취약점이 발생될 수 있다.
따라서, 종래에는 힙 영역에서 발생하는 취약점을 탐지하기 위해 별도의 테이블(40)로 힙 영역에 존재하는 복수개의 메모리 블록(10, 20, 30)을 관리하였다. 하지만, 종래 기술과 같이 힙 영역을 관리하기 위한 별도의 메모리를 추가로 사용함으로써 공간 복잡도(space complexity)가 좋지 못했고, 별도의 자료구조를 이용함으로써 상기 자료구조의 알고리즘에 힙 영역의 취약점 탐지의 시간 복잡도(time complexity)가 종속적일 수 밖에 없다는 문제점이 존재하였다.
예를 들어 도 1에서는 힙 영역에 존재하는 3개의 메모리 블록(10, 20, 30)을 관리하기 위하여 별도의 테이블(40)을 이용하는데 이경우 힙 영역의 특정 메모리에서의 취약점 발생 여부 탐지에 대한 공간 복잡도 및 시간 복잡도는 O(n)을 가진다. 이에 따라 본 발명의 몇몇 실시예에 따라 더 효율적으로 힙 영역의 메모리를 관리할 수 있는 방법을 제시한다.
이하, 도 2의 순서도를 이용하여 본 발명의 일 실시예에 따른 힙 영역의 메모리 관리 방법에 대해 설명한다.
단계 S101에서 힙 영역의 메모리 할당 요청이 수신될 수 있다. 본 발명의 몇몇 실시예에 따라 다양한 함수에 의해 상기 힙 영역의 메모리 할당 요청이 이루어 질 수 있다.
단계 S103에서 힙 영역에 메모리를 할당할 수 있는지 여부가 확인 될 수 있다.
단계 S105에서 힙 영역에 메모리 할당이 가능한 경우, 상기 단계 S101에서 요청받은 메모리 할당에 응답하여 메모리 블록을 생성할 수 있다. 상기 메모리 블록은 힙 영역에 저장하고자 한 데이터가 저장된 데이터 블록을 포함할 수 있다.
단계 S107에서 상기 메모리 블록은 상기 데이터 블록에서 발생하는 취약점을 방지하기 위한 가드 블록을 더 포함하도록 생성될 수 있다.
단계 S109에서 다음에 요청되는 힙 영역의 메모리 할당에 의해 생성될 메모리 블록의 주소값을 가리키는 포인터가 저장되는 포인터블록이 생성될 수 있다.
이하 도 3을 이용하여 도 2의 단계 S107에 대하여 상세히 설명한다.
단계 S102에서 기 지정된 크기를 갖는 버퍼 블록이 생성된다. 버퍼 블록은 데이터 블록과 인접한 곳에 위치하여 데이터 블록에서 발생하는 데이터의 오버 플로우를 일정 정도 허용해 주는 역할을 한다. 즉, 버퍼 블록의 크기에 따라 힙 영역의 메모리 블록에서 취약점이 발생하였음이 감지될 수 있는 민감도를 조절될 수 있다. 예를 들어 힙 영역의 메모리 영역에서 조금의 데이터 오버 플로우도 허용할 수 없는 경우 버퍼 블록의 크기를 작거나 없앨 수 있다.
단계 S104에서 힙 영역의 메모리 반환 여부를 확인할 수 있는 정보를 가드블록에 포함할 수 있다. 예를 들어 Boolean 타입을 갖는 is_free 라는 이름의 변수를 두어 메모리 블록이 반환된 경우 TRUE값을 갖고, 메모리 블록이 반환되기 전인 경우 FALSE값을 갖도록 할 수 있다. 이와 같이 메모리 블록 내에서 해당 메모리에 대한 정보를 관리함으로써 종래 별도의 테이블에서 메모리 할당 여부를 관리함으로써 갖는 비효율적인 시간 복잡도와 공간 복잡도를 개선할 수 있다. 이 경우 종래 O(n)이었던 힙 영역의 메모리 관리에 대한 시간 복잡도와 공간 복잡도를 O(1)로 개선할 수 있다.
단계 S106에서 해당 데이터가 손상되거나 변형되면 메모리 블록에서 취약점이 발생한 것으로 판단하는 기준인 마킹 넘버를 포함하는 가드블록이 생성될 수 있다. 상기 마킹 넘버는 기 지정된 숫자로 예를 들어 16진수인 0x00C0FFEE일 수 있으나 이에 한하지 않는다.
이하 도 4를 이용하여 효율적인 힙 영역 메모리 관리가 가능한 힙 영역의 메모리 아키텍처를 설명한다.
본 발명의 몇몇 실시예에 따른 메모리 블록(100, 101, 102)는 힙 영역에 저장하고자 한 데이터가 저장된 데이터블록, 메모리 블록의 취약점을 방지할 수 있는 가드 블록 및 다음 생성되는 메모리 블록의 주소값을 가리키는 포인터를 포함하는 포인터 블록을 포함할 수 있다.
예를 들어, 가장 먼저 생성된 헤드 블록(100)의 포인터 블록은 그 다음 생성된 메모리 블록(101)을 가리킬 수 있고, 마지막 블록(102)의 포인터 블록은 NULL값을 포함할 수 있다. 이는 일반적인 리스트 형태로 관리되므로 통상의 기술자가 변형할 수 있는 다양한 리스트 형태(예를 들어 양방향 리스트, 원형 리스트, 양방향 원형 리스트)로 변형되어 관리될 수 있음에 유의한다.
도 5를 이용하여 가드 블록의 구조에 대하여 상세히 설명한다. 가드 블록은 취약점 발생 여부를 판단하는 기준이 되는 마킹 넘버를 포함하고 몇몇 실시예에 따라 임의로 지정된 크기를 갖는 버퍼 블록, 메모리 블록의 반환 여부에 대한 정보(예를 들어 Boolean 형태의 is_free 변수)를 더 포함할 수 있다.
가드 블록은 본 발명의 몇몇 실시예에 따라 데이터가 저장된 데이터 블록 바로 아래에 버퍼 블록이 위치할 수 있고, 버퍼 블록 아래에 마킹 넘버가 위치할 수 있다. 몇몇 실시예에 따라 버퍼 블록과 마킹 넘버 사이에 메모리 반환 여부에 대한 정보가 저장될 수 있으나 이에 한하지 않고 메모리 블록 아키텍처내의 다른 위치에 존재할 수 있다.
이와 같은 구조를 가짐으로써 데이터 블록에서 발생하는 취약점을 감지하기 위한 민감도를 버퍼 블록의 크기를 이용해 조절할 수 있고, 버퍼 블록 아래에 존재하는 마킹 넘버를 기준으로 취약점의 발생 여부가 판단될 수 있다.
예를 들어 도 6을 이용하여 버퍼 블록의 크기에 따라 취약점 발생 여부 판단이 상이해지는 경우를 상세히 설명한다.
데이터 블록의 크기가 매우 작아 "hello hello world"의 데이터가 모두 저장될 수 없어 "hello hello w"의 문자열만 데이터 블록에 저장된 경우, 나머지 "orld"문자열은 데이터 블록을 벗어나 저장된다. 충분한 크기의 버퍼 블록을 포함하는 힙 영역의 메모리 블록(109)의 경우 문자열"orld"가 버퍼 블록에 입력됨으로써 마킹 넘버를 손상시키지 않는다. 이 경우 해당 메모리 블록(109)은 할당된 데이터 블록보다 큰 데이터가 입력되었음에도 버퍼 오버 플로우가 발생되지 않을 수 있다.
반면, 버퍼 블록의 크기가 0인 경우, 해당 메모리 블록은 버퍼 오버 플로우가 발생될 수 있다. 따라서 본 발명의 몇몇 실시예에 따르면 메모리 블록에 데이터 블록보다 큰 크기의 데이터가 입력되는 경우, 상기 데이터를 메모리블록에 저장하지 않고 상기 데이터를 입력하는 명령을 포함하는 함수를 강제로 종료할 수 있다. 이를 통해 버퍼 오버 플로우에 의한 취약점 발생이 사전에 예방될 수 있다.
이하 도 7을 이용하여 마킹 넘버의 위치가 정해지는 방법에 대하여 설명한다.
본 발명의 몇몇 실시예에 따른 마킹 넘버는 데이터 블록의 주소값에 버퍼 블록의 크기를 더한 값의 0xFF 자리를 올림한 주소값을 갖는 위치에 저장될 수 있다. 예를 들어 메모리 블록의 데이터 블록의 주소(110)가 0x09A12341 이고 버퍼 블록의 크기가 4인 경우, 마킹 넘버는 0x09A12345의 0xFF 자리를 올림(112)한 0x09A12400의 주소(111)에 생성될 수 있다. 이와 같이 마킹 넘버의 위치가 지정됨으로써 0x09A12345의 주소값과 0x09A12400의 주소값 사이에 마킹 넘버가 저장될 수 있고 본 발명의 몇몇 실시예에 따라 메모리 블록의 반환 여부에 대한 정보도 저장될 수 있다. 또한, 다음 생성되는 메모리 블록의 주소값을 가리키는 포인터가 메모리 블록을 맨 끝에 생성될 수 있다. 다만 본 발명은 이에 한하지 않고 본 발명의 힙 영역 메모리 아키텍처는 본 발명의 동일한 효과를 얻기 위해 통상의 기술자가 변형 및 추가할 수 있는 아키텍처를 포함한다.
본 발명은 몇몇 실시예에 따라 지정된 함수가 호출된 경우에 한하여 힙 영역의 메모리 블록에서 취약점이 발생하였는지 여부를 사후적으로 탐지할 수 있다. 이를 통해 실시간으로 모든 메모리 블록을 탐지하는 방법에 비해 효율적으로 컴퓨팅 자원을 이용할 수 있다.
도 8을 이용하여 지정된 함수가 호출된 경우 힙 영역의 메모리 블록의 취약점 발생 여부를 탐지하는 방법에 대해 상세히 설명한다.
단계 S110에서 지정된 함수가 호출된 경우, 상기 호출에 응답하여 힙 영역의 취약점 발생 여부 탐지가 수행될 수 있다.
상기 지정된 함수는 예를 들어 memcpy, memmove, strcpy, strncpy ,stpcpy ,stpncpy ,wcscpy ,wcsncpy ,wcpcpy ,wcpncpy ,strcat ,strncat ,wcscat ,wcsncat ,sprint ,snprintf ,vsprintf ,vsnprintf ,fprintf ,vprintf ,vfprintf ,gets ,fgets ,fread, read, readdir, readlink, readv, realpath, malloc ,calloc 및 free 함수 중 어느 하나 일 수 있다. 이에 한정되지 않고 힙 영역의 메모리를 이용하는 함수의 호출이 있는 경우 힙 영역의 메모리 블록에 대한 취약점 발생 여부가 탐지될 수 있다.
또한 이미 할당된 메모리를 해제하는 인스트럭션을 포함하는 함수의 경우 상기 함수의 호출에 응답하여 이미 해제된 힙 영역의 메모리를 한번 더 해제함으로써 발생하는 취약점 발생 여부가 탐지될 수 있다. 이와 같은 더블 프리 버그("Double Free Bug")는 가드 블록에 존재하는 "is_free"변수를 확인하여 탐지해낼 수 있다.
단계 S111에서 호출된 함수에서 사용하는 힙 영역의 메모리 블록을 접근한다. 종래 기술과 달리 힙 영역의 메모리 블록에 대한 정보를 접근하기 위한 별도의 메모리를 더 사용하지 않고 힙 영역의 메모리 블록 내부에 상기 정보를 포함함으로써 메모리 블록에 대한 정보를 빠르게 얻을 수 있다.
단계 S112에서 해당 메모리 블록의 마킹 넘버가 초기값과 달라졌는지 여부를 확인하여 메모리 블록의 취약점 발생 여부가 판단될 수 있다. 본 발명의 몇몇 실시예에 따라 수정된 마킹 넘버의 비트 수에 따라 상기 취약점 발생 여부 판단이 달라질 수 있다. 상세한 설명은 이하 관련된 도면에서 후술한다.
단계 S113에서 해당 메모리 블록이 반환되었는지 여부와 관련된 정보를 이용하여 해당 메모리 블록의 취약점 발생 여부가 판단될 수 있다. 예를 들어 힙 영역의 메모리 할당을 요청하는 함수 호출 후 해당 메모리 블록에 접근한 경우, 상기 정보 확인 결과 메모리 블록이 반환되었다고 표시된 경우 해당 메모리 블록은 취약점이 발생되었다고 판단될 수 있다.
단계 S115에서 지정된 함수 호출 결과 상기 함수가 이용하는 메모리 블록에서 취약점이 발생될 것으로 판단된 경우, 상기 지정된 함수를 호출하는 인스트럭션을 포함하는 프로그램에 취약점으로 인한 오류가 발생되지 않도록 상기 프로그램을 안전하게 종료시킬 수 있다. 상기 함수를 종료시키는 방법은 예를 들어 상기 함수의 반환 전 exit()함수를 호출하는 코드를 삽입하는 방법일 수 있으나, 함수를 종료시키는 방법은 이에 한하지 않는다. 또한 본 발명의 다른 실시예에 따라 상기 함수를 종료시키지 않고 별도의 안전 함수를 호출할 수도 있다.
이하 도 9 내지 도 10을 이용하여 힙 영역에 데이터를 쓰는 인스트럭션(write instruction)을 포함하는 함수에 의해 생성된 힙 영역의 메모리 관리 방법에 대하여 설명한다.
힙 영역의 메모리에 데이터를 쓰는 인스트럭션을 포함하는 함수의 경우, 상기 함수 호출 후 마킹 넘버가 변경된 경우에 한하여 상기 메모리 블록에 버퍼 오버 플로우가 발생된 것으로 판단될 수 있다. 상기 마킹 넘버가 변경된 경우는, 상기 함수에서 사용한 데이터가 힙 영역의 데이터 블록을 넘어, 상기 마킹 넘버가 저장된 메모리 구간까지 입력된 것이기 때문이다.
예를 들어 도 9에서 str을 힙 영역의 메모리 buffer 에 저장하는 프로그램(201)이 동작하는 경우, 힙 영역의 메모리 블록(103)에 포함된 마킹 넘버가 상기 마킹 넘버의 초기값인 0x00C0FFEE과 동일한 경우 해당 메모리 블록(103)은 버퍼 오버 플로우가 발생되지 않은 것으로 판단될 수 있다.
하지만, 도 10에서 힙 영역의 데이터 블록의 크기를 초과하는 데이터가 힙 영역의 메모리 블록(104a)에 입력되는 프로그램(202)이 동작하는 경우 마킹 넘버가 변형될 수 있다. 예를 들어 "00000000000000..."의 문자열이 힙 영역의 메모리 블록에 입력되고 상기 문자열의 크기가 데이터 블록 및 버퍼 블록의 크기를 초과하는 경우 마킹 넘버(121)가 변형될 수 있다.
예를 들어 마킹 넘버의 마지막 2bit 에 상기 문자열이 입력되는 경우, 초기값이 0x00C0FFEE인 마킹 넘버는 0x00C0FFEC로 변형(122)될 수 있다. 따라서 변형된 마킹 넘버가 감지된 경우 해당 메모리 블록(104b)은 버퍼 오버 플로우가 발생된 것으로 판단될 수 있다.
또한 버퍼 오버 플로우가 발생한 경우 해당 메모리 블록의 반환 여부에 대한 정보가 변형될 수 있고, 본 발명의 몇몇 실시예에 따라 마킹 넘버와 상기 메모리 블록의 반환 여부에 대한 정보를 모두 고려하여 버퍼 오버 플로우의 발생 여부가 판단될 수도 있다.
이하 도 11 내지 도 12를 이용하여 힙 영역에 메모리 할당을 요청하는 인스트럭션(memory allocation instruction)을 포함하는 함수에 의해 생성된 힙 영역의 메모리 관리 방법에 대해 설명한다.
힙 영역의 메모리 할당 요청을 하는 인스트럭션을 포함하는 함수의 경우, 상기 함수 호출 후 해당 메모리 블록의 마킹 넘버 및 메모리 반환 여부에 대한 정보를 이용하여 상기 메모리 블록의 버퍼 오버 플로우 여부가 판단될 수 있다.
예를 들어 도 11에서 int 사이즈만큼의 메모리 할당을 요청하는 malloc 함수가 포함된 프로그램(203)이 동작하는 경우, 할당된 메모리 블록(105)의 반환 여부가 FALSE 이고 마킹 넘버가 초기값과 동일한 경우 해당 메모리 블록(105)은 취약점이 발생되지 않은 것으로 판단될 수 있다.
하지만 도 12에서 쓰레기 값이 저장된 힙 영역의 메모리가 할당된 경우, 할당된 메모리 블록(106a)에는 쓰레기 값이 여전히 존재할 수 있다. 예를 들어 "1111111111..."의 값을 갖는 쓰레기 값의 크기가 데이터 블록 및 버퍼 블록의 크기를 초과하는 경우 메모리 반환 여부에 대한 정보 및 마킹 넘버(123)가 변형(124)될 수 있다.
예를 들어 마킹 넘버의 마지막 1bit에 상기 쓰레기 값이 입력되는 경우, 초기 값이 0x00C0FFEE인 마킹 넘버를 0x00C0FFEF로 변형(124)될 수 있다. 따라서 변형된 마킹 넘버가 감지된 경우 해당 메모리 블록(106)은 버퍼 오버 플로우가 발생된 것으로 판단될 수 있다.
또한 취약점이 발생한 경우 해당 메모리 블록의 반환 여부에 대한 정보가 변형될 수 있고, 메모리 할당 함수가 호출되었음에도 불구하고 메모리 블록이 반환된 것으로 표시된 경우도 본 발명의 몇몇 실시예에 따라 해당 메모리 블록은 취약점이 발생된 것으로 판단될 수 있다.
이하 도 13 내지 도 14을 이용하여 힙 영역의 메모리 반환을 요청하는 인스트럭션(return instruction)을 포함하는 함수에 의해 생성된 힙 영역의 메모리 관리 방법에 대해 설명한다.
힙 영역의 메모리 반환 요청을 하는 인스트럭션을 포함하는 함수의 경우, 상기 함수 호출 후 해당 메모리 블록의 마킹 넘버 및 메모리 반환 여부에 대한 정보를 이용하여 상기 메모리 블록의 취약점 발생 여부가 판단될 수 있다.
예를 들어 도 13에서 할당된 메모리를 반환하는 함수가 포함된 프로그램(205)이 동작하는 경우, 반환된 메모리 블록(107)의 반환 여부가 TRUE이고 마킹 넘버가 초기값과 동일한 경우 해당 메모리 블록(107)은 취약점이 발생되지 않은 것으로 판단될 수 있다.
하지만, 도 14에서 취약점 발생으로 메모리 반환이 제대로 이루어 지지 않은 경우 해당 메모리 블록(108a)의 반환 여부에 대한 정보 및 마킹 넘버(125)가 변형(126)될 수 있다. 예를 들어 데이터 블록에서 취약점이 발생된 경우 본 발명의 몇몇 실시예에 따라 마킹 넘버를 초기값과 비교하거나 메모리 반환 여부에 대한 정보의 변형 여부를 이용하여 해당 메모리 블록의 취약점 발생 여부가 탐지될 수 있다.
또한 본 발명의 다른 실시예에 따르면 마킹 넘버가 수정되는 개수에 따라 취약점 발생 여부가 판단될 수 있다. 예를 들어 취약점 발생에 대한 판단 기준이 엄격한 경우 마킹 넘버의 비트중 1개만 상기 마킹 넘버의 초기값과 다르더라도 해당 메모리 블록에 취약점이 발생되었다고 판단될 수 있다. 하지만, 취약점의 발생에 대한 판단 기준이 엄격하지 않은 경우 마킹 넘버가 초기 값과 다른 비트가 존재하더라도 지정된 기준의 비트수보다 적다면 해당 메모리 블록은 취약점이 발생된 것으로 판단되지 않을 수 있다.
예를 들어 도 14에서 마킹 넘버의 비트가 초기값과 다르더라도 11개 이상의 마킹 넘버의 비트가 수정된 경우만 취약점이 발생된 것으로 판단한다는 정책에서는 해당 메모리 블록(108b)은 취약점이 발생된 것으로 판단되지 않을 수 있다. 따라서 사용자는 다양한 정책에 따라 취약점의 발생을 일정 기준 하에서 허용할 수 있다.
또한, 메모리 블록의 반환 여부에 대한 정보인 is_free 변수를 이용하여 이미 할당된 메모리 블록에 대해 다시 메모리 블록 해제를 시도하는 더블 프리(Double Free) 취약점의 발생 여부가 검출될 수 있다.
예를 들어 이미 메모리 블록이 해제되어 is_free 가 true 값인 상태에서 한번 더 is_free 변수에 ture 값을 저장하려는 인스트럭션이 수행될 것으로 예정된 경우, 본 발명의 일 실시예에 따라 상기 인스트럭션을 수행하지 않고 상기 함수가 반환(return)될 수 있다.
도 15에 도시된 바와 같이, 본 발명의 또 다른 실시예에 따른 힙 영역 메모리 관리 방법을 수행하는 컴퓨팅 장치(300)는 프로세서(310), 메모리(320), 스토리지(340), 네트워크 인터페이스(330)를 포함하고 몇몇 실시예에서 시스템 버스를 더 포함할 수 있다.
메모리(320)에 로드 되어 저장되는 하나 이상의 인스트럭션(321, 322)은 프로세서(310)를 통하여 실행된다. 본 실시예에 따른 힙 영역 메모리 관리 방법을 수행하는 컴퓨팅 장치(300)는 별도의 설명이 없더라도 도 1 내지 도 14을 참조하여 설명한 힙 영역 메모리 관리 방법을 수행할 수 있는 점을 유의한다.
네트워크 인터페이스(330)는 외부 서버로부터 힙 영역 사용 함수 목록(301)을 수신할 수 있다. 상기 수신된 정보는 스토리지(340)에 저장되도록 할 수 있다.
스토리지(340)는 상기 힙 영역 사용 함수 목록(301)을 저장할 수 있다.
상기 하나 이상의 인스트럭션은, 힙 영역의 메모리 블록을 생성하는 인스트럭션(321) 및 힙 영역 사용 함수가 호출된 경우, 힙 영역의 메모리 블록에 포함되는 마킹 넘버를 검사하는 인스트럭션(322)을 포함할 수 있다.
일 실시예에서, 메모리 블록 생성 인스트럭션(321)은 데이터가 저장되는 데이터 블록, 메모리 블록의 취약점 발생 여부를 판단하기 위해 사용하는 가드 블록 및 다음 메모리 블록의 시작 주소값을 가리키는 포인터 블록을 포함하는 아키텍처로 구성된 메모리 블록을 생성할 수 있다.
일 실시예에서, 마킹 넘버 검사 인스트럭션(322)은 힙 영역 사용 함수 목록(301)에 저장된 함수가 호출된 경우, 가드 블록에 포함된 마킹 넘버를 초기값과 비교하여 변형된 경우 해당 메모리 블록에 취약점이 발생된 것으로 판단할 수 있다.
지금까지 설명된 본 발명의 실시예에 따른 방법들은 컴퓨터가 읽을 수 있는 코드로 구현된 컴퓨터프로그램의 실행에 의하여 수행될 수 있다. 상기 컴퓨터프로그램은 인터넷 등의 네트워크를 통하여 제1 컴퓨팅 장치로부터 제2 컴퓨팅 장치에 전송되어 상기 제2 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 제2 컴퓨팅 장치에서 사용될 수 있다. 상기 제1 컴퓨팅 장치 및 상기 제2 컴퓨팅 장치는, 서버 장치, 클라우드 서비스를 위한 서버 풀에 속한 물리 서버, 데스크탑 피씨와 같은 고정식 컴퓨팅 장치를 모두 포함한다.
상기 컴퓨터프로그램은 DVD-ROM, 플래시 메모리 장치 등의 기록매체에 저장된 것일 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다.

Claims (15)

  1. 컴퓨팅장치에 의해 수행되는 방법에 있어서,
    힙(Heap) 영역 메모리 할당 요청을 수신하는 단계; 및
    상기 메모리 할당 요청에 응답하여 힙 영역에 저장하고자 하는 데이터가 저장된 데이터 블록, 상기 데이터 블록에서 발생되는 취약점 탐지에 이용되는 가드 블록 및 제1 메모리 블록과 상이한 제2 메모리 블록의 시작주소를 가리키는 포인터가 저장된 포인터 블록을 포함하는 상기 제1 메모리 블록을 생성하는 단계를 포함하되, 상기 가드 블록은 상기 데이터 블록 및 상기 포인터 블록 사이에 위치한 것이고,
    상기 제1 메모리 블록을 생성하는 단계는,
    상기 제1 메모리 블록의 메모리 반환 여부와 관련된 정보가 상기 가드 블록에 포함되도록 상기 제1 메모리 블록을 생성하는 단계를 포함하는,
    힙 영역의 메모리 관리 방법.
  2. 제1 항에 있어서,
    상기 제1 메모리 블록을 생성하는 단계는,
    상기 데이터 블록의 크기 정보를 포함하는 상기 메모리 할당 요청에 응답하여, 상기 제1 메모리 블록의 메모리를 할당하여 상기 제1 메모리 블록을 생성하는 단계를 포함하되, 상기 할당된 제1 메모리 블록의 크기는 상기 데이터 블록의 크기 및 상기 가드 블록의 크기를 포함하고, 상기 가드 블록은 상기 제1 메모리 블록의 취약점 발생을 확인하기 위한 마킹 넘버를 포함하는 것인,
    힙 영역의 메모리 관리 방법.
  3. 제2 항에 있어서,
    상기 제1 메모리 블록을 생성하는 단계는,
    상기 마킹 넘버와 상기 데이터 블록 사이에 위치하도록 지정된 크기의 버퍼 블록을 더 포함하는 상기 가드 블록을 포함하는 상기 제1 메모리 블록을 생성하는 단계를 포함하되,
    상기 버퍼 블록은 상기 데이터 블록의 주소값 직후에 위치하는 것인,
    힙 영역의 메모리 관리 방법.
  4. 제3 항에 있어서,
    상기 제1 메모리 블록을 생성하는 단계는,
    상기 제1 메모리 블록의 시작주소에 상기 버퍼 블록의 크기를 더한 제1 주소값의 지정된 자리를 올림하여 제2 주소값을 생성하는 단계;
    상기 제2 주소값에 위치하는 상기 마킹 넘버를 포함하는 상기 가드 블록을 포함하는 상기 제1 메모리 블록을 생성하는 단계를 포함하는,
    힙 영역의 메모리 관리 방법.
  5. 제4 항에 있어서,
    상기 제2 주소값을 생성하는 단계는,
    상기 제1 주소값의 0xFF 자리를 올림하여 제2 주소값을 생성하는 단계를 포함하는,
    힙 영역의 메모리 관리 방법.
  6. 제2 항에 있어서,
    상기 제1 메모리 블록을 생성하는 단계는,
    지정된 함수가 호출되는 것에 응답하여 상기 마킹 넘버를 이용하여 상기 제1 메모리 블록의 취약점 발생 여부를 판단하는 단계를 더 포함하는,
    힙 영역의 메모리 관리 방법.
  7. 제6 항에 있어서,
    상기 제1 메모리 블록의 취약점 발생 여부를 판단하는 단계는,
    상기 호출된 함수가 힙 영역의 메모리에 데이터를 쓰는 인스트럭션(write instruction)을 포함하는 함수인 경우, 상기 함수 호출 후 상기 마킹 넘버가 변경된 경우에 한하여 상기 제1 메모리 블록에 취약점이 발생된 것으로 판단하는 단계를 포함하는,
    힙 영역의 메모리 관리 방법.
  8. 삭제
  9. 제6 항에 있어서,
    상기 제1 메모리 블록의 취약점 발생 여부를 판단하는 단계는,
    상기 호출된 함수가 힙 영역의 메모리 할당을 요청하는 인스트럭션을 포함하는 함수인 경우, 상기 함수 호출 후 상기 메모리 반환 여부와 관련된 정보가 변경되거나 상기 마킹 넘버가 변경된 경우 상기 제1 메모리 블록에 취약점이 발생된 것으로 판단하는 단계를 포함하는,
    힙 영역의 메모리 관리 방법.
  10. 제6 항에 있어서,
    상기 제1 메모리 블록의 취약점 발생 여부를 판단하는 단계는,
    상기 호출된 함수가 힙 영역의 메모리를 반환하는 인스트럭션을 포함하는 함수인 경우, 상기 함수 호출 후 상기 메모리 반환 여부와 관련된 정보가 변경되거나 상기 마킹 넘버가 변경된 경우 상기 제1 메모리 블록에 취약점이 발생된 것으로 판단하는 단계를 포함하는,
    힙 영역의 메모리 관리 방법.
  11. 제6 항에 있어서,
    상기 제1 메모리 블록의 취약점 발생 여부를 판단하는 단계는,
    상기 호출된 함수가 힙 영역의 메모리를 반환하는 인스트럭션을 포함하는 함수인 경우, 상기 함수 호출 후 상기 메모리 반환 여부와 관련된 정보만 이용하여 상기 제1 메모리 블록에 취약점이 발생된 것으로 판단하는 단계를 포함하는,
    힙 영역의 메모리 관리 방법.
  12. 제6 항에 있어서,
    상기 마킹 넘버를 이용하여 상기 제1 메모리 블록의 취약점 발생 여부를 판단하는 단계는,
    상기 마킹 넘버가 지정된 비트 이상 수정된 경우에 한하여 상기 제1 메모리 블록에 취약점이 발생된 것으로 판단하는 단계를 포함하는,
    힙 영역의 메모리 관리 방법.
  13. 제6 항에 있어서,
    상기 마킹 넘버를 이용하여 상기 제1 메모리 블록의 취약점 발생 여부를 판단하는 단계는,
    상기 제1 메모리 블록에 취약점이 발생된 것으로 판단된 경우, 상기 호출된 함수를 종료하는 단계를 포함하는,
    힙 영역의 메모리 관리 방법.
  14. 제1 항에 있어서,
    상기 제1 메모리 블록을 생성하는 단계는,
    컴파일 이후 실행 단계에서 상기 제1 메모리 블록을 생성하는 단계를 포함하는,
    힙 영역의 메모리 관리 방법.
  15. 힙 영역의 메모리 관리 프로그램이 로드 되는 메모리; 및
    상기 메모리에 로드된 힙 영역의 메모리 관리 프로그램을 실행하는 프로세서를 포함하되,
    힙 영역의 메모리 관리 프로그램은,
    힙(Heap) 영역 메모리 할당 요청에 응답하여, 힙 영역에 저장하고자 하는 데이터가 저장된 데이터 블록, 상기 데이터 블록의 취약점 탐지에 이용되는 가드 블록 및 제1 메모리 블록과 상이한 제2 메모리 블록의 시작주소를 가리키는 포인터가 저장된 포인터 블록을 포함하는 상기 제1 메모리 블록을 생성하는 인스트럭션(instruction)을 포함하되, 상기 가드 블록은 상기 데이터 블록 및 상기 포인터 블록 사이에 위치한 것이고,
    상기 제1 메모리 블록을 생성하는 인스트럭션은,
    상기 제1 메모리 블록의 메모리 반환 여부와 관련된 정보가 상기 가드 블록에 포함되도록 상기 제1 메모리 블록을 생성하는 인스트럭션을 포함하는,
    컴퓨팅장치.
KR1020190031547A 2019-03-20 2019-03-20 취약점을 효율적으로 탐지할 수 있는 아키텍처로 구성된 힙 영역 메모리 관리 방법 및 그 장치 KR102324950B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190031547A KR102324950B1 (ko) 2019-03-20 2019-03-20 취약점을 효율적으로 탐지할 수 있는 아키텍처로 구성된 힙 영역 메모리 관리 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190031547A KR102324950B1 (ko) 2019-03-20 2019-03-20 취약점을 효율적으로 탐지할 수 있는 아키텍처로 구성된 힙 영역 메모리 관리 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20200111909A KR20200111909A (ko) 2020-10-05
KR102324950B1 true KR102324950B1 (ko) 2021-11-11

Family

ID=72808924

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190031547A KR102324950B1 (ko) 2019-03-20 2019-03-20 취약점을 효율적으로 탐지할 수 있는 아키텍처로 구성된 힙 영역 메모리 관리 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR102324950B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230096292A (ko) 2021-12-23 2023-06-30 한국전자통신연구원 동적 메모리 관리 방법 및 장치, 컴퓨터 판독 가능한 기록 매체
KR20230098951A (ko) 2021-12-27 2023-07-04 한국전자통신연구원 가상 주소공간 기반의 섀도우 맵핑을 이용한 프로세스 메모리 관리 방법 및 이를 이용한 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009259078A (ja) * 2008-04-18 2009-11-05 Nippon Telegr & Teleph Corp <Ntt> バッファオーバーフロー検出方法、バッファオーバーフロー検出プログラム、およびバッファオーバーフロー検出装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6909285B2 (en) 2002-09-11 2005-06-21 Visteon Global Technologies, Inc. Method for detecting failure of a relay
KR20180136237A (ko) * 2017-06-14 2018-12-24 주식회사 만도 메모리 오류 검출 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009259078A (ja) * 2008-04-18 2009-11-05 Nippon Telegr & Teleph Corp <Ntt> バッファオーバーフロー検出方法、バッファオーバーフロー検出プログラム、およびバッファオーバーフロー検出装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
힙 손상 탐지, https://nightohl.tistory.com/entry/힙손상탐지2 힙 오버런 언더런(2019.03.13.)

Also Published As

Publication number Publication date
KR20200111909A (ko) 2020-10-05

Similar Documents

Publication Publication Date Title
US7631249B2 (en) Dynamically determining a buffer-stack overrun
RU2514140C1 (ru) Система и способ увеличения качества обнаружений вредоносных объектов с использованием правил и приоритетов
CN110225029B (zh) 注入攻击检测方法、装置、服务器及存储介质
US11132436B2 (en) FPGA cloud host development method and system
US8073673B2 (en) Emulated memory management
US9069970B2 (en) System and method for protection from buffer overflow vulnerability due to placement new constructs in C++
US20100050257A1 (en) Confirmation method of api by the information at call-stack
KR101890125B1 (ko) 메모리 힙 영역 공격을 방어하기 위한 메모리 정렬 랜덤화 방법
CN111416811A (zh) 越权漏洞检测方法、系统、设备及存储介质
US20170364679A1 (en) Instrumented versions of executable files
US20180267880A1 (en) Breakpoint insertion into kernel pages
US20150067279A1 (en) Data processing system and method for operating a data processing system
CN110325994B (zh) 增强软件应用的控制流完整性的设备和方法
CN104346148A (zh) 获取程序性能消耗信息的方法、装置及系统
US11443032B2 (en) Stack pivot exploit detection and mitigation
CN109388950B (zh) 确保系统配置的安全改变的系统和方法
CN110008758B (zh) 一种id获取方法、装置、电子设备及存储介质
JP6282217B2 (ja) 不正プログラム対策システムおよび不正プログラム対策方法
KR102324950B1 (ko) 취약점을 효율적으로 탐지할 수 있는 아키텍처로 구성된 힙 영역 메모리 관리 방법 및 그 장치
US7802089B2 (en) Analyzing interpretable code for harm potential
US10628188B2 (en) Disabling just-in-time translation for application functions
EP3692456B1 (en) Binary image stack cookie protection
CN112199391A (zh) 一种数据加锁检测方法、设备及计算机可读存储介质
CN108197041B (zh) 一种确定子进程的父进程的方法、设备及其存储介质
US9697018B2 (en) Synthesizing inputs to preserve functionality

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right