데이터 실행 방지(Data Execution Prevention, DEP)는 Windows에 내장된 시스템 수준의 보안 기능입니다. DEP의 주요 목적은 프로세스와 서비스를 지속적으로 모니터링하여, 메모리에서 정상적으로 실행되지 않는 프로그램을 자동으로 종료함으로써 악성 코드 공격으로부터 시스템을 보호하는 것입니다.
'실행 가능 공간 보 protection(executable space protection)'이라고도 불리는 이 기능은 하드웨어와 소프트웨어 기술의 결합으로 이루어져 있으며, 추가적인 시스템 메모리 검사를 수행해 악성 코드가 실행되지 않도록 차단합니다.

유해한 프로그램이 인증된 프로그램과 Windows 전용으로 예약된 특정 시스템 메모리 영역에서 코드를 실행하려고 시도하면, DEP는 해당 영역을 '실행 불가능(non-executable)'으로 표시하고 오류를 발생시킵니다.
이러한 과정을 통해 바이러스 및 각종 보안 위협으로부터 컴퓨터가 손상되는 것을 미리 방지할 수 있습니다. 다만 DEP가 백신 프로그램처럼 정상적인 소프트웨어와 충돌을 일으키는 경우도 있으며, 이럴 때는 특정 앱에 한해 DEP를 비활성화해야 할 수 있습니다.
Windows 10에서 데이터 실행 방지(DEP)의 작동 방식
DEP는 모든 악성 코드 공격을 완벽하게 막아주는 만능 방어책은 아닙니다. 보안 소프트웨어와 함께 사용하여 애플리케이션을 보호하는 또 하나의 도구라고 이해하는 것이 좋습니다.
대부분의 운영 체제에는 중요한 프로그램과 기능이 실행되는 예약된 메모리 영역이 존재합니다. 이 메모리 공간은 크기가 제한적이기 때문에, 잘못 작성된 코드나 악성 코드가 침입하면 과도한 공간을 차지하게 되어 '버퍼 오버플로우(buffer overflow)' 상황이 발생할 수 있습니다.
이런 상황이 벌어지면 접근 권한이 없는 사용자나 프로그램이 중요한 데이터에 접근할 위험이 생깁니다.

DEP는 시스템 메모리 영역에 로드가 허용되지 않는 실행 프로그램의 접근이나 실행을 차단하는 역할을 합니다. 의심스러운 코드가 로드되는 것을 감지하는 즉시 예외(exception)를 발생시켜 해당 코드가 실행되지 않도록 막습니다.
DEP의 단점은 Windows 서비스에 의존하는 오래된 비(非)마이크로소프트 프로그램을 오류로 판별할 수 있다는 점입니다. 하지만 시스템 설정에서 DEP를 비활성화하거나 예외 항목을 등록하면 이런 프로그램도 정상적으로 실행할 수 있습니다.
참고: 일부 DEP 오류는 시스템에 설치된 오래된 장치 드라이버로 인해 발생하기도 합니다.
Windows 10 데이터 실행 방지(DEP)의 두 가지 유형
DEP를 구현하는 방법에는 다음 두 가지가 있습니다.
- 하드웨어 기반 DEP
- 소프트웨어 기반 DEP
하드웨어 기반 DEP
하드웨어 기반 DEP는 메모리 영역에서 실행되는 의심스러운 코드를 '실행 불가능'으로 감지하고, 예외를 발생시켜 시스템 공격을 사전에 차단합니다. 단, 해당 영역에 명시적으로 실행 가능한 코드가 포함된 경우는 예외입니다.
하드웨어 기반 DEP는 프로세서 하드웨어에 의존하여 메모리에 적절한 속성 값을 표시함으로써, 해당 메모리 영역에서는 코드를 실행해서는 안 된다는 것을 알립니다.
하드웨어 기반 DEP를 사용하려면 다음 조건을 충족해야 합니다.

- 컴퓨터의 프로세서가 하드웨어 기반 DEP를 지원해야 합니다. 실제 DEP 하드웨어 구현 방식은 AMD, Intel 등 프로세서 아키텍처에 따라 다르지만, Windows와 호환되는 아키텍처는 DEP와도 호환됩니다.
- BIOS에서 하드웨어 기반 DEP를 활성화해야 합니다.
- 컴퓨터에 Service Pack 1이 설치된 Windows Server 2003 또는 Service Pack 2가 설치된 Windows XP 이상이 있어야 합니다.
- 컴퓨터의 프로그램에 대해 하드웨어 기반 DEP를 활성화해야 합니다. 32비트 프로그램에서는 설정에 따라 하드웨어 기반 DEP가 비활성화될 수 있지만, 64비트 버전의 Windows에서는 64비트 내장 프로그램에 대해 항상 활성화됩니다.
PC에 설치된 Windows 버전을 확실하지 않다면, 32비트인지 64비트인지 확인하는 방법을 먼저 살펴보시기 바랍니다.
소프트웨어 기반 DEP
소프트웨어 기반 DEP는 악성 코드가 Windows의 예외 처리 메커니즘을 악용하지 못하도록 막는 추가적인 DEP 보안 검사입니다.
이 유형의 DEP는 Windows XP 서비스 팩 2를 실행할 수 있는 모든 프로세서에서 작동하며, 프로세서의 하드웨어 기반 DEP 지원 여부와 관계없이 제한된 시스템 바이너리만 보호합니다.
Windows 10 PC에서 DEP 활성화 여부 확인하는 방법
다음 단계를 따라 PC 시스템의 DEP 상태를 확인할 수 있습니다.
- 제어판을 열고 시스템 및 보안을 선택합니다.

- 다음으로 시스템을 선택합니다.

- 검색 상자에 '고급 시스템 설정 보기'를 입력합니다.

- 시스템 설정 팝업 창에서 성능 섹션 아래의 설정을 선택합니다.

- 데이터 실행 방지 탭을 선택하여 DEP 설정을 엽니다.

- 현재 시스템의 DEP 상태와, 컴퓨터의 프로세서가 하드웨어 기반 DEP를 지원하는지 여부를 확인할 수 있습니다.

- 필요하다면 DEP에 예외를 추가할 수 있지만, 다른 대안이 없을 때만 진행하는 것이 좋습니다. 예외를 추가하려면 '선택한 프로그램 및 서비스를 제외한 모든 프로그램 및 서비스에 대해 DEP 사용'을 선택한 후 추가를 클릭합니다. 제외할 실행 파일을 선택하고, 변경 사항을 적용하기 위해 PC를 재시작합니다.

참고: 대부분의 충돌은 32비트 프로그램에서 발생하며, 64비트 프로그램은 DEP에서 제외할 수 없습니다.
Windows 10에서 DEP 활성화 또는 비활성화하는 방법
특정 애플리케이션을 Windows 10에서 사용하기 위해 DEP를 비활성화할 수 있습니다. 이 방법은 권장되지 않지만, 부득이한 경우 현재로서는 명령 프롬프트(명령줄)를 통해서만 가능합니다.
- 먼저 시작 버튼을 클릭하고 CMD를 입력해 명령 프롬프트 메뉴를 연 뒤, 관리자 권한으로 실행을 선택하여 승격된 명령 프롬프트를 엽니다.

- 명령 프롬프트 창에 다음 명령을 입력하고 Enter 키를 누릅니다: BCDEDIT /SET {CURRENT} NX ALWAYSOFF. 변경 사항은 컴퓨터를 재시작한 후 적용됩니다. 경우에 따라 이 명령으로 DEP를 비활성화하려면 BIOS 설정을 조정해야 할 수도 있습니다.

참고: 신뢰하는 프로그램에 대해 DEP를 끄고 싶다면, 먼저 해당 프로그램 배포사가 DEP 호환 버전이나 업데이트를 제공하는지 확인하세요. DEP 호환 버전이나 업데이트가 있다면 이를 설치하고 DEP를 활성화 상태로 유지하는 것이 좋습니다. 그렇지 않고 DEP를 비활성화하면 시스템이 공격에 노출되어, 피해가 다른 파일과 프로그램으로 확산될 위험이 있습니다.
- DEP를 다시 활성화하려면 관리자 권한 명령 프롬프트를 열고 다음 명령을 입력합니다: BCDEDIT /SET {CURRENT} NX ALWAYSON. 변경 사항을 적용하려면 PC를 재시작합니다.

DEP 보호 기능을 안전하게 활용하세요
데이터 실행 방지는 매우 유용한 기능이지만, 모든 소프트웨어와 하드웨어가 이를 완벽하게 지원하는 것은 아닙니다. 이로 인해 일부 Windows 프로세스가 DEP와 함께 작동할 때 충돌이 발생하면서 PC에서 특정 문제나 오류 메시지가 나타날 수 있습니다.
그럼에도 불구하고 DEP는 가장 기본적인 Windows 기반 시스템 보호 기능 중 하나입니다. 비활성화해야 할 명확한 이유가 없다면, DEP는 항상 기본값인 활성화 상태로 유지하고 신중하게 다루는 것이 바람직합니다.