Bit NX
Le NX-bit ( N o e X ecute) est une technique de processeurs de la famille x86 pour renforcer la sécurité d'un ordinateur. Son objectif est d'empêcher l'exécution de données arbitraires telles que des programmes et ainsi le lancement de codes malveillants tels que. B. Virus , backdoors, etc. Dans les systèmes d'exploitation Windows (à partir de Windows XP SP2), la technologie est également connue sous le nom de Data Execution Prevention ( DEP en abrégé ; prévention allemande de l' exécution des données ).
Des techniques similaires existent depuis un certain temps sur d'autres architectures de processeurs , comme le PowerPC d'IBM, le Sun SPARC et les processeurs Alpha .
l'histoire
Depuis le processeur Intel 80286, il est possible dans le mode dit protégé de marquer des segments de mémoire individuels comme exécutables (segments de code) ou non exécutables (segments de données). Si une tentative est faite pour exécuter du code à une adresse dans un segment de mémoire marqué comme non exécutable , la CPU déclenche une interruption matérielle, qui est interceptée par le système d'exploitation. Le programme en question peut alors être annulé.
Les systèmes d'exploitation actuels utilisent également le mode protégé, mais ils utilisent un soi-disant «modèle de mémoire plate» dans lequel tous les segments couvrent la même zone de mémoire linéaire. La protection mémoire basée sur les segments est ainsi annulée et il n'y a plus de séparation entre les zones de code et de données.
La technologie a donc été introduite par le fabricant de puces AMD avec le processeur Athlon 64 sous le nom de NX-Bit pour le marché x86. La technologie est commercialisée par AMD sous le nom de Enhanced Virus Protection (EVP) . Même Intel a utilisé cette technique dans les processeurs Itanium et les derniers Pentium 4 - et Pentium-M - et Core , sous le nom de XD Bit (Execute Disable). Aussi Transmeta et VIA / Centaur offre des CPU bit avec NX.
Fonctionnalité
Morceaux: | 63 | 62… 52 | 51… 32 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Contenu: | NX | réservé | Bit 51… 32 de l'adresse de base | |||||||||||||||||||||||||||||
Morceaux: | 31… 12 | 11… 9 | 8ème | 7e | 6e | 5 | 4e | 3 | 2 | 1 | 0 | |||||||||||||||||||||
Contenu: | Bit 31… 12 de l'adresse de base | AVL | ig | 0 | ig | UNE. | PCD | PHE | NOUS | R / W | P. |
Les systèmes d'exploitation actuels reposent exclusivement sur la gestion de la mémoire par page pour la protection de la mémoire. Avec l'architecture IA32, cela permet la distinction entre les pages en "lecture seule" et celles en "lecture et écriture" (voir le bit 1 ("R / W") dans l'entrée de la table des pages), mais il n'y a pas de distinction entre (Données) "Lire" et (Code) "Exécuter" fourni. AMD a utilisé le bit 63 pour le bit NX dans les tables et répertoires de pages 64 bits. Les tables de pages et répertoires 64 bits ne sont utilisés qu'en mode 64 bits et en mode 32 bits avec l'extension d'adresse physique activée .
Le bit NX est défini par le système d'exploitation, s'il le prend en charge, pour la pile et les autres zones de données de la mémoire principale, afin que celles-ci ne puissent plus être exécutées. Si un programme tente d'exécuter les pages de mémoire marquées de cette manière en raison d'un bogue ou d'une infection par un code malveillant, le CPU intercepte cela et le signale au système d'exploitation via une interruption matérielle, qui met alors fin au programme concerné.
Cette procédure viole partiellement le principe de Von Neumann de stockage des données et des programmes dans une mémoire partagée. Cependant, seule l'exécution de code dans des segments de données (par exemple dans une pile ou un tas ) est empêchée. Le débordement de tampon lui-même n'est pas empêché. Si un saut vers une page de codes est déclenché, la technique de non-exécution n'a aucun effet. De plus, malgré cette technologie, n'importe quel code peut être exécuté, par exemple au moyen d'un " retour dans la libc ".
Systèmes d'exploitation
les fenêtres
Le système d' exploitation Windows de Microsoft prend en charge DEP à partir de Windows XP SP 2, à condition que le processeur respectif en offre la possibilité. À partir de Windows Vista , les paramètres sont visibles par l'utilisateur (Propriétés système → Avancé → Performances → Paramètres → Prévention de l'exécution des données). Windows 8 et les versions plus récentes de Windows ne peuvent pas être démarrés sur des processeurs sans bit NX.
Linux
Le noyau Linux prend en charge le bit NX à partir de la version 2.6.8, dans lequel un noyau 64 bits (x64, x86_64, amd64) ou un noyau 32 bits pour un processeur avec PAE activé doit être utilisé.
macOS
Le système d'exploitation pour les ordinateurs d' Apple , macOS (anciennement «Mac OS X» et «OS X»), prend en charge le bit NX à partir de la version 10.6 « Snow Leopard ».
CPU avec bit NX
Les processeurs dotés de la fonction NX bit peuvent être reconnus par le logiciel par un 11e bit défini dans le registre d'activation de la fonction étendue . Ce «registre spécifique au modèle» ne peut être lu que par un logiciel privilégié (logiciel système), par exemple par le noyau du système d'exploitation.
AMD
- AMD Athlon 64 et successeur
- AMD Opteron
- AMD Phenom et son successeur
- AMD Sempron (depuis Paris)
- AMD Turion 64 et successeur
- AMD Ryzen et son successeur
Intel
- Intel Atom
- Intel Celeron (à partir du cœur Conroe L)
- Intel Celeron D
- Intel Celeron M (à partir du noyau Dothan)
- Intel Core Solo, Duo et successeur
- Intel Pentium 4 (de type Prescott F / J)
- Intel Pentium D
- Intel Pentium double cœur
- Intel Pentium Extreme Edition
- Intel Pentium M (de Dothan, FSB533 tous les modèles, FSB400 uniquement modèles avec CPU-ID 06D8h)
- Intel Xeon (à partir du noyau Pentium D)
Du repos
liens web
- Implémentation d' ASLR et NX / XD-Bit dans le noyau Linux 2.6 . Magazine Linux
- Vulnérable malgré aucune exécution . Heise en ligne