1 – Vulnérabilité en mode processeur surprivilégié sur des microgiciels UEFI

Résumé

Le 28 juin 2016, un chercheur en sécurité a publié une vulnérabilité dans des microprogrammmes embarqués de type UEFI. Cette vulnérabilité est une élévation de privilèges permettant de passer dans un mode spécifique d’exécution du processeur, le mode SMM (System Management Mode).

Contexte de la vulnérabilité

Cette vulnérabilité se situe dans un ensemble de microgiciels basés sur le standard UEFI, il est donc nécessaire de décrire plus spécifiquement ce sous-système et son interaction avec le mode surprivilégié du processeur.

System Management Mode – (SMM)

Le mode d’exécution SMM, également appelé anneau -2, est un mode spécifique aux processeurs Intel x86, introduit au début des années 1990. Ce mode, hautement privilégié, est utilisé pour gérer des fonctionnalités de bas niveau, principalement liées à la plateforme matérielle et aux micrologiciels intégrés.

De même, le mode SMM est largement utilisé dans le standard UEFI pour implémenter des fonctions de sécurité.

Ce mode est accessible au système via un pic de connexion du processeur (SMI#), mais également par le déclenchement d’une interruption SMI par le contrôleur APIC (advanced programmable interrupt controller).

Unified Extensible Firmware Interface – (UEFI)

Le standard d’interface micrologicielle unifiée extensible décrit un système d’interfaces entre le système d’exploitation et le matériel (avec ses micrologiciels intégrés).

Le standard UEFI définit les modalités de démarrage du système, remplaçant de fait le système BIOS. Le processus de démarrage est constitué d’étapes menant à l’exécution en parallèle d’un système d’exploitation et de pilotes microgiciels UEFI permettant d’interagir avec le matériel.

Une de ces étapes est la création d’une phase initialisant le sous-système SMM contenant plusieurs pilotes, ainsi que l’enregistrement de protocoles de communication avec ces pilotes.

La vulnérabilité concernée est justement située dans l’un de ces pilotes.

Description de la vulnérabilité

La vulnérabilité est issue d’une déficience de contrôle sur les paramètres d’une fonction contenue dans un pilote UEFI. Ce pilote est référencé par les idenfiants uniques (GUID) 7c79ac8c-5e6c-4e3d-ba6f-c260ee7c172e et A56897A1-A77F-4600-84DB-22B0A801FA9A.

Ces identifiants uniques correspondent à une partie du système concomitant du mode SMM.

Cette fonction, dont une partie du code est représentée ci-dessous, est enregistrée au démarrage du pilote et est appelée lors du traitement des interruptions SMI. On peut constater que le pointeur donné en argument à la fonction n’est pas correctement vérifié par la fonction, et un appel indirect via un membre de la structure est effectué.

Extrait de désassemblage de la fonction vulnérable :

.text:03CC sub rsp, 28h
.text:03D0 // rcx contient un pointeur controle par l’attaquant
.text:03D0 mov rax, [rcx+20h]
.text:03D4 // rax contient desormais un pointeur teinte
.text:03D4 test rax, rax
.text:03D7 jz short loc_3DF
.text:03D9 mov rdx, [rcx+8]
.text:03DD // Appel de la valeur teintee
.text:03DD call rax
[…]

Déclenchement

Afin de déclencher la vulnérabilité, un attaquant peut préparer en mémoire une structure spécialement conçue contenant un pointeur vers un tableau de code exécutable, et appeler spécifiquement le driver vulnérable en utilisant des interruptions SMI.

Impacts

Le fait d’exécuter du code arbitraire en mode surprivilégié permet d’installer des composants malveillants résistants à une simple réinstallation du système d’exploitation, ainsi que de contourner les protections mises en place, telles que Secure Boot ou l’isolation des identifiants sous Windows 10 (Credential Guard).

Cette vulnérabilité affecte de nombreux constructeurs, tels que Lenovo, HP, Dell ou encore Fujitsu.

D’autre part, le code d’exploitation de cette vulnérabilité rendu public nécessite de posséder un accès physique à la machine. Toutefois une exploitation à distance est sans doute possible, à condition de posséder les droits suffisants sur la machine pour communiquer avec le microprogramme.

Recommandations

Le CERT-FR recommande d’appliquer les correctifs de sécurité, y compris aux microprogrammes embarqués. D’autre part le CERT-FR recommande, dans le cadre d’une réponse à incident, de vérifier l’intégrité de ces microprogrammes.

Documentation

Rappel des avis émis

Dans la période du 04 au 10 juillet 2016, le CERT-FR a émis les publications suivantes :