Élévation de privilège utilisant le noyau des périphériques LG

Date de publication :

Le développeur Jackson_T a publié le 17 février 2019 une preuve de faisabilité relative à l'exploitation d'une vulnérabilité considérée comme critique après que le constructeur LG l’ait rendue publique. Un attaquant pourrait alors l’exploiter afin d’obtenir une élévation de privilèges sur les gestionnaires de périphériques LG. Cette attaque nécessite de bonnes connaissances techniques, mais serait néanmoins simple à mettre en œuvre si l’on dispose du code d’exploitation. Elle nécessite un niveau d'authentification d’utilisateur standard sur la machine à corrompre. L'impact estimé sur la confidentialité et l'intégrité des données est élevé. 

Le noyau LHA (Low-level Hardware Access) des périphériques LG utilise des fonctions de contrôle d'entrée-sortie (IOTCL) qui permettent d’effectuer des opérations de lecture et d’écriture dans la mémoire physique. En effet, une fois chargé en mémoire, le périphérique peut être utilisé par des utilisateurs ne disposant pas des droits d'administrateur et peuvent par la suite agir sur la mémoire pour élever leurs privilèges.

Jackson_T est un chercheur en vulnérabilité indépendant qui a déjà découvert plusieurs vulnérabilités. Il rappelle la chronologie des événements ayant mené à la  divulgation de cette vulnérabilité initialement découverte le 11 novembre 2018. Le 15 novembre, une preuve de faisabilité est développée sur Windows 7 puis sur Windows 10 avant que LG confirme, le 21 novembre, l’existence de cette vulnérabilité et communique son intention de la corriger très rapidement. Le 13 février LG met finalement à disposition un correctif.

Détails techniques

  • CVE-2019-8372 [CVSS v3 7.0] La vulnérabilité utilise les primitives de lecture et d’écriture afin de mener une attaque de type « vol de jeton ». Dans les ordinateurs Windows, chaque processus possède une structure EPROCESS dans laquelle on trouve un jeton de sécurité. Le but de cette attaque est de remplacer le jeton d’un processus à bas privilèges par celui d’un processus à privilèges élevés. Le système de mémoire virtuelle complexifie la recherche de ces jetons et le logiciel malveillant (malware) va alors procéder à la fouille de la mémoire physique à la recherche d’empreintes de jetons de privilèges élevés.
  1. La première étape du logiciel malveillant est de créer une interface (qui est un processus) avec le pilote du périphérique afin d’interagir avec lui. Il recherche ensuite le processus parent du processus créé car celui-ci est exécuté par SYSTEM possédant de haut privilèges. En l’occurrence, le logiciel malveillant est lancé avec l’invite de commande PowerShell qui est son processus parent.
  2. L’étape suivante consiste alors à sonder la mémoire physique à la recherche du jeton de la structure EPROCESS PowerShell pour le se l'approprier à des fins d'élévation de privilèges.

Des correctifs ont été publiés par LG et sont disponibles au téléchargement depuis le 13 février. Du fait de leur criticité, les utilisateurs sont invités à appliquer les mises à jour le plus rapidement possible. 

Informations

La faille est activement exploitée :

Un correctif existe :

Une mesure de contournement existe :

Risques

Risques

  • Elévation de privilèges

Criticité

  • Score CVSS : En cours d'évaluation.

Existence d’un code d’exploitation de la vulnérabilité

Composants & versions vulnérables

  • Les versions exploitables du pilote LHA.sys sont celles avant 1.1.1811.2101 dans les périphériques LG.

CVE

  • CVE-2019-8372

Solutions ou recommandations

Mise en place de correctif de sécurité

  • Un correctif de cette vulnérabilité est proposé par LG dans la dernière mise à jour pour les produits visés.

Solution de contournement

  • La correction suggérée est de remplacer l'appel IoCreateDevice dans le pilote par IoCreateDeviceSecure. Cela agit comme une protection de périmètre en spécifiant une chaîne SDDL de telle sorte que seuls les processus s'exécutant dans le contexte de SYSTEM seront autorisés à créer un pointeur. Cependant, le service "Gestionnaire de périphériques" s'exécute dans ce contexte, cela ne doit pas interférer avec sa capacité à charger et à utiliser le pilote.