Vigil@nce - Xen, Citrix XenServer, BSD, Windows : élévation de
juin 2012 par Vigil@nce
Ce bulletin a été rédigé par Vigil@nce : http://vigilance.fr/offre
SYNTHÈSE DE LA VULNÉRABILITÉ
Un administrateur dans un système invité ParaVirtualisé 64 bits
peut employer l’instruction SYSRET avec un RIP invalide, afin
d’exécuter du code sur le système hôte avec un processeur Intel 64
bits.
Gravité : 2/4
Date création : 12/06/2012
Dates révisions : 12/06/2012, 13/06/2012
PRODUITS CONCERNÉS
– Citrix XenServer
– Debian Linux
– Fedora
– FreeBSD
– Microsoft Windows 2003
– Microsoft Windows 2008
– Microsoft Windows 7
– Microsoft Windows XP
– NetBSD
– Red Hat Enterprise Linux
– SUSE Linux Enterprise Desktop
– SUSE Linux Enterprise Server
– Unix - plateforme
DESCRIPTION DE LA VULNÉRABILITÉ
L’instruction assembleur SYSCALL/SYSRET est utilisée pour gérer
l’entrée et la sortie d’un appel système.
Le registre RIP 64 bit indique le pointeur d’instruction
(l’adresse qui contient le code à exécuter).
Un processeur 64 bits utilise des adresses virtuelles "canoniques"
situées entre 0 et 0x7FFF FFFF FFFF ((1<<47) - 1) (pour la partie
basse).
Cependant, un attaquant peut placer une instruction SYSCALL à
l’adresse (1<<47)-2, puis sauter à cette adresse. Lors de l’appel
SYSRET, l’adresse de la prochaine instruction devient (1<<47), qui
n’est plus canonique. Une General Protection Fault se produit
alors, et les données situées à l’adresse RSP (Stack Pointer) sont
écrasées par les valeurs stockées dans les registres.
Un administrateur dans un système invité ParaVirtualisé 64 bits
peut donc employer l’instruction SYSRET avec un RIP invalide, afin
d’exécuter du code sur le système hôte avec un processeur Intel 64
bits.
ACCÈS AU BULLETIN VIGIL@NCE COMPLET