NX 비트

NX bit

NX 비트(비실행)는 프로세서 명령(코드) 스토리지 또는 데이터 스토리지에서 사용하는 메모리 영역을 분리하기 위해 CPU에서 사용되는 테크놀로지입니다.이 기능은 보통 하버드 아키텍처 프로세서에서만 볼 수 있습니다.그러나 NX 비트는 보안상의 이유로 기존의 von Neumann 아키텍처 프로세서에서 점점 더 많이 사용되고 있습니다.

NX 비트를 지원하는 운영체제는 메모리의 특정 영역을 실행 불가능으로 표시할 수 있습니다.CPU는, 이러한 메모리 영역에 존재하는 코드의 실행을 거부합니다.실행 가능한 공간 보호(Write XOR Execute)라고도 하는 일반적인 기술은 특정 유형의 악성 소프트웨어가 다른 프로그램의 데이터 스토리지 영역에 코드를 삽입하고 이 섹션 내에서 자체 코드를 실행함으로써 컴퓨터를 넘겨받는 것을 방지하기 위해 사용됩니다. 이러한 공격의 한 클래스는 버퍼 오버플로라고 합니다.공략.

NX 비트라는 용어는 마케팅 용어로서 Advanced Micro Devices(AMD)에서 유래했습니다.인텔은 이 기능을 XD 비트(execute disable)로 판매합니다.ARM 아키텍처ARMv6에서 도입된 기능을 XN(execute never)[1]이라고 부릅니다.NX 비트라는 용어는 다른 프로세서에서 유사한 기술을 설명하기 위해 사용되는 경우가 있습니다.

아키텍처 지원

x86

x86 프로세서에는 80286 이후 세그먼트레벨에서 구현된 동일한 기능이 포함되어 있습니다.다만, 80386 이후의 x86 프로세서용의 거의 모든 operating system은 플랫 메모리 모델을 실장하고 있기 때문에, 이 기능을 사용할 수 없습니다.이러한 프로세서의 페이지 테이블 엔트리(페이지 디스크립터)에는 "Executable" 플래그가 없었습니다.이 기능을 플랫 메모리 모델을 사용하는 운영체제가 사용할 수 있도록 AMD64 아키텍처의 페이지 테이블 엔트리에 "No-Execute" 또는 NX 비트를 추가하여 페이지 단위의 실행을 제어할 수 있는 메커니즘을 제공했습니다.le 세그먼트

인텔은 2001년에 IA-64 아키텍처를 탑재한 Itanium(Merced) 프로세서에 같은 기능을 실장했지만, 보다 일반적인 x86 프로세서 패밀리(Pentium, Celeron, Xeon 등)에는 도입하지 않았습니다.x86 아키텍처에서는 Athlon 64 및 Opteron [2]등의 AMD64 프로세서 라인에서 사용하기 위해 NX 비트로 AMD에 의해 최초로 구현되었습니다.

AMD가 AMD64 명령 세트에 이 기능을 포함하기로 결정한 후 인텔은 Prescott [3]코어의 이후 반복을 기반으로 Pentium 4 프로세서부터 x86 프로세서에 동일한 XD 비트 기능을 구현했습니다.NX 비트는 특히 페이지 테이블 내의 64비트엔트리의 비트 번호63(최상위 비트)을 참조합니다.이 비트를 0으로 설정하면 해당 페이지에서 코드를 실행할 수 있으며, 1로 설정하면 해당 페이지에서 코드를 실행할 수 없으며, 여기에 있는 모든 것이 데이터로 간주됩니다.롱 모드(64비트 모드) 또는 레거시 물리 주소 확장(PAE) 페이지 테이블 형식에서만 사용할 수 있지만 x86의 원래 32비트 페이지 테이블 형식에는 실행 해제 및 활성화에 사용되는 63번째 비트가 없기 때문에 이 형식은 사용할 수 없습니다.

Windows XP SP2 이후에는 DEP(Data Execution Prevention)를 지원합니다.

ARMv6에서는 새로운 페이지 테이블엔트리 포맷이 도입되었습니다.이 포맷에는 "execute never" [1]비트가 포함되어 있습니다.ARMv8-A, VMSAv8-64 블록 및 페이지 기술자, VMSAv8-32 롱 기술자 블록 및 페이지 기술자의 경우, 스테이지 1 변환의 경우 특권 모드와 비특권 모드 모두에 대해 "절대 실행 안 함" 비트가 있으며, 스테이지 2 변환의 블록 및 페이지 기술자에는 "절대 실행 안 함" 비트(2비트)가 1개 있습니다.레벨 1의 rt-syslogor 변환테이블 기술자에는 특권 모드와 비특권 모드 모두에 대해 "syslog never" 비트가, 레벨2에는 "syslog never" [4]비트가 1개 있습니다.

