El bit NX (sin ejecución) es una tecnología utilizada en las CPU para segregar áreas de memoria para su uso ya sea para el almacenamiento de instrucciones del procesador (código) o para el almacenamiento de datos, una característica que normalmente solo se encuentra en los procesadores de arquitectura Harvard . Sin embargo, el bit NX se utiliza cada vez más en los procesadores de arquitectura de von Neumann convencionales por razones de seguridad.
Un sistema operativo compatible con el bit NX puede marcar determinadas áreas de la memoria como no ejecutables. El procesador entonces se negará a ejecutar cualquier código que resida en estas áreas de memoria. La técnica general, conocida como protección del espacio ejecutable , también llamada Write XOR Execute , se utiliza para evitar que ciertos tipos de software malintencionado se apoderen de las computadoras insertando su código en el área de almacenamiento de datos de otro programa y ejecutando su propio código desde esta sección; una clase de estos ataques se conoce como ataque de desbordamiento de búfer .
Intel comercializa la función como el bit XD (ejecutar deshabilitar). Advanced Micro Devices (AMD) utiliza el término de marketing NX bit . La arquitectura ARM se refiere a la característica, que se introdujo en ARMv6 , como XN (ejecutar nunca). [1] El término bit NX en sí mismo se usa a veces para describir tecnologías similares en otros procesadores.
Soporte de arquitectura
x86
Los procesadores x86 , desde el 80286 , incluían una capacidad similar implementada a nivel de segmento . Sin embargo, casi todos los sistemas operativos para los procesadores 80386 y posteriores x86 implementan el modelo de memoria plana , por lo que no pueden usar esta capacidad. No había una marca 'Ejecutable' en la entrada de la tabla de páginas (descriptor de página) en esos procesadores, hasta que, para que esta capacidad esté disponible para los sistemas operativos que usan el modelo de memoria plana, AMD agregó un bit de "no ejecución" o NX a la página. entrada de tabla en su arquitectura AMD64 , que proporciona un mecanismo que puede controlar la ejecución por página en lugar de por segmento completo.
Intel implementó una característica similar en su procesador Itanium ( Merced ), con arquitectura IA-64 , en 2001, pero no la llevó a las familias de procesadores x86 más populares ( Pentium , Celeron , Xeon , etc.). En la arquitectura x86, AMD lo implementó por primera vez, como el bit NX , para su uso en su línea de procesadores AMD64 , como Athlon 64 y Opteron . [2]
Después de la decisión de AMD de incluir esta funcionalidad en su conjunto de instrucciones AMD64, Intel implementó la característica de bits XD similar en los procesadores x86 comenzando con los procesadores Pentium 4 basados en iteraciones posteriores del núcleo Prescott. [3] El bit NX se refiere específicamente al bit número 63 (es decir, el bit más significativo) de una entrada de 64 bits en la tabla de páginas . Si este bit se establece en 0, entonces el código se puede ejecutar desde esa página; si se establece en 1, el código no se puede ejecutar desde esa página y se asume que cualquier cosa que resida allí sea datos. Solo está disponible con el modo largo (modo de 64 bits) o los formatos de tabla de páginas de extensión de direcciones físicas (PAE) heredados , pero no con el formato de tabla de páginas de 32 bits original de x86 porque las entradas de la tabla de páginas en ese formato carecen del bit 63 que se usa para deshabilitar y habilitar la ejecución.
Windows XP SP2 y versiones posteriores admiten la Prevención de ejecución de datos (DEP).
BRAZO
En ARMv6 , se introdujo un nuevo formato de entrada de tabla de páginas; incluye un bit "ejecutar nunca". [1] Para los descriptores de páginas y bloques ARMv8-A , VMSAv8-64, y los descriptores de páginas y bloques de descriptores largos VMSAv8-32, para la etapa 1, las traducciones tienen bits de "nunca ejecutar" para los modos privilegiado y no privilegiado, y descriptores de bloque y página para la etapa 2, las traducciones tienen un solo bit "ejecutar nunca" (dos bits debido a la función ARMv8.2-TTS2UXN); Los descriptores de tabla de traducción de descriptores cortos de VMSAv8-32 en el nivel 1 tienen bits de "ejecutar nunca" para el modo privilegiado y sin privilegios y en el nivel 2 tienen un solo bit de "ejecutar nunca". [4]
Alfa
A partir de la cuarta edición del manual de la arquitectura Alpha, DEC (ahora HP) Alpha tiene un bit de falla al ejecutar en las entradas de la tabla de páginas con OpenVMS , Tru64 UNIX y Alpha Linux PALcode . [5]
SPARC
La MMU de referencia SPARC para Sun SPARC versión 8 tiene valores de permiso de sólo lectura, lectura / escritura, lectura / ejecución y lectura / escritura / ejecución en las entradas de la tabla de páginas, [6] aunque no todos los procesadores SPARC tienen una MMU de referencia SPARC.
Una MMU SPARC versión 9 puede proporcionar, pero no es necesario que proporcione, cualquier combinación de permisos de lectura / escritura / ejecución. [7] Una entrada de tabla de traducción en un búfer de almacenamiento de traducción en Oracle SPARC Architecture 2011, el borrador D1.0.0 tiene bits de escritura y ejecutables separados. [8]
PowerPC / Power ISA
Las entradas de la tabla de páginas para las tablas de páginas con hash de IBM PowerPC tienen un bit de página sin ejecución. [9] Las entradas de la tabla de páginas para las tablas de páginas de árbol de base en Power ISA tienen bits de permiso separados que otorgan acceso de lectura / escritura y ejecución. [10]
PA-RISC
Las entradas del búfer de búsqueda de traducción (TLB) y las entradas de la tabla de páginas en PA-RISC 1.1 y PA-RISC 2.0 admiten páginas de solo lectura, lectura / escritura, lectura / ejecución y lectura / escritura / ejecución. [11] [12]
Itanium
Las entradas TLB en Itanium admiten páginas de solo lectura, lectura / escritura, lectura / ejecución y lectura / escritura / ejecución. [13]
z / Arquitectura
A partir de la duodécima edición de los z / Architecture Principios de funcionamiento, los procesadores de arquitectura / z pueden apoyar la instalación de protección de instrucciones de ejecución de órdenes, que añade un bit en página entradas de la tabla que controla si las instrucciones de una determinada región, segmento, o la página se puede ejecutado. [14]
Ver también
- Protección de espacio ejecutable
Referencias
- ^ a b "Manual de referencia de arquitectura ARM" (PDF) . ARM Limited . págs. B4-8, B4-27. Archivado desde el original (PDF) el 2009-02-06.
Se han agregado bits APX y XN (ejecutar nunca) en VMSAv6 [Arquitectura del sistema de memoria virtual]
- ^ Ted Simpson; Jason Novak (24 de mayo de 2017). Manos a la obra de la informática virtual . Aprendizaje Cengage. págs. 8–9. ISBN 978-1-337-10193-6.
- ^ "Prevención de ejecución de datos" (PDF) . Hewlett Packard. 2005 . Consultado el 23 de marzo de 2014 .
- ^ "Manual de referencia de arquitectura ARM, ARMv8, para perfil de arquitectura ARMv8-A" . ARM Limited. págs. D4-1779, D4-1780, D4-1781, G4-4042, G4-4043, G4-4044, G4-4054, G4-4055.
- ^ Manual de referencia de arquitectura Alpha (PDF) (Cuarta ed.). Computadora Compaq . Enero de 2002. págs. 11-5,17-5,22-5.
- ^ "El Manual de Arquitectura SPARC, Versión 8" . SPARC Internacional . pag. 244.
- ^ "Manual de arquitectura SPARC, versión 9" (PDF) . SPARC Internacional. 1994. F.3.2 Atributos que la MMU asocia con cada mapeo, p. 284. ISBN 0-13-825001-4. Archivado desde el original (PDF) el 18 de enero de 2012.
- ^ "Oracle SPARC Architecture 2011, Draft D1.0.0" (PDF) . Oracle Corporation . 12 de enero de 2016. p. 452.
- ^ PowerPC Operating Environment Architecture Book III, versión 2.01 . IBM . Diciembre de 2003. p. 31.
- ^ "Power ISA Versión 3.0" . IBM. 30 de noviembre de 2015. p. 1003.
- ^ "Manual de referencia del conjunto de instrucciones y arquitectura PA-RISC 1.1, tercera edición" (PDF) . Hewlett-Packard . Febrero de 1994. p. 3-13. Archivado desde el original (PDF) el 7 de junio de 2011.
- ^ Gerry Kane. "Arquitectura PA-RISC 2.0, Capítulo 3: Direccionamiento y control de acceso" (PDF) . Hewlett Packard. pag. 3-14.
- ^ "Manual del desarrollador de software de la arquitectura Intel Itanium, volumen 2: arquitectura del sistema, revisión 2.0" . Intel. Diciembre de 2001. p. 2:46.
- ^ z / Principios de funcionamiento de la arquitectura (PDF) . IBM. Septiembre de 2017. p. 3-14.
enlaces externos
- AMD e Intel ponen tecnología antivirus en los chips
- Microsoft entrevistado sobre computación confiable y NX
- Anuncio de LKML NX
- Cambios en la funcionalidad en Microsoft Windows XP Service Pack 2 Parte 3: Tecnologías de protección de memoria
- Centro de desarrollo de seguridad de Microsoft: Windows XP SP 2: Protección de ejecución