맨위로가기

데이터 실행 방지

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

데이터 실행 방지(DEP)는 메모리 영역에서 코드 실행을 제한하여 버퍼 오버플로우 공격과 같은 보안 위협을 방지하는 기술이다. 하드웨어 DEP는 CPU의 NX 비트를 활용하며, 소프트웨어 DEP는 SafeSEH 기술을 사용한다. Windows 운영체제에서 DEP는 제어판 시스템 설정을 통해 설정할 수 있으며, OptIn, OptOut, AlwaysOn, AlwaysOff의 네 가지 정책 수준을 제공한다. DEP는 ASLR과 함께 사용될 때 더 효과적이며, JIT 컴파일러와 같은 기술에는 한계가 있을 수 있다. 오래된 소프트웨어와의 호환성 문제도 발생할 수 있으며, 특정 프로그램에 대해 DEP를 비활성화하거나, 코덱 업데이트 등을 통해 문제를 해결할 수 있다.

더 읽어볼만한 페이지

  • 윈도우 구성 요소 - 인터넷 익스플로러
    마이크로소프트가 개발한 웹 브라우저인 인터넷 익스플로러는 윈도우 운영 체제와의 통합으로 높은 시장 점유율을 유지했으나, 웹 표준 문제와 보안 취약점으로 비판받으며 2015년 엣지에 자리를 내주고 2022년 지원이 종료되었지만, 엣지의 IE 모드로 레거시 호환성을 유지하고 있다.
  • 윈도우 구성 요소 - 원격 데스크톱 서비스
    원격 데스크톱 서비스(RDS)는 네트워크를 통해 원격으로 컴퓨터의 데스크톱 환경에 접근할 수 있게 해주는 기술이며, 클라이언트 소프트웨어, 서버 구성 요소, 다양한 역할을 수행하는 구성 요소로 구성된다.
데이터 실행 방지
일반 정보
이름데이터 실행 방지
영어 이름Data Execution Prevention (DEP)
일본어 이름データ実行防止
약어DEP
종류Windows의 보안 기능
개요
목적악성 코드로부터 시스템 보호
메모리의 특정 영역에서 코드 실행을 방지
작동 방식메모리 페이지를 실행 가능 또는 실행 불가능으로 표시
NX 비트 또는 유사 기술 활용
기본 원리메모리 손상 공격 방지
기술적 상세 정보
하드웨어 기반 DEPNX (No eXecute) 비트 또는 XD (eXecute Disable) 비트 사용
AMD의 NX 비트, Intel의 XD 비트 지원 CPU 필요
소프트웨어 기반 DEPWindows 운영 체제 자체에서 구현
하드웨어 지원 없이 일부 보호 기능 제공
지원 운영 체제
마이크로소프트 윈도우Windows XP SP2 이상
Windows Server 2003 이상
Windows Vista
Windows 7
Windows 8
Windows 10
Windows 11
설정
구성 방법시스템 속성에서 설정
BIOS 설정에서 활성화 (하드웨어 기반 DEP)
명령 프롬프트 (bcdedit.exe)
활성화 수준항상 켜기 (OptIn)
필수 시스템 서비스에만 켜기 (OptOut)
예외 설정특정 프로그램에 대해 DEP 예외 설정 가능
보안 효과 및 제한 사항
장점버퍼 오버플로 공격 방지
악성 코드 실행 차단
시스템 안정성 향상
단점일부 구형 프로그램과의 호환성 문제 발생 가능
예외 설정으로 인해 보안 취약점 발생 가능
우회 방법Return-Oriented Programming (ROP) 등 고급 공격 기법
참고 자료
관련 링크마이크로소프트 기술 자료: Windows XP SP2의 데이터 실행 방지 (DEP) 기능 상세 설명
데이터 실행 방지

2. 작동 원리

데이터 실행 방지(DEP)는 코드 실행과 데이터 저장을 위한 메모리 영역을 분리하여, 데이터 영역에서 코드가 실행되는 것을 막는 기술이다. DEP는 하드웨어 DEP와 소프트웨어 DEP로 나뉜다.

