La version 10.6.7 de Mac OS X sortie le 21 mars 2011 apporte un correctif pour la vulnérabilité CVE-2011-0182 découverte par Jeff Mears [1]. La faille se situe dans la fonction i386_set_ldt du noyau XNU, qui permet à un processus utilisateur de modifier sa LDT de façon trop permissive. Il était alors possible d'utiliser cette fonction pour créer une entrée de type « call gate » dans la LDT pour exécuter directement du code avec les privilèges noyau. Nous détaillons ici les particularités du noyau XNU sur l'architecture Intel afin d'exploiter cette vulnérabilité.
1. Le noyau XNU
1.1 K32 et K64
Mac OS X supporte les processeurs Intel depuis la version 10.4.4 sortie en janvier 2006. Les premiers modèles d'ordinateurs portables MacBook Intel étaient équipés des processeurs Core Duo, qui ne supportent pas le jeu d'instructions 64 bits.
Avec l'arrivée des CPU 64 bits, le noyau a ensuite été mis à jour pour permettre l'exécution de programmes utilisateurs 64 bits, tout en préservant la compatibilité avec les drivers 32 bits existants. Pour cela, le noyau contient un minimum de code 64 bits bas niveau pour la gestion des interruptions, trappes et exceptions en Long mode. Le code principal du noyau ainsi que des drivers s'exécutaient alors en mode de compatibilité (32 bits).
Figure 1 : Modes d'exécution x86
Avec la sortie de Snow Leopard (10.6), un noyau entièrement 64 bit est apparu (K64). Cependant, celui-ci n'était pas utilisé par défaut sur la plupart des machines Apple. La dernière version de Mac OS X...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première