데이터 실행 방지

데이터 실행 방지(Data Execution Prevention, DEP)는 현대의 마이크로소프트 윈도우 운영 체제에 포함된 보안 기능이며, 실행 방지 메모리 영역의 실행 코드에서 응용 프로그램이나 서비스가 실행되지 못하게 막기 위해 고안된 것이다. 이를테면 버퍼 오버플로를 통한 코드를 저장하는 특정한 이용을 막을 수 있다.
DEP는 두 가지 모드로 실행된다.:
 CPU를 위한 하드웨어 강화 DEP: 메모리 페이지를 실행 불가능 상태로 표시한다.
 소프트웨어 강화 DEP: CPU가 하드웨어적으로 데이터 실행 방지를 지원하지 못하는 경우 이를 사용한다.
소프트웨어 강화 DEP는 데이터 페이지의 코드 실행을 막지는 못하지만, 다른 형태의 종류 (SEH 덮어쓰기)는 막을 수 있다.

DEP는 윈도우 XP 서비스팩 2에 도입되었으며 윈도우 XP 태블릿 PC 에디션 2005, 윈도우 서버 2003 서비스팩 1, 윈도우 비스타에 포함되어 있다. 나중에 나오는 운영 체제들은 이 기능을 여전히 지원하고 있다.

설정 방법

프로그램 예외 처리 
"데이터 실행 방지"의 예외 처리를 위해서는 다음과 같은 과정을 사용하여 구성할 수 있다.
윈도우 XP ~ 윈도우 2003의 경우: 제어판→시스템→고급→성능의 설정→데이터 실행 방지(DEP) 탭
윈도우 비스타 이상의 경우: 제어판→시스템→고급 시스템 설정→성능의 설정→데이터 실행 방지(DEP) 탭

정책 수준 설정 
정책 수준은 다음과 같이 나뉜다.
 OptIn: 윈도우 XP의 기본 구성값이다. 하드웨어 강화 DEP 기능이 있는 프로세서를 사용한다면, DEP는 기본적으로 사용된다.
 OptOut: 윈도우 2003 서비스팩 1의 기본 구성값이다. DEP에 대한 시스템 호환성 해결은 효력을 발휘하지 않는다.
 AlwaysOn: 모든 시스템에 DEP를 사용하는 설정값이다. 모든 과정은 언제나 DEP에 적용된다. DEP 보호에 예외 프로그램으로 지정된 목록이 있다 할지라도 이는 무시된다. DEP에 대한 시스템 호환성도 효력을 발휘하지 않는다.
 AlwaysOff: 어느 시스템에서도 DEP를 사용하지 않게 만드는 설정값이다.

윈도우 XP ~ 윈도우 2003 
 시작→실행에 들어가서 msconfig라고 입력한다.
 부팅 탭을 눌러 boot.ini 편집에 들어가서 /noexecute="정책 수준"을 지정한다. 정책 수준은 위에 나온 값 가운데 하나를 골라 넣으면 된다. (이를테면, 데이터 실행 방지를 완전히 끄려면 /noexecute=AlwaysOff)

윈도우 비스타 이상의 경우 
윈도우 비스타 이상에서는 boot.ini가 존재하지 않기 때문에 다음과 같은 과정을 사용하여 기능을 변경할 수 있다.
시작 단추를 누르고 모든 프로그램→보조 프로그램로 들어간다.
명령 프롬프트에서 마우스 오른쪽 단추를 누르고관리자 권한으로 실행을 누른다.
접근 권한을 물을 때 허용을 누른다.
다음과 같이 입력한다.
 bcdedit.exe /set {current} nx 정책 수준
여기서 정책 수준은 위에 나온 값 가운데 하나를 골라 넣으면 된다. (이를테면, 데이터 실행 방지를 완전히 끄려면 "bcdedit.exe /set {current} nx AlwaysOff")

참조

같이 보기 
 NX 비트
 실행 보호
 버퍼 오버플로
 힙 오버플로
 스택 버퍼 오버플로

외부 링크 
 MSKB 875352 — 윈도우 XP 서비스팩 2, 윈도우 XP 태블릿 PC 에디션 2005, 윈도우 서버 2003의 데이터 실행 방지에 대한 상세한 정보
 하드웨어 기반 DEP 보호 길라잡이 
 NXTEST
 SecurAble

윈도우 구성 요소