Articulo de referencia

Bit NX

El bit NX ( bit de no ejecución ) es una función del procesador que divide el espacio de direcciones virtuales (la distribución de memoria que utiliza un programa) en secciones ...

El bit NX ( bit de no ejecución ) es una función del procesador que divide el espacio de direcciones virtuales (la distribución de memoria que utiliza un programa) en secciones para almacenar datos o instrucciones. Un sistema operativo compatible con el bit NX puede marcar ciertas áreas del espacio de direcciones virtuales como no ejecutables, impidiendo que el procesador ejecute cualquier código almacenado allí. Esta técnica, conocida como protección del espacio ejecutable o Write XOR Execute , protege a los ordenadores del software malicioso que intenta insertar código dañino en el área de almacenamiento de datos de otro programa y ejecutarlo, como en un ataque de desbordamiento de búfer .

El término "bit NX" fue introducido por Advanced Micro Devices (AMD) como término de marketing. Intel comercializa esta característica como bit XD ( execute disable ), mientras que la arquitectura MIPS se refiere a ella como bit XI ( execute inhibit ). En la arquitectura ARM , introducida en ARMv6 , se conoce como XN ( execute never ). [ 1 ] El término bit NX se usa a menudo de forma amplia para describir tecnologías similares de protección del espacio ejecutable en otros procesadores.

Soporte de arquitectura

x86

Los procesadores x86 , desde el 80286 , incluían una funcionalidad similar implementada a nivel de segmento . Sin embargo, casi todos los sistemas operativos para los procesadores x86 80386 y posteriores implementan el modelo de memoria plana , por lo que no pueden utilizar esta funcionalidad. En esos procesadores, no existía una bandera "Executable" en la entrada de la tabla de páginas (descriptor de página) que permitiera a los sistemas operativos que utilizaban el modelo de memoria plana acceder a esta funcionalidad, hasta que AMD añadió un bit "no-execute" o NX a la entrada de la tabla de páginas en su arquitectura AMD64 , proporcionando un mecanismo que permite 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 incorporó a las familias de procesadores x86 más populares ( Pentium , Celeron , Xeon , etc.). En la arquitectura x86, AMD la implementó por primera vez, como el bit NX , para su uso en su línea de procesadores AMD64 , como el Athlon 64 y el Opteron . [ 2 ]

Después de que AMD decidiera incluir esta funcionalidad en su conjunto de instrucciones AMD64, Intel implementó la característica similar del bit XD 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 puede ejecutarse desde esa página; si se establece en 1, el código no puede ejecutarse desde esa página, y todo lo que reside allí se asume que son datos. Solo está disponible con el modo largo (modo de 64 bits) o los formatos de tabla de páginas heredados de Extensión de Dirección Física (PAE), pero no con el formato de tabla de páginas original de 32 bits de x86 porque las entradas de la tabla de páginas en ese formato carecen del bit 64 que se usa para deshabilitar y habilitar la ejecución.

Windows XP SP2 y versiones posteriores son compatibles con 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 "nunca ejecutar". [ 1 ] Para ARMv8-A , los descriptores de bloque y página VMSAv8-64, y los descriptores de bloque y página de descriptor largo VMSAv8-32, para las traducciones de etapa 1 tienen bits "nunca ejecutar" para los modos privilegiado y no privilegiado, y los descriptores de bloque y página para las traducciones de etapa 2 tienen un único bit "nunca ejecutar" (dos bits debido a la característica ARMv8.2-TTS2UXN); los descriptores de tabla de traducción de descriptor corto VMSAv8-32 en el nivel 1 tienen bits "nunca ejecutar" para los modos privilegiado y no privilegiado y en el nivel 2 tienen un único bit "nunca ejecutar". [ 4 ]

Alfa

A partir de la cuarta edición del manual de arquitectura Alpha, DEC (ahora HP) Alpha tiene un bit de fallo en 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 permisos de solo 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 de 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 tabla de traducción en un búfer de almacenamiento de traducción en Oracle SPARC Architecture 2011, Draft D1.0.0 tiene bits separados de ejecución y escritura. [ 8 ]

PowerPC/Power 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 radix en la ISA Power tienen bits de permisos 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 Principios de Operación de z/Architecture , los procesadores z/Architecture pueden admitir la función de 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 ejecutarse. [ 14 ]

Véase también

Referencias

  1. 1 2 "Manual de referencia de la arquitectura ARM" (PDF) . ARM Limited . págs.  B4-8, B4-27. Archivado del original (PDF) el 6 de febrero de 2009. Se han añadido los bits APX y XN (nunca ejecutar) en VMSAv6 [Arquitectura del sistema de memoria virtual].
  2. Ted Simpson; Jason Novak (24 de mayo de 2017). Hands on Virtual Computing . Cengage Learning. 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 la arquitectura ARM, ARMv8, para el 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. 
  5. Manual de referencia de la arquitectura Alpha (PDF) (Cuarta edición). Compaq Computer . Enero de 2002. págs. 11–5 , 17–5 , 22–5 .  
  6. "Manual de Arquitectura SPARC, Versión 8" . SPARC International . pág. 244. 
  7. Manual de Arquitectura SPARC, Versión 9 (PDF) . SPARC International. 1994. F.3.2 Atributos que la MMU asocia con cada mapeo, pág. 284. ISBN 0-13-825001-4Archivado del original (PDF) el 18 de enero de 2012.
  8. "Arquitectura Oracle SPARC 2011, Borrador D1.0.0" (PDF) . Oracle Corporation . 12 de enero de 2016. pág. 452. 
  9. PowerPC Operating Environment Architecture Book III, Versión 2.01 . IBM . Diciembre de 2003. pág. 31. 
  10. "Power ISA Versión 3.0" . IBM. 30 de noviembre de 2015. pág. 1003. 
  11. "PA-RISC 1.1 Architecture and Instruction Set Reference Manual, Third Edition" (PDF) . Hewlett-Packard . Febrero de 1994. págs. 3-13 . Archivado del 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. págs. 3-14 . Archivado del original (PDF) el 9 de enero de 2017. 
  13. "Manual del desarrollador de software de la arquitectura Intel Itanium, Volumen 2: Arquitectura del sistema, Revisión 2.0" . Intel. Diciembre de 2001. pág. 2:46. Archivado del original el 9 de enero de 2017. 
  14. Principios de funcionamiento de z/Architecture ( PDF) . IBM. Septiembre de 2017. págs. 3-14 . 
  • AMD e Intel incorporan tecnología antivirus en sus chips.
  • Microsoft fue entrevistado sobre informática confiable y NX.
  • Anuncio de LKML NX
  • Cambios en la funcionalidad de Microsoft Windows XP Service Pack 2, parte 3: Tecnologías de protección de memoria
  • Centro de seguridad para desarrolladores de Microsoft: Windows XP SP 2: Protección de ejecución