하드웨어 DEP는 CPU의 NX 비트 기능을 활용한다. 32비트 Windows에서는 PAE 커널을 통해, 64비트에서는 기본적으로 지원된다. Windows Vista에서는 메모리의 특정 부분을 데이터 저장용으로 표시하고, NX 또는 XD 비트가 활성화된 프로세서가 해당 영역을 실행 불가능으로 인식하도록 하여 버퍼 오버플로우 공격을 방지한다. Windows 작업 관리자에서 프로세스별 DEP 활성화 여부를 확인할 수 있다.[2]

하드웨어 DEP가 정상적으로 작동하려면 x86 프로세서와 시스템 BIOS에서 이 기능을 지원하고, 사용자가 활성화해야 한다.[3] Windows에서는 "옵트인" 방식으로 일부 시스템 및 바이너리 파일에만 DEP를 적용하거나, "옵트아웃" 또는 "항상 켜짐(AlwaysOn)" 방식으로 모든 프로그램에 DEP를 적용할 수 있다. 이 설정은 "시스템 속성"에서 변경할 수 있다.[5] x86 아키텍처 외에 IA-64 아키텍처에서도 유사한 기능이 지원된다.

소프트웨어 DEP는 NX 비트와는 관련이 없으며, 마이크로소프트에서는 "안전한 구조적 예외 처리(SafeSEH)"라고 부른다. 소프트웨어 DEP는 예외 발생 시 예외 처리기가 함수 테이블에 등록되어 있는지 확인하여 프로그램의 안정성을 높인다.[1] 하지만 소프트웨어 DEP는 데이터 페이지에서의 코드 실행 방지와는 직접적인 관련이 없는 별개의 보호 방식이다.[1]

DEP는 때때로 정상적인 소프트웨어 실행을 방해할 수 있다. 이 경우, 소프트웨어가 특정 메모리 영역에서 코드 실행을 허용하도록 설정해야 하는데, 이 과정에서 데이터 검증이 제대로 이루어지지 않으면 새로운 공격 경로가 생길 수 있다.

2. 1. 하드웨어 DEP

하드웨어 DEP는 호환되는 CPU에서 NX 비트를 활성화한다. 이를 위해 32비트 Windows에서는 PAE 커널이 자동으로 사용된다.[2] 64비트에서는 네이티브로 지원된다. Windows Vista의 DEP는 메모리의 특정 부분이 데이터 보존만을 목적으로 하도록 표시하고, NX 또는 XD 비트가 활성화된 프로세서가 해당 영역을 실행 불가능으로 인식함으로써 작동하며, 이는 버퍼 오버플로우 공격의 성공을 방해한다. Windows Vista에서는 Windows 작업 관리자의 ''프로세스'' 탭에서 프로세스의 DEP 상태, 즉 DEP가 특정 프로세스에서 활성화되었는지 비활성화되었는지를 확인할 수 있다.

경우에 따라 데이터 실행 방지는 정당한 소프트웨어 실행을 방해하는 의도하지 않은 결과를 초래할 수 있다. 이 경우 영향을 받는 소프트웨어는 해당 메모리의 일부에서 코드 실행을 허용하도록 플래그를 지정해야 하지만, 애플리케이션이 실행 가능으로 표시된 메모리 영역에 전달된 데이터 검증을 엄격하게 수행하지 않으면, 이것 자체가 공격 가능성으로 이어진다.

만약 x86 프로세서가 이 기능을 하드웨어로 지원하고, 시스템의 BIOS가 이 기능을 지원하며, 제조업체 또는 사용자가 기능을 활성화했다면,[3] NX 기능은 Windows에서 제한된 "옵트인" 기반으로 활성화된다.[4] 이 설정은 Windows 시스템과 바이너리 파일의 제한된 일부에만 보호 기능을 제공한다. 완전한 보호를 달성하려면 사용자는 "옵트아웃"을 선택하여 특별히 면제되지 않은 모든 프로그램과 프로세스를 대상으로 하거나 "항상 켜짐 (AlwaysOn)"을 선택하여 그러한 예외 없이 모든 대상을 지정해야 한다. 이러한 설정은 "시스템 속성" 인터페이스를 통해 구성할 수 있다.[5] 만약 기능이 x86 프로세서에서 지원되지 않으면 보호는 제공되지 않는다. x86 아키텍처 외에도 NX와 유사한 기능이 인텔의 IA-64 아키텍처에도 존재하며, Windows에서 지원된다.

