Analyse d'une vulnérabilité dans le "Device Driver" de Norton Anti-Virus

Date :22 Juin 2005

Publication: Article

Une vulnérabilité a été découverte dans le "Device Driver" (fichier "NAVAP.sys") de l'anti-virus Symantec Norton AntiVirus sous les systèmes Microsoft Windows. Elle permet à un utilisateur ayant un compte sur le système d'accroître ses privilèges ou de provoquer un déni de service sur le système.

Contexte

Les "Device Driver" sous les systèmes Windows sont des "pilotes" utilisés pour interagir avec un équipement ("hardware"), comme un clavier par exemple. Ces "Device Driver" sont exécutés avec des privilèges élevés, ceux de "Kernel Mode" ("Ring 0").

Une application communique avec les "Device Driver" grâce à l'API (Application Programming Interface) "DeviceIoControl". Cette dernière ordonne aux "Device" de réaliser certaines opérations, en utilisant des codes de contrôle.

Par ailleurs, un "Device Driver" n'est susceptible d'être attaqué que s'il est "ouvert", c'est-à-dire s'il crée un objet en utilisant la fonction "IoCreateDevice". Cette dernière fonction détermine si le Device peut être ouvert par plusieurs applications simultanément (drapeau "Exclusive"). Norton, par exemple, n'a pas positionné ce drapeau, ce qui permet à plusieurs applications d'ouvrir simultanément le "Device Driver" pilotant son logiciel anti-virus et de lui envoyer des commandes.

Description de la vulnérabilité

La vulnérabilité découverte dans le "Device Driver" de Symantec Norton AntiVirus peut être exploitée par un utilisateur local, en envoyant deux codes de contrôle spécifiques via la fonction "DeviceIoControl".

Le premier code de contrôle envoie en entrée des données spécifiques à l'opération demandée (par "DeviceIoControl" au "Device Driver") via "IpInBuffer" (pointeur vers un tampon qui contient les données nécessaires pour réaliser l'opération), et retourne en sortie des données vers la zone mémoire spécifiée par "IpOutBuffer" (pointeur vers un tampon qui contient les données produites en sortie par l'opération). Les données contenues à cet emplacement de la mémoire peuvent être modifiées afin d'y inclure du code arbitraire. Ensuite, le second code de contrôle peut manipuler l'adresse de retour du "Device Driver" pour le faire se positionner sur la zone mémoire spécifiée par "IpOutBuffer" (entrainantentraînant ainsi l'exécution du code arbitraire positionné à cet emplacement ).

L'exploitation de cette vulnérabilité peut permettre à un utilisateur local de provoquer un déni de service du système, ou d'exécuter du code arbitraire avec les privilèges "Kernel Mode" ("Ring 0").

Solution

A ce jour, le seul palliatif disponible est de n'autoriser l'accès aux systèmes affectés qu'aux utilisateurs de confiance.

Pour plus d'information :