Les vulnérabilités du système Windows de Microsoft pourraient entraîner des risques de sécurité pour le Web3
Le mois dernier, le correctif de sécurité publié par Microsoft contenait une vulnérabilité d'élévation de privilèges win32k qui est actuellement exploitée. Cette vulnérabilité semble n'exister que dans les versions antérieures de Windows et ne peut pas être déclenchée sur Windows 11.
L'exploitation de ce type de vulnérabilité existe depuis longtemps. Dans le contexte actuel, où de nouvelles mesures de sécurité sont continuellement améliorées, nous espérons analyser comment les attaquants pourraient continuer à exploiter cette vulnérabilité. Le processus d'analyse de cet article a été réalisé dans un environnement Windows Server 2016.
Cette vulnérabilité de jour zéro n'a pas été rendue publique ni corrigée, elle peut être exploitée de manière malveillante sans être détectée, et elle est extrêmement destructrice. Grâce à cette vulnérabilité, les hackers peuvent obtenir un contrôle total sur le système Windows. Cela peut entraîner le vol d'informations personnelles, des pannes de système, la perte de données, des pertes financières, l'injection de logiciels malveillants, entre autres conséquences graves. Pour les utilisateurs de Web3, les clés privées peuvent être volées et les actifs numériques peuvent être transférés. D'un point de vue plus large, cette vulnérabilité pourrait même affecter l'ensemble de l'écosystème Web3 fonctionnant sur une infrastructure basée sur Web2.
En analysant le patch, nous avons découvert que le problème venait du fait que le compteur de références de l'objet avait été traité une fois de trop. win32k est un code plus ancien, et les commentaires dans le code source antérieur montrent que le code précédent ne verrouillait que l'objet de la fenêtre, sans verrouiller l'objet de menu à l'intérieur de l'objet de la fenêtre, ce qui pourrait entraîner une référence incorrecte à l'objet de menu.
Lors de la mise en œuvre de la preuve de concept ( PoC ), nous avons constaté que le menu passé à xxxEnableMenuItem ( est généralement verrouillé dans la fonction de niveau supérieur, et il n'est pas clair quel objet de menu doit être protégé ici. Une analyse plus approfondie a révélé que le menu renvoyé par la fonction MenuItemState peut être le menu principal de la fenêtre, un sous-menu, voire un sous-sous-menu.
Pour déclencher la vulnérabilité, nous avons construit une structure de menu spéciale à quatre niveaux et défini certaines conditions spécifiques pour passer le contrôle de la fonction xxxEnableMenuItem. Lorsque xxxRedrawTitle retourne à la couche utilisateur, nous avons supprimé la relation de référence entre les menus C et B, libérant ainsi avec succès le menu C. Finalement, lorsque la fonction xxxEnableMenuItem retourne à xxxRedrawTitle, l'objet de menu C qui allait être référencé est déjà invalide.
![Numen Exclusif : La vulnérabilité 0day de Microsoft peut renverser le jeu Web3 à la fois au niveau système et physique])https://img-cdn.gateio.im/webp-social/moments-171ea7cb7c6f7190c3f49a2b914eed04.webp(
Lors du développement de l'exploitation de la vulnérabilité )Exp(, nous avons principalement envisagé deux solutions : exécuter du shellcode et utiliser des primitives de lecture/écriture pour modifier l'adresse du token. Compte tenu de la faisabilité, nous avons choisi cette dernière. L'ensemble du processus d'exploitation peut être divisé en deux étapes : comment exploiter la vulnérabilité UAF pour contrôler la valeur de cbwndextra, et comment réaliser des primitives de lecture/écriture stables.
![Numen exclusif : la vulnérabilité 0day de Microsoft peut renverser la partie Web3 à la fois au niveau système et physique])https://img-cdn.gateio.im/webp-social/moments-66af34ab04bec21e27be99bbe29c552a.webp(
Nous avons soigneusement conçu la disposition de la mémoire, utilisant l'objet de nom de fenêtre dans la classe de fenêtre WNDClass pour occuper l'objet de menu libéré. Grâce à des opérations spécifiques dans la fonction xxxRedrawWindow, nous avons réalisé la première écriture de données.
![Numen Exclusif : La vulnérabilité 0day de Microsoft peut renverser le jeu Web3 au niveau système + physique])https://img-cdn.gateio.im/webp-social/moments-1cc94ddafacec491507491eef9195858.webp(
Pour réaliser une disposition de mémoire stable, nous avons conçu trois objets HWND consécutifs, libérant le deuxième et utilisant un objet HWNDClass à la place. Les objets HWND à l'avant et à l'arrière sont utilisés respectivement pour effectuer des vérifications et mettre en œuvre des primitives de lecture et d'écriture. Nous avons également déterminé avec précision si l'agencement des objets correspondait aux attentes grâce à une fuite d'adresse de poignée de noyau.
![Numen Exclusif : le 0day de Microsoft peut renverser le jeu Web3 sur le plan système + physique])https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(
Dans l'implémentation de la lecture et de l'écriture des primitives, nous utilisons GetMenuBarInfo)( pour la lecture arbitraire et SetClassLongPtr)( pour l'écriture arbitraire. À part l'opération de remplacement TOKEN, toutes les autres écritures sont réalisées en utilisant l'objet de classe du premier objet fenêtre via un décalage.
![Numen Exclusif : La faille 0day de Microsoft peut renverser la partie Web3 au niveau système + physique])https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(
Bien que la vulnérabilité win32k soit ancienne, Microsoft essaie de reconstruire le code du noyau concerné en Rust, et à l'avenir, ce type de vulnérabilité pourrait être éliminé dans les nouveaux systèmes. Le processus d'exploitation de cette vulnérabilité est relativement simple, la principale difficulté résidant dans la manière de contrôler la première écriture. Cette vulnérabilité dépend fortement de la fuite d'adresse du handle de la pile de bureau, ce qui reste un risque de sécurité pour les anciens systèmes.
Nous supposons que la découverte de cette vulnérabilité pourrait être due à une détection de couverture de code plus complète. En ce qui concerne la détection des exploits, en plus de surveiller les points critiques, une détection ciblée des agencements de mémoire anormaux et des lectures et écritures de données de fenêtres pourrait également aider à détecter ce type de vulnérabilité.
![Numen Exclusif : La vulnérabilité 0day de Microsoft peut renverser la dynamique du Web3 à la fois sur le plan système et physique])https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(
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.
20 J'aime
Récompense
20
8
Reposter
Partager
Commentaire
0/400
RunWhenCut
· 08-08 14:14
Mettre à jour le patch immédiatement
Voir l'originalRépondre0
LiquidityWizard
· 08-08 03:20
Si le système ne se met pas à jour, attendez la mort.
Voir l'originalRépondre0
BlockchainTalker
· 08-07 08:27
Soyez encore plus sécurisé maintenant.
Voir l'originalRépondre0
FlyingLeek
· 08-06 06:24
Mettre à niveau le système pour la sécurité
Voir l'originalRépondre0
ImpermanentSage
· 08-05 14:49
Dépêche-toi de mettre à niveau, ne sois pas paresseux.
Voir l'originalRépondre0
SelfCustodyIssues
· 08-05 14:48
Mettez rapidement à jour le système.
Voir l'originalRépondre0
TopBuyerBottomSeller
· 08-05 14:42
Mettez à jour vers le système 11 dès que possible.
Les vulnérabilités du système Windows menacent la sécurité des actifs Web3, la clé privée pourrait être volée.
Les vulnérabilités du système Windows de Microsoft pourraient entraîner des risques de sécurité pour le Web3
Le mois dernier, le correctif de sécurité publié par Microsoft contenait une vulnérabilité d'élévation de privilèges win32k qui est actuellement exploitée. Cette vulnérabilité semble n'exister que dans les versions antérieures de Windows et ne peut pas être déclenchée sur Windows 11.
L'exploitation de ce type de vulnérabilité existe depuis longtemps. Dans le contexte actuel, où de nouvelles mesures de sécurité sont continuellement améliorées, nous espérons analyser comment les attaquants pourraient continuer à exploiter cette vulnérabilité. Le processus d'analyse de cet article a été réalisé dans un environnement Windows Server 2016.
Cette vulnérabilité de jour zéro n'a pas été rendue publique ni corrigée, elle peut être exploitée de manière malveillante sans être détectée, et elle est extrêmement destructrice. Grâce à cette vulnérabilité, les hackers peuvent obtenir un contrôle total sur le système Windows. Cela peut entraîner le vol d'informations personnelles, des pannes de système, la perte de données, des pertes financières, l'injection de logiciels malveillants, entre autres conséquences graves. Pour les utilisateurs de Web3, les clés privées peuvent être volées et les actifs numériques peuvent être transférés. D'un point de vue plus large, cette vulnérabilité pourrait même affecter l'ensemble de l'écosystème Web3 fonctionnant sur une infrastructure basée sur Web2.
En analysant le patch, nous avons découvert que le problème venait du fait que le compteur de références de l'objet avait été traité une fois de trop. win32k est un code plus ancien, et les commentaires dans le code source antérieur montrent que le code précédent ne verrouillait que l'objet de la fenêtre, sans verrouiller l'objet de menu à l'intérieur de l'objet de la fenêtre, ce qui pourrait entraîner une référence incorrecte à l'objet de menu.
Lors de la mise en œuvre de la preuve de concept ( PoC ), nous avons constaté que le menu passé à xxxEnableMenuItem ( est généralement verrouillé dans la fonction de niveau supérieur, et il n'est pas clair quel objet de menu doit être protégé ici. Une analyse plus approfondie a révélé que le menu renvoyé par la fonction MenuItemState peut être le menu principal de la fenêtre, un sous-menu, voire un sous-sous-menu.
Pour déclencher la vulnérabilité, nous avons construit une structure de menu spéciale à quatre niveaux et défini certaines conditions spécifiques pour passer le contrôle de la fonction xxxEnableMenuItem. Lorsque xxxRedrawTitle retourne à la couche utilisateur, nous avons supprimé la relation de référence entre les menus C et B, libérant ainsi avec succès le menu C. Finalement, lorsque la fonction xxxEnableMenuItem retourne à xxxRedrawTitle, l'objet de menu C qui allait être référencé est déjà invalide.
![Numen Exclusif : La vulnérabilité 0day de Microsoft peut renverser le jeu Web3 à la fois au niveau système et physique])https://img-cdn.gateio.im/webp-social/moments-171ea7cb7c6f7190c3f49a2b914eed04.webp(
Lors du développement de l'exploitation de la vulnérabilité )Exp(, nous avons principalement envisagé deux solutions : exécuter du shellcode et utiliser des primitives de lecture/écriture pour modifier l'adresse du token. Compte tenu de la faisabilité, nous avons choisi cette dernière. L'ensemble du processus d'exploitation peut être divisé en deux étapes : comment exploiter la vulnérabilité UAF pour contrôler la valeur de cbwndextra, et comment réaliser des primitives de lecture/écriture stables.
![Numen exclusif : la vulnérabilité 0day de Microsoft peut renverser la partie Web3 à la fois au niveau système et physique])https://img-cdn.gateio.im/webp-social/moments-66af34ab04bec21e27be99bbe29c552a.webp(
Nous avons soigneusement conçu la disposition de la mémoire, utilisant l'objet de nom de fenêtre dans la classe de fenêtre WNDClass pour occuper l'objet de menu libéré. Grâce à des opérations spécifiques dans la fonction xxxRedrawWindow, nous avons réalisé la première écriture de données.
![Numen Exclusif : La vulnérabilité 0day de Microsoft peut renverser le jeu Web3 au niveau système + physique])https://img-cdn.gateio.im/webp-social/moments-1cc94ddafacec491507491eef9195858.webp(
Pour réaliser une disposition de mémoire stable, nous avons conçu trois objets HWND consécutifs, libérant le deuxième et utilisant un objet HWNDClass à la place. Les objets HWND à l'avant et à l'arrière sont utilisés respectivement pour effectuer des vérifications et mettre en œuvre des primitives de lecture et d'écriture. Nous avons également déterminé avec précision si l'agencement des objets correspondait aux attentes grâce à une fuite d'adresse de poignée de noyau.
![Numen Exclusif : le 0day de Microsoft peut renverser le jeu Web3 sur le plan système + physique])https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(
Dans l'implémentation de la lecture et de l'écriture des primitives, nous utilisons GetMenuBarInfo)( pour la lecture arbitraire et SetClassLongPtr)( pour l'écriture arbitraire. À part l'opération de remplacement TOKEN, toutes les autres écritures sont réalisées en utilisant l'objet de classe du premier objet fenêtre via un décalage.
![Numen Exclusif : La faille 0day de Microsoft peut renverser la partie Web3 au niveau système + physique])https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(
Bien que la vulnérabilité win32k soit ancienne, Microsoft essaie de reconstruire le code du noyau concerné en Rust, et à l'avenir, ce type de vulnérabilité pourrait être éliminé dans les nouveaux systèmes. Le processus d'exploitation de cette vulnérabilité est relativement simple, la principale difficulté résidant dans la manière de contrôler la première écriture. Cette vulnérabilité dépend fortement de la fuite d'adresse du handle de la pile de bureau, ce qui reste un risque de sécurité pour les anciens systèmes.
Nous supposons que la découverte de cette vulnérabilité pourrait être due à une détection de couverture de code plus complète. En ce qui concerne la détection des exploits, en plus de surveiller les points critiques, une détection ciblée des agencements de mémoire anormaux et des lectures et écritures de données de fenêtres pourrait également aider à détecter ce type de vulnérabilité.
![Numen Exclusif : La vulnérabilité 0day de Microsoft peut renverser la dynamique du Web3 à la fois sur le plan système et physique])https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(