2. 2. 소프트웨어 DEP

소프트웨어 DEP는 NX 비트와는 관계가 없지만, 마이크로소프트가 "안전한 구조적 예외 처리(SafeSEH)"라고 부르는 것이다. 소프트웨어 DEP/SafeSEH는 예외가 발생했을 때, 예외가 애플리케이션의 함수 테이블에 등록되어 있는지 확인하는 검사를 수행한다.[1] 이 때문에 프로그램은 함수 테이블을 포함하여 빌드되어야 한다.[1] 그러나 소프트웨어 DEP는 데이터 페이지에서 코드 실행을 방지하는 것과 관련이 있다는 인상을 주지만, 이는 별개의 보호 방식이다.[1]

3. 설정 방법

윈도우 운영체제에서 데이터 실행 방지(DEP)는 제어판의 시스템 설정을 통해 변경하거나, boot.ini (윈도우 XP) 또는 bcdedit (윈도우 비스타 이상) 명령어를 통해 제어할 수 있다.[2]

3. 1. 정책 수준

정책 수준설명운영체제 기본 구성
OptIn윈도우 XP
OptOut윈도우 2003 서비스팩 1
AlwaysOn없음
AlwaysOff없음



DEP 설정은 Boot.ini 파일의 매개변수 '''/noexecute=''policy_level'''''을 사용하여 조정할 수 있다. 여기서 ''policy_level''은 ''OptIn'', ''OptOut'', ''AlwaysOn'' 또는 ''AlwaysOff'' 중 하나이다.[2]

3. 2. 프로그램 예외 처리

윈도우 XP 및 윈도우 2003의 경우, 제어판의 시스템→고급→성능 설정→데이터 실행 방지(DEP) 탭에서 특정 프로그램에 대해 DEP 적용을 제외할 수 있다. 윈도우 비스타 이상에서는 제어판→시스템→고급 시스템 설정→성능 설정→데이터 실행 방지(DEP) 탭에서 설정할 수 있다.[2]

DEP 모드는 다음과 같이 4가지가 있다.

모드설명
OptIn윈도우 XP, Vista, 7, 8의 기본 구성. 제한된 Windows 시스템 애플리케이션 및 서비스에 대해서만 DEP 활성화. 일반 애플리케이션은 운영 체제에 의해 자동 적용되지 않음. 64비트 Windows의 64비트 애플리케이션 및 서비스는 항상 적용되며, 예외 요청 무시.[9][10][11][12][13]
OptOut윈도우 서버의 기본 구성. 기본적으로 모든 프로그램 및 서비스에 DEP 활성화. 제어판에서 DEP를 적용하지 않을 특정 프로그램 목록을 지정 가능. 네트워크 관리자는 Application Compatibility Toolkit을 사용하여 DEP 보호에서 프로그램을 제외 가능.[12][9]
AlwaysOn시스템 전체에 완전한 DEP 보호 제공. 모든 프로그램은 항상 DEP 적용. 예외 목록, 애플리케이션 호환성 shim 및 예외 요청 무시.
AlwaysOffDEP를 완전히 비활성화. 32비트 Windows의 커널 및 드라이버에 대한 DEP는 이 모드에서만 비활성화. 모든 적용 요청 무시.



Boot.ini 파일의 매개변수 '''/noexecute=''policy_level'''''을 사용하여 DEP 설정을 조정할 수 있다. 여기서 ''policy_level''은 ''OptIn'', ''OptOut'', ''AlwaysOn'' 또는 ''AlwaysOff'' 중 하나이다.[2]