알파

Alpha Architecture 매뉴얼의 제4판에서는 OpenVMS, Tru64 UNIX 및 Alpha Linux [5]PALcode의 페이지 테이블 엔트리에 Fault on Execute 비트가 포함되어 있습니다.

SPARC

SPARC Reference MMU for Sun SPARC 버전8의 페이지 테이블엔트리에 [6]읽기 전용, 읽기/쓰기, 읽기/실행 및 읽기/쓰기/실행 권한 값이 있습니다.단, SPARC 프로세서에 SPARC Reference MMU가 있는 것은 아닙니다.

SPARC 버전9 MMU는 읽기/[7]쓰기/실행 권한을 제공할 수 있지만 제공할 필요는 없습니다.Oracle SPARC Architecture 2011의 번역 스토리지 버퍼에 있는 변환 테이블 엔트리 D1.0.0에는 실행 가능 [8]비트와 쓰기 가능 비트가 따로 있습니다.

Power PC/Power ISA

IBM Power의 페이지 테이블 항목PC의 해시 페이지 테이블에는 실행 페이지 [9]비트가 없습니다.Power ISA의 기수 트리 페이지 테이블의 페이지 테이블 엔트리에는 읽기/[10]쓰기 액세스와 실행 액세스를 허용하는 별도의 권한 비트가 있습니다.

PA-RISC

PA-RISC 1.1 및 PA-RISC 2.0의 Translation Lookaside Buffer(TLB) 엔트리 및 페이지테이블 엔트리는 읽기 전용 페이지,[11][12] 읽기/쓰기, 읽기/실행 페이지 및 읽기/쓰기/실행 페이지를 지원합니다.

아이테니엄

Itanium의 TLB 엔트리는 읽기 전용,[13] 읽기/쓰기, 읽기/실행 및 읽기/쓰기/실행 페이지를 지원합니다.

z/아키텍처

z/Architecture Processors of Operation(작동 원리) 12판 이후 z/Architecture 프로세서는 명령 실행 보호 기능을 지원할 수 있습니다. 이 기능은 지정된 영역, 세그먼트 또는 페이지의 명령을 [14]실행할 수 있는지 여부를 제어하는 페이지 테이블 항목에 비트를 추가합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b "ARM Architecture Reference Manual" (PDF). ARM Limited. pp. B4-8,B4-27. Archived from the original (PDF) on 2009-02-06. APX and XN (execute never) bits have been added in VMSAv6 [Virtual Memory System Architecture]
  2. ^ Ted Simpson; Jason Novak (24 May 2017). Hands on Virtual Computing. Cengage Learning. pp. 8–9. ISBN 978-1-337-10193-6.
  3. ^ "Data Execution Prevention" (PDF). Hewlett Packard. 2005. Retrieved 2014-03-23.
  4. ^ "ARM Architecture Reference Manual, ARMv8, for ARMv8-A architecture profile". ARM Limited. pp. D4-1779,D4-1780,D4-1781,G4-4042,G4-4043,G4-4044,G4-4054,G4-4055.
  5. ^ Alpha Architecture Reference Manual (PDF) (Fourth ed.). Compaq Computer. January 2002. pp. 11-5,17-5,22-5.
  6. ^ "The SPARC Architectural Manual, Version 8". SPARC International. p. 244.
  7. ^ "The SPARC Architecture Manual, Version 9" (PDF). SPARC International. 1994. F.3.2 Attributes the MMU Associates with Each Mapping, p. 284. ISBN 0-13-825001-4. Archived from the original (PDF) on 2012-01-18.
  8. ^ "Oracle SPARC Architecture 2011, Draft D1.0.0" (PDF). Oracle Corporation. January 12, 2016. p. 452.
  9. ^ PowerPC Operating Environment Architecture Book III, Version 2.01. IBM. December 2003. p. 31.
  10. ^ "Power ISA Version 3.0". IBM. November 30, 2015. p. 1003.
  11. ^ "PA-RISC 1.1 Architecture and Instruction Set Reference Manual, Third Edition" (PDF). Hewlett-Packard. February 1994. p. 3-13. Archived from the original (PDF) on June 7, 2011.
  12. ^ Gerry Kane. "PA-RISC 2.0 Architecture, Chapter 3: Addressing and Access Control" (PDF). Hewlett-Packard. p. 3-14.
  13. ^ "Intel Itanium Architecture Software Developer's Manual, Volume 2: System Architecture, Revision 2.0". Intel. December 2001. p. 2:46.
  14. ^ z/Architecture Principles of Operation (PDF). IBM. September 2017. p. 3-14.

외부 링크