stringtranslate.com

bit NX

El bit NX (sin ejecución) es una tecnología utilizada en las CPU para segregar áreas de un espacio de direcciones virtuales para almacenar datos o instrucciones del procesador. Un sistema operativo compatible con el bit NX puede marcar ciertas áreas de un espacio de direcciones como no ejecutables. Luego, el procesador se negará a ejecutar cualquier código que resida en estas áreas del espacio de direcciones. 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 malicioso 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 dentro de esta sección; Una clase de este tipo de ataques se conoce como ataque de desbordamiento de búfer .

El término bit NX se originó con Advanced Micro Devices (AMD), como término de marketing. Intel comercializa la función como el bit XD (desactivación de ejecución). La arquitectura MIPS se refiere a la función como bit XI (inhibición de ejecución). La arquitectura ARM se refiere a la característica, que se introdujo en ARMv6 , como XN (nunca ejecutar). [1] El término bit NX se utiliza 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 procesadores x86 80386 y posteriores implementan el modelo de memoria plana , por lo que no pueden utilizar esta capacidad. No había ningún indicador "Ejecutable" en la entrada de la tabla de páginas (descriptor de página) en esos procesadores, hasta que, para que esta capacidad estuviera disponible para los sistemas operativos que usaban el modelo de memoria plana, AMD agregó un bit "no-ejecutar" o NX a la página. entrada de tabla en su arquitectura AMD64 , proporcionando 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 fue implementado por primera vez por AMD, como el bit NX , para su uso en su línea de procesadores AMD64 , como el 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 bit XD similar en 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 supone que todo lo que reside allí son datos. Solo está disponible con los formatos de tabla de páginas de modo largo (modo de 64 bits) o de extensión de dirección física (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 64 utilizado 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 de "ejecutar nunca". [1] Para ARMv8-A , descriptores de bloque y página VMSAv8-64, y descriptores de bloque y página de descriptor largo VMSAv8-32, para las traducciones de la etapa 1 tienen bits "ejecutar nunca" para los modos privilegiado y no privilegiado, y descriptores de bloque y página. para la etapa 2, las traducciones tienen un único bit de "ejecutar nunca" (dos bits debido a la función ARMv8.2-TTS2UXN); Los descriptores de la tabla de traducción de descriptores cortos VMSAv8-32 en el nivel 1 tienen bits de "nunca de ejecución" para el modo privilegiado y sin privilegios y en el nivel 2 tienen un único bit de "nunca de ejecución". [4]

Alfa

A partir de la cuarta edición del manual de arquitectura Alpha, DEC (ahora HP) Alpha tiene un bit de falla en la ejecución 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 Solo lectura, Lectura/Escritura, Lectura/Ejecución y Lectura/Escritura/Ejecutar 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 está obligada a proporcionar, cualquier combinación de permisos de lectura/escritura/ejecución. [7] Una entrada de la tabla de traducción en un búfer de almacenamiento de traducción en la arquitectura Oracle SPARC 2011, borrador D1.0.0, tiene bits ejecutables y grabables separados. [8]

PowerPC/Energía ISA

Las entradas de la tabla de páginas para las tablas de páginas hash de IBM PowerPC tienen un bit de página de no 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 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]

itanio

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 Principios de operación de z/Architecture , los procesadores de z/Architecture pueden admitir la función Protección de ejecución de instrucciones, que agrega un bit en las entradas de la tabla de páginas que controla si las instrucciones de una región, segmento o página determinada pueden ser ejecutado. [14]

Ver también

Referencias

  1. ^ ab "Manual de referencia de arquitectura ARM" (PDF) . BRAZO limitado . págs. B4-8, B4-27. Archivado desde el original (PDF) el 6 de febrero de 2009. Se han agregado bits APX y XN (nunca ejecutar) en VMSAv6 [Arquitectura del sistema de memoria virtual]
  2. ^ Ted Simpson; Jason Novak (24 de mayo de 2017). Manos a la obra con informática virtual. Aprendizaje Cengage. págs. 8–9. ISBN 978-1-337-10193-6.
  3. ^ "Prevención de ejecución de datos" (PDF) . Hewlett Packard. 2005 . Consultado el 23 de marzo de 2014 .
  4. ^ "Manual de referencia de arquitectura ARM, ARMv8, para el perfil de arquitectura ARMv8-A". BRAZO limitado. págs. D4-1779, D4-1780, D4-1781, G4-4042, G4-4043, G4-4044, G4-4054, G4-4055.
  5. ^ Manual de referencia de arquitectura Alpha (PDF) (Cuarta ed.). Computadora Compaq . Enero de 2002. págs. 11-5,17-5,22-5.
  6. ^ "Manual de arquitectura SPARC, versión 8". SPARC Internacional . pag. 244.
  7. ^ 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.
  8. ^ "Arquitectura Oracle SPARC 2011, borrador D1.0.0" (PDF) . Corporación Oráculo . 12 de enero de 2016. pág. 452.
  9. ^ Libro III de arquitectura del entorno operativo PowerPC, versión 2.01 . IBM . Diciembre de 2003. p. 31.
  10. ^ "Power ISA versión 3.0". IBM. 30 de noviembre de 2015. p. 1003.
  11. ^ "Manual de referencia del conjunto de instrucciones y arquitectura PA-RISC 1.1, tercera edición" (PDF) . Hewlett Packard . Febrero de 1994. pág. 3-13. Archivado desde el original (PDF) el 7 de junio de 2011.
  12. ^ Gerry Kane. "Arquitectura PA-RISC 2.0, Capítulo 3: Direccionamiento y control de acceso" (PDF) . Hewlett Packard. pag. 3-14. Archivado desde el original (PDF) el 9 de enero de 2017.
  13. ^ "Manual del desarrollador de software de arquitectura Intel Itanium, volumen 2: arquitectura del sistema, revisión 2.0". Intel. Diciembre de 2001. p. 2:46. Archivado desde el original el 9 de enero de 2017.
  14. ^ z/Principios de funcionamiento de la arquitectura (PDF) . IBM. Septiembre de 2017. pág. 3-14.

enlaces externos