4. 한계 및 호환성 문제

주소 공간 배치 난수화(ASLR)가 함께 사용되지 않으면, DEP는 return-to-libc 공격과 같은 공격에 취약해질 수 있다. 이는 공격자가 DEP를 우회하는 데 사용될 수 있는 기법이다.

DEP는 코드를 실행 시에 쓰고 실행해야 하는 경우에는 효과가 없을 수 있다. JIT 컴파일러가 대표적인 예이다. JIT 컴파일러는 공격 코드를 생성하는 데 사용될 수 있는데, 생성된 코드는 실행 가능으로 표시되므로 DEP에 의해 차단되지 않는다.[2]

DEP는 오래된 소프트웨어에서 문제를 일으킬 수 있지만, 에이지 오브 미쏠로지와 같은 일부 애플리케이션에서는 문제를 해결하기도 한다. DEP는 프로세스 전체에 적용되므로, 애플리케이션이 DEP 활성화 상태에서 문제없이 작동하더라도 DEP 비호환 확장 기능이 추가되면 DEP를 비활성화해야 할 수 있다.

마이크로소프트는 애플리케이션이 DEP 오류로 충돌했을 때 시스템 전체에서 DEP를 비활성화하지 않도록 권장한다. 대신, 문제를 일으킨 소프트웨어 제작자나 벤더에게 먼저 연락하여 DEP를 위반하지 않는 업데이트 버전을 확인하고, 그것이 실패하면 문제가 발생한 애플리케이션에서만 DEP를 비활성화해야 한다고 권고한다.[7]

"COM 서러게이트가 작동을 멈췄습니다"라는 오류는 Windows Vista에서 미디어 폴더를 볼 때 가끔 발생하며, dllhost.exe에서 DEP를 비활성화하여 해결되는 경우가 있다. Windows Vista에서 이 오류가 발생하는 원인은, 많은 서드파티 제작의 영상 및 음성 코덱이 DEP와 호환되지 않기 때문이다. 이 문제는 일반적으로 설치된 모든 코덱을 최신 버전으로 업데이트하면 해결되는 경우도 있다.

DEP 문제는 Windows 탐색기, Internet Explorer, Windows Installer와 같은 핵심 운영 체제 구성 요소에서도 발생할 수 있는데, 이는 DEP와 호환되지 않을 수 있는 서드파티 제작의 프로세스 내 확장이나 플러그인을 지원하기 때문이다.[8]

4. 1. 한계

주소 공간 배치 난수화(ASLR)가 함께 사용되지 않으면, DEP는 return-to-libc 공격과 같은 공격에 취약해질 수 있다. 이는 공격자가 DEP를 우회하는 데 사용될 수 있는 기법이다.

이러한 취약점은 ''Uninformed'' 기사의 "skape & Skywing" 저자에 의해 Windows의 하드웨어 DEP에 대해 이미 시연되었다. 이들은 return-to-libc 형식의 공격을 이용했다. 이 기술은 특정 서비스 팩에 의존하는 위치를 EIP 레지스터가 직접 가리키도록 하는 방식에 기반한다. 또한, 부팅 시 옵션을 통해 DEP 적용 여부를 선택할 수 있는 기능(OptOut/OptIn)에도 의존한다. 만약 모든 페이지에 대해 DEP가 엄격하게 적용된다면, 이러한 공격은 성공할 수 없다. PaX 문서는 ASLR이 필요한 이유를 더 자세히 설명한다.[1]

DEP는 코드를 실행 시에 쓰고 실행해야 하는 경우에는 효과가 없을 수 있다. JIT 컴파일러가 대표적인 예이다. JIT 컴파일러는 (예: JIT spraying|JIT 스프레이영어 사용) 공격 코드를 생성하는 데 사용될 수 있다. 생성된 코드는 실행 가능으로 표시되므로 DEP에 의해 차단되지 않는다.[2]

4. 2. 호환성

DEP는 오래된 소프트웨어에서 문제를 일으킬 수 있지만, 에이지 오브 미쏠로지와 같은 일부 애플리케이션에서는 문제를 해결하기도 한다. DEP는 프로세스 전체에 적용되므로, 애플리케이션이 DEP 활성화 상태에서 문제없이 작동하더라도 DEP 비호환 확장 기능이 추가되면 DEP를 비활성화해야 할 수 있다.

사용자는 Vista 및 Windows Server 2003 R2에 포함된 마이크로소프트 Services for Unix의 일부 명령줄 명령어로 문제에 직면할 수 있다. 이러한 문제는 대부분 DEP 기능을 비활성화하여 해결할 수 있으며, 애플리케이션별로 비활성화하거나 중요한 Windows 프로그램 및 서비스를 제외하고 모두 비활성화할 수 있다.[6]

마이크로소프트는 애플리케이션이 DEP 오류로 충돌했을 때 시스템 전체에서 DEP를 비활성화하지 않도록 권장한다. 대신, 문제를 일으킨 소프트웨어 제작자나 벤더에게 먼저 연락하여 DEP를 위반하지 않는 업데이트 버전을 확인하고, 그것이 실패하면 문제가 발생한 애플리케이션에서만 DEP를 비활성화해야 한다고 권고한다.[7]

"COM 서러게이트가 작동을 멈췄습니다"라는 오류는 Windows Vista에서 미디어 폴더를 볼 때 가끔 발생하며, dllhost.exe에서 DEP를 비활성화하여 해결되는 경우가 있다. Windows Vista에서 이 오류가 발생하는 원인은, 많은 서드파티 제작의 영상 및 음성 코덱이 DEP와 호환되지 않기 때문이다. 이 문제는 일반적으로 설치된 모든 코덱을 최신 버전으로 업데이트하면 해결되는 경우도 있다.

DEP 문제는 Windows 탐색기, Internet Explorer, Windows Installer와 같은 핵심 운영 체제 구성 요소에서도 발생할 수 있는데, 이는 DEP와 호환되지 않을 수 있는 서드파티 제작의 프로세스 내 확장이나 플러그인을 지원하기 때문이다.[8]

참조

[1] 웹사이트 DEP null 2024-08-03
[2] 웹사이트 A detailed description of the Data Execution Prevention (DEP) feature in Windows XP Service Pack 2, Windows XP Tablet PC Edition 2005, and Windows Server 2003 http://support.micro[...] マイクロソフト 2006-09-26
[3] 웹사이트 Microsoft Knowledge Base kb912923 http://support.micro[...] 2007-10-07
[4] 웹사이트 Microsoft Knowledge Base kb875352 http://support.micro[...] 2006-09-26
[5] 웹사이트 System-wide configuration of DEP http://support.micro[...] 2006-09-26
[6] 웹사이트 Adding Software Exceptions In Data Execution Prevention (DEP) http://www.updatexp.[...] 2006-06-08
[7] 웹사이트 Data Execution Prevention: frequently asked questions http://windowshelp.m[...] マイクロソフト 2008-09-15
[8] 웹사이트 Windows Installer custom action code must be compatible with Data Execution Prevention in Windows Vista http://support.micro[...] マイクロソフト 2007-03-15
[9] 웹사이트 SetProcessDEPPolicy Function http://msdn.microsof[...] Microsoft Corporation 2009-12-03
[10] 웹사이트 NXCOMPAT (データ実行防止との互換性) http://msdn.microsof[...]
[11] 웹사이트 DEP on Vista exposed! http://blogs.technet[...] 2009-02-26
[12] 웹사이트 Understanding DEP as a mitigation technology (Part 1) http://blogs.technet[...] Microsoft TechNet Blog 2009-06-12
[13] 웹사이트 /noexecute (Windows Driver Kit) http://msdn.microsof[...] 2010-08-15
[14] 웹인용 Vista: Disable DEP or NoExecute Protection to fix Explorer Crashing http://www.tech-reci[...] 2008-01-31



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com