Analyse et exploitation des vulnérabilités 0day du système Windows de Microsoft
Récemment, le correctif de sécurité publié par Microsoft contenait une vulnérabilité d'escalade de privilèges win32k qui est actuellement exploitée. Cette vulnérabilité existe principalement dans les versions antérieures de Windows et ne peut pas être déclenchée sur Windows 11. Cet article analysera comment les attaquants continuent d'exploiter ce type de vulnérabilités dans le contexte actuel de renforcement des mesures de sécurité. Notre processus d'analyse a été réalisé dans un environnement Windows Server 2016.
Contexte de la vulnérabilité
Les vulnérabilités 0day désignent des failles de sécurité qui n'ont pas encore été rendues publiques ni corrigées, semblables au concept de transaction T+0 sur les marchés financiers. Une fois découvertes, ces vulnérabilités peuvent être exploitées de manière malveillante sans être détectées, entraînant des destructions considérables.
La vulnérabilité 0day découverte dans le système Windows permet aux attaquants d'obtenir le contrôle total du système. Cela peut entraîner des fuites d'informations personnelles, des pannes de système, des pertes de données, des pertes financières, etc. D'un point de vue Web3, les clés privées des utilisateurs peuvent être volées, et les actifs numériques peuvent être transférés. De manière plus large, cette vulnérabilité pourrait affecter l'ensemble de l'écosystème Web3 fonctionnant sur une infrastructure Web2.
Analyse des vulnérabilités
En analysant le code du patch, nous avons découvert qu'il s'agissait d'un problème d'erreur de comptage de référence d'objet. Les commentaires dans le code win32k plus ancien indiquent qu'auparavant, seul l'objet de la fenêtre était verrouillé, sans verrouiller l'objet du menu dans la fenêtre, ce qui pourrait entraîner une référence incorrecte à l'objet du menu.
Une analyse plus approfondie révèle que, dans la fonction xxxEnableMenuItem, l'objet de menu retourné peut être le menu principal de la fenêtre, un sous-menu ou même un menu plus profond. Cela fournit une piste pour construire un POC.
Mise en œuvre du POC
Nous avons construit une structure de menu multilayer spéciale, contenant quatre objets de menu ayant des relations spécifiques. En configurant soigneusement les propriétés et les relations de ces menus, il est possible de contourner la détection de la fonction xxxEnableMenuItem et de libérer des objets de menu clés au moment du retour de la fonction. De cette manière, la référence à cet objet ultérieurement déclenchera une vulnérabilité UAF.
Exploitation de la vulnérabilité ( EXP )
Approche globale
Nous avons considéré deux types d'exploitation : l'exécution de shellcode et l'exploitation des primitives de lecture/écriture pour modifier le token. Nous avons finalement choisi la seconde option, car elle est plus viable sur les versions récentes de Windows. Nous avons divisé l'ensemble du processus d'exploitation en deux étapes : comment contrôler la valeur cbwndextra via UAF, et comment utiliser cbwndextra contrôlé pour réaliser des primitives de lecture/écriture stables.
Écriture des données initiales
Nous utilisons l'objet de nom de classe de fenêtre WNDClass pour occuper la mémoire de l'objet de menu libéré. En analysant divers points d'écriture possibles, nous avons finalement choisi d'utiliser l'opération AND sur les drapeaux d'objet dans la fonction xxxRedrawWindow pour écrire la valeur cb-extra de HWNDClass.
disposition de la mémoire
Nous avons conçu une disposition en mémoire composée de trois objets HWND consécutifs, l'objet du milieu étant libéré et occupé par l'objet HWNDClass. Les objets HWND à l'avant et à l'arrière sont respectivement utilisés pour contourner la détection et réaliser les primitives de lecture et d'écriture finales. En utilisant les adresses des poignées de noyau divulguées, nous pouvons contrôler précisément l'arrangement de ces objets.
Implémentation des primitives de lecture et d'écriture
Toute opération de lecture utilise la fonction GetMenuBarInfo, tandis que toute opération d'écriture utilise la fonction SetClassLongPtr. À l'exception de l'écriture du TOKEN qui dépend de l'objet de classe de la deuxième fenêtre, toutes les autres opérations d'écriture utilisent l'objet de classe de la première fenêtre et sont réalisées par décalage.
Résumé
Microsoft essaie de reconstruire le code win32k avec Rust, à l'avenir, ce type de vulnérabilités pourrait être complètement résolu dans les nouveaux systèmes.
L'exploitation de ce type de vulnérabilité est relativement simple, la principale difficulté réside dans la façon de contrôler la première écriture de données.
La découverte de vulnérabilités peut bénéficier de technologies de détection de couverture de code plus avancées.
En ce qui concerne la détection des vulnérabilités, en plus de se concentrer sur les points clés des fonctions déclenchées, il convient également de détecter les dispositions mémoire anormales et les opérations de lecture et d'écriture de données.
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.
7 J'aime
Récompense
7
6
Partager
Commentaire
0/400
DeFiGrayling
· Il y a 1h
Microsoft a vraiment fait fort cette fois -_-
Voir l'originalRépondre0
HackerWhoCares
· Il y a 1h
Pas étonnant que mon ordinateur soit si lent!
Voir l'originalRépondre0
ResearchChadButBroke
· Il y a 1h
Microsoft a vraiment échoué cette fois-ci.
Voir l'originalRépondre0
GasWrangler
· Il y a 1h
techniquement parlant, ce défaut de disposition mémoire est suboptimal af
La vulnérabilité 0day du système Windows soulève des inquiétudes en matière de sécurité Web3, analyse des experts sur le processus d'exploitation.
Analyse et exploitation des vulnérabilités 0day du système Windows de Microsoft
Récemment, le correctif de sécurité publié par Microsoft contenait une vulnérabilité d'escalade de privilèges win32k qui est actuellement exploitée. Cette vulnérabilité existe principalement dans les versions antérieures de Windows et ne peut pas être déclenchée sur Windows 11. Cet article analysera comment les attaquants continuent d'exploiter ce type de vulnérabilités dans le contexte actuel de renforcement des mesures de sécurité. Notre processus d'analyse a été réalisé dans un environnement Windows Server 2016.
Contexte de la vulnérabilité
Les vulnérabilités 0day désignent des failles de sécurité qui n'ont pas encore été rendues publiques ni corrigées, semblables au concept de transaction T+0 sur les marchés financiers. Une fois découvertes, ces vulnérabilités peuvent être exploitées de manière malveillante sans être détectées, entraînant des destructions considérables.
La vulnérabilité 0day découverte dans le système Windows permet aux attaquants d'obtenir le contrôle total du système. Cela peut entraîner des fuites d'informations personnelles, des pannes de système, des pertes de données, des pertes financières, etc. D'un point de vue Web3, les clés privées des utilisateurs peuvent être volées, et les actifs numériques peuvent être transférés. De manière plus large, cette vulnérabilité pourrait affecter l'ensemble de l'écosystème Web3 fonctionnant sur une infrastructure Web2.
Analyse des vulnérabilités
En analysant le code du patch, nous avons découvert qu'il s'agissait d'un problème d'erreur de comptage de référence d'objet. Les commentaires dans le code win32k plus ancien indiquent qu'auparavant, seul l'objet de la fenêtre était verrouillé, sans verrouiller l'objet du menu dans la fenêtre, ce qui pourrait entraîner une référence incorrecte à l'objet du menu.
Une analyse plus approfondie révèle que, dans la fonction xxxEnableMenuItem, l'objet de menu retourné peut être le menu principal de la fenêtre, un sous-menu ou même un menu plus profond. Cela fournit une piste pour construire un POC.
Mise en œuvre du POC
Nous avons construit une structure de menu multilayer spéciale, contenant quatre objets de menu ayant des relations spécifiques. En configurant soigneusement les propriétés et les relations de ces menus, il est possible de contourner la détection de la fonction xxxEnableMenuItem et de libérer des objets de menu clés au moment du retour de la fonction. De cette manière, la référence à cet objet ultérieurement déclenchera une vulnérabilité UAF.
Exploitation de la vulnérabilité ( EXP )
Approche globale
Nous avons considéré deux types d'exploitation : l'exécution de shellcode et l'exploitation des primitives de lecture/écriture pour modifier le token. Nous avons finalement choisi la seconde option, car elle est plus viable sur les versions récentes de Windows. Nous avons divisé l'ensemble du processus d'exploitation en deux étapes : comment contrôler la valeur cbwndextra via UAF, et comment utiliser cbwndextra contrôlé pour réaliser des primitives de lecture/écriture stables.
Écriture des données initiales
Nous utilisons l'objet de nom de classe de fenêtre WNDClass pour occuper la mémoire de l'objet de menu libéré. En analysant divers points d'écriture possibles, nous avons finalement choisi d'utiliser l'opération AND sur les drapeaux d'objet dans la fonction xxxRedrawWindow pour écrire la valeur cb-extra de HWNDClass.
disposition de la mémoire
Nous avons conçu une disposition en mémoire composée de trois objets HWND consécutifs, l'objet du milieu étant libéré et occupé par l'objet HWNDClass. Les objets HWND à l'avant et à l'arrière sont respectivement utilisés pour contourner la détection et réaliser les primitives de lecture et d'écriture finales. En utilisant les adresses des poignées de noyau divulguées, nous pouvons contrôler précisément l'arrangement de ces objets.
Implémentation des primitives de lecture et d'écriture
Toute opération de lecture utilise la fonction GetMenuBarInfo, tandis que toute opération d'écriture utilise la fonction SetClassLongPtr. À l'exception de l'écriture du TOKEN qui dépend de l'objet de classe de la deuxième fenêtre, toutes les autres opérations d'écriture utilisent l'objet de classe de la première fenêtre et sont réalisées par décalage.
Résumé
Microsoft essaie de reconstruire le code win32k avec Rust, à l'avenir, ce type de vulnérabilités pourrait être complètement résolu dans les nouveaux systèmes.
L'exploitation de ce type de vulnérabilité est relativement simple, la principale difficulté réside dans la façon de contrôler la première écriture de données.
La découverte de vulnérabilités peut bénéficier de technologies de détection de couverture de code plus avancées.
En ce qui concerne la détection des vulnérabilités, en plus de se concentrer sur les points clés des fonctions déclenchées, il convient également de détecter les dispositions mémoire anormales et les opérations de lecture et d'écriture de données.