Dans l'architecture x86-64, comment le système d'exploitation peut-il spécifier les pages qui ne peuvent pas contenir de code exécutable ?
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.
Le système d'exploitation peut marquer une page de l'espace d'adressage virtuel avec le bit No-Execute ou NX, qui est le bit 63 de l'entrée de la table des pages.
information_extraction
Le bit No-Execute ou bit NX (bit 63 de l'entrée de la table des pages) permet au système d'exploitation de spécifier les pages de l'espace d'adressage virtuel qui peuvent contenir du code exécutable et celles qui ne le peuvent pas. Une tentative d'exécution de code à partir d'une page marquée "no execute" entraînera une violation d'accès à la mémoire, similaire à une tentative d'écriture sur une page en lecture seule. Cela devrait rendre plus difficile la prise de contrôle du système par des codes malveillants via des attaques de type "buffer overrun" ou "unchecked buffer". Une fonction similaire est disponible sur les processeurs x86 depuis le 80286 en tant qu'attribut des descripteurs de segments ; cependant, elle ne fonctionne que sur un segment entier à la fois.
fr