Analyse des vulnérabilités Windows 0day : de l'UAF du menu à l'élévation de privilèges système

robot
Création du résumé en cours

Analyse et exploitation des vulnérabilités 0day du système Microsoft Windows

Introduction

Le mois dernier, un correctif de sécurité de Microsoft contenait une vulnérabilité d'élévation de privilèges win32k exploitée dans la nature, présente uniquement dans les anciennes versions de Windows. Cet article analysera comment les attaquants continuent d'exploiter cette vulnérabilité dans un contexte où les mesures de sécurité s'améliorent constamment. L'environnement d'analyse est Windows Server 2016.

Numen Exclusif : La vulnérabilité 0day de Microsoft peut renverser le jeu Web3 au niveau système + physique

Contexte de la vulnérabilité

Une vulnérabilité 0day désigne une faille qui n'a pas été divulguée ni corrigée, pouvant être exploitée de manière malveillante pour causer d'importants dégâts. La vulnérabilité 0day récemment découverte dans le système Windows permet aux hackers d'obtenir un contrôle total du système, avec des conséquences incluant, mais ne se limitant pas à :

  • Vol d'informations personnelles
  • Panne du système perte de données
  • Pertes financières
  • Insertion de logiciels malveillants
  • La clé privée a été volée
  • Les actifs numériques ont été transférés

Dans une perspective plus large, cette vulnérabilité pourrait affecter l'ensemble de l'écosystème Web3 fonctionnant sur une infrastructure Web2.

Numen Exclusif : La vulnérabilité 0day de Microsoft peut renverser le jeu Web3 au niveau système et physique

Analyse des correctifs

Le patch a corrigé un problème de traitement multiple du compteur de référence d'objet. L'analyse des commentaires dans le code source précoce a révélé que le code d'origine ne verrouillait que l'objet de la fenêtre, sans verrouiller l'objet du menu dans la fenêtre, ce qui pouvait entraîner une référence incorrecte à l'objet du menu.

Numen Exclusif : La vulnérabilité 0day de Microsoft peut renverser le jeu Web3 au niveau système + physique

Analyse des exploits de vulnérabilité

L'analyse a révélé que dans la fonction xxxEnableMenuItem, la fonction MenuItemState renvoie deux possibilités de menus : le menu principal de la fenêtre ou un sous-menu dans le menu.

Construire une structure de menu imbriqué multicouche spéciale et définir des attributs spécifiques peut contourner la détection de fonction. Lors du retour de la fonction xxxRedrawTitle au niveau utilisateur, supprimer les relations de référence entre les menus et libérer l'objet de menu cible. Enfin, dans la fonction xxxEnableMenuItem, faire référence à un objet de menu qui n'est plus valide.

Numen Exclusif : La vulnérabilité 0day de Microsoft peut renverser la partie Web3 sur les systèmes + au niveau physique

Réalisation de l'exploitation des vulnérabilités

Approche globale

Considérer deux types d'utilisation :

  1. Exécuter le code shellcode
  2. Modifier l'adresse du token en utilisant les primitives de lecture/écriture.

Choisissez la deuxième solution, en divisant le processus d'utilisation en deux problèmes :

  • Comment exploiter la vulnérabilité UAF pour contrôler la valeur de cbwndextra
  • Comment réaliser des primitives de lecture et d'écriture stables

Numen exclusif : la vulnérabilité 0day de Microsoft peut renverser le jeu Web3 à la fois au niveau système et physique

Écriture des données initiales

Utilisez l'objet de nom de fenêtre dans la classe de fenêtre WNDClass pour libérer l'objet de menu occupé. Trouvez le moment opportun pour écrire des données dans la fonction xxxRedrawWindow.

Le choix final est d'écrire le paramètre cb-extra de HWNDClass à l'aide de l'opération AND 2 avec le drapeau.

Numen Exclusif : La vulnérabilité 0day de Microsoft peut renverser la partie Web3 au niveau système + physique

disposition de mémoire stable

Concevoir trois objets HWND consécutifs, libérer l'objet intermédiaire et l'occuper avec l'objet HWNDClass. Les objets HWND avant et arrière sont respectivement utilisés pour :

  • Fournir des paramètres de vérification des marques
  • Fournir un support pour la lecture et l'écriture des primitives

Déterminer précisément l'ordre de disposition des objets à travers l'adresse du gestionnaire de noyau divulguée.

Numen exclusif : la vulnérabilité 0day de Microsoft peut renverser la partie Web3 sur les niveaux système et physique

Implémentation de primitives de lecture et d'écriture

  • Lire au hasard : GetMenuBarInfo()
  • Écrire n'importe quoi : SetClassLongPtr()

À part l'écriture de TOKEN, toutes les autres opérations d'écriture utilisent l'objet class du premier objet de fenêtre.

Résumé

  1. La vulnérabilité win32k pourrait être éliminée dans la nouvelle version de Windows.

  2. Le processus d'exploitation de la vulnérabilité est relativement simple, reposant principalement sur la fuite de l'adresse du handle de la pile de bureau.

  3. La découverte de vulnérabilités peut dépendre d'une détection de couverture de code plus complète.

  4. La détection des lectures et écritures de mémoire anormales aide à découvrir des vulnérabilités similaires.

Numen Exclusif : la vulnérabilité 0day de Microsoft peut renverser la scène Web3 au niveau système + physique

TOKEN3.25%
Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • 3
  • Reposter
  • Partager
Commentaire
0/400
MidnightTradervip
· Il y a 21h
Encore un grand trou, Windows ne vaut vraiment pas le coup.
Voir l'originalRépondre0
TokenDustCollectorvip
· Il y a 21h
Cette vulnérabilité de Microsoft est un peu sérieuse, elle peut même voler la clé privée.
Voir l'originalRépondre0
HalfIsEmptyvip
· Il y a 21h
Aïe, encore un accident~
Voir l'originalRépondre0
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)