En la arquitectura x86-64, ¿cómo puede especificar el sistema operativo qué páginas no pueden contener código ejecutable?
In the x86-64 architecture, how can the operating system specify which pages cannot contain executable code?
The operating system can tag a page of virtual address space with the No-Execute or NX bit, which is bit 63 of the page table entry.
El sistema operativo puede etiquetar una página del espacio de direcciones virtual con el bit de No Ejecutar o NX, que es el bit 63 de la entrada de la tabla de páginas.
information_extraction
El bit de no ejecución o bit NX (bit 63 de la entrada de la tabla de páginas) permite al sistema operativo especificar qué páginas del espacio de direcciones virtual pueden contener código ejecutable y cuáles no. Un intento de ejecutar código desde una página etiquetada como "no ejecutable" dará lugar a una violación de acceso a memoria, similar a un intento de escribir en una página de sólo lectura. Esto debería dificultar que el código malicioso tome el control del sistema mediante ataques de "desbordamiento de búfer" o "búfer no comprobado". Desde el 80286, los procesadores x86 disponen de una función similar como atributo de los descriptores de segmento; sin embargo, sólo funciona en un segmento entero cada vez.
es