Le 4 septembre 2008, FreeBSD a publié un bulletin de sécurité détaillé [1] (CVE-2008-3890) pour corriger une vulnérabilité trouvée par Nate Eldredge dans la partie amd64 du noyau. Nous verrons dans quelle mesure un attaquant peut l'exploiter afin d'élever ses privilèges.
1. Analyse du patch
Comme indiqué par le bulletin de sécurité, le registre de segment GS du CPU est aussi bien utilisé par le noyau que par des processus utilisateurs pour stocker des données. Les processus utilisateurs l'utilisent pour gérer les informations sur les threads, et le noyau pour les informations spécifiques aux processeurs. Lorsqu'un processus entre ou sort du noyau, l'instruction swapgs est utilisée pour échanger le contenu des deux MSR (Machine state register) IA32_GSBASE et IA32_KERNEL_GSBASE ; et ainsi switcher entre la valeur du registre GS noyau et celle de l'utilisateur.
La description du problème est claire : « si une GPF (General Protection Fault) a lieu sur un système FreeBSD/amd64 pendant le retour d'une interruption, d'une exception ou d'un appel système, l'instruction CPU swapgs peut être appelée une fois de trop, entraînant l'inversion des états userland et kernel land ».
Le correctif ne fait que quelques lignes et supprime...
- 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