[컴] DEP Data Execution Protection 이란?



DEP

OS 가 가지고 있는 보안관련 특성이다. Mac Os X, iOS, MS Windows, Linux, Android 들에서 제공한다.

application 이나 service 들을 non-executable memory region(heap 이나 stack 같은 영역) 에서 나온 실행코드(execution code)로 부터 보호한다.

buffer overflow 를 통해서 code 를 저장하는 명확한 exploit(certain exploit) 을 막는데 도움을 준다.

대부분의 exploits 는 shellcode 가 실행되기까지 shellcode 를  heap 또는 stack 에 저장하기 때문에 DEP 는 exploit 이 제대로 shellcode 를 실행하는 것을 방해한다.[ref. 3]

DEP는 2004 에 Linux 에 도입되었다. Windows 는 Windows XP Service Pack 2 에서 도입하였고, Mac OS 는 x86 으로 넘어가면서 도입하였다.

DEP 는 2가지모드로 작동한다.
  1. hardware-enforced DEP
  2. software-enforced DEP

hardware-enforced DEP

hardware-enforced DEP 는 CPU 를 위한 것이다. CPU가 nonexecutable 이라고 memory page 들을 표시할 수 있다.( 인텔의 x86 CPU 가 지원한다.)(ref. 1 에서 보다 자세한 설명을 볼 수 있다.)

NX bit 또는 XD bit 을 이용해서 Hardware-enforced DEP 를 구현한다.
processor 의 이 기능을 사용하려면, processor 가 PAE(Physical Address Extension) 모드로 작동하고 있어야 하는데, Windows 에서는 자동으로 PAE 모드를 설정하기 때문에 괜찮다고 한다.[ref. 1]
Widows Vist DEP 는 memory 의 일정영역을 data 만 가지고 있는 영역으로 표시한다. NX or XD bit 을 제공하는 processor 는 이 부분을 non-executable 이라고 판단한다.
Vista 부터 Windows Task Manager(작업관리자) 에서 특정 process 가 DEP 를 사용하고 있는지 여부를 알 수 있다.
image
< 작업관리자, DEP >

software-enforced DEP

hardware 기능이 없는 CPU에 대한 제한된 방어를 제공한다.
software-enforced DEP 는 data pages 에서 코드가 실행되는 것(exectution of code)을 막지 않지만, 대신에 SEH overwirte 를 막아준다.

References

  1. http://support.microsoft.com/kb/875352
  2. http://en.wikipedia.org/wiki/Data_Execution_Prevention
  3. Gray Hat Python

댓글 없음:

댓글 쓰기