Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
stop-zenbleed-win — Script PowerShell pour appliquer le correctif MSR de Zenbleed (CVE-2023-20593) sur Windows | Kitploit
Outils/GitHubGitHub/sbaresearch/stop-zenbleed-win
Analyse des VulnérabilitésExploitationScripting et AutomatisationSécurité Matérielle
GitHubsbaresearch/stop-zenbleed-win

stop-zenbleed-win

Script PowerShell pour appliquer le correctif MSR de Zenbleed (CVE-2023-20593) sur Windows

Voir le dépôt
82il y a 3 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Stopper Zenbleed (CVE-2023-20593) sur Windows

La vulnérabilité Zenbleed récemment découverte (CVE-2023-20593) affecte tous les processeurs Zen2 d'AMD. Malheureusement, AMD ne fournira pas de mises à jour du microcode pour bon nombre de ses processeurs avant novembre ou décembre 2023. Comment rester en sécurité en attendant ? Heureusement, il existe un correctif logiciel. Alors que l'application du correctif logiciel se fait en une ligne sous Linux, les choses sont plus compliquées sous Windows.

Pour appliquer le correctif logiciel, un certain bit (le chicken bit DE_CFG[9]) doit être défini dans le registre MSR du CPU. Comme l'a souligné Travis Ormandy, la commande suivante peut être utilisée pour éviter Zenbleed sous Linux :

root@kitploit:~
# wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))

Sous Windows, la configuration du registre MSR est plus difficile. Seuls les pilotes au niveau du noyau sont autorisés à écrire dans le registre MSR. De plus, pour charger un pilote au niveau du noyau, il doit être signé. C'est pourquoi nous avons décidé d'utiliser le pilote WinRing0 existant d'OpenLibSys.org. Nous avons écrit un script PowerShell qui charge WinRing0, envoie les requêtes d'écriture MSR appropriées au pilote et décharge immédiatement le pilote WinRing0 après. Actuellement, notre script PowerShell ne fonctionne que lorsque Hyper-V est désactivé. Notre script PowerShell est hébergé ici : https://github.com/sbaresearch/stop-zenbleed-win

Veuillez noter que le script PowerShell comporte quelques mises en garde. Veuillez lire la section 'mises en garde' et effectuer une analyse des risques pour votre environnement spécifique avant d'utiliser le script.

Usage

  • Exécutez Stop-Zenbleed.ps1 dans PowerShell 5.x avec des permissions administrateur
  • Le script est conçu pour fonctionner uniquement sur les CPU AMD Zen2 affectés par Zenbleed. Il pourrait causer des problèmes inattendus sur d'autres systèmes, soyez prudent.

Mises en garde

  • Vous devez désactiver Hyper-V. Sinon, le système d'exploitation Windows lui-même s'exécute dans l'anneau CPU 1 et le pilote au niveau du noyau ne peut pas obtenir l'accès en écriture au MSR. La désactivation d'Hyper-V implique malheureusement la désactivation de Credential Guard et Device Guard, deux mesures de sécurité autrement recommandées. À notre avis, éviter une éventuelle attaque de vol d'informations via JavaScript (l'exploitation de Zenbleed via JavaScript est au moins considérée comme possible par tom's Hardware : https://www.tomshardware.com/news/zenbleed-bug-allows-data-theft-from-amds-zen-2-processors-patches-released) en stoppant la vulnérabilité Zenbleed (CVE-2023-20593) l'emporte sur le risque de désactiver deux mesures de défense en profondeur.
  • Le pilote au niveau du noyau WinRing0 souffre de CVE-2020-14979, une vulnérabilité d'escalade de privilèges locale. Voir https://posts.specterops.io/cve-2020-14979-local-privilege-escalation-in-evga-precisionx1-cf63c6b95896 et https://github.com/openhardwaremonitor/openhardwaremonitor/issues/1557. WinRing0 est un pilote open source au niveau du noyau qui est également utilisé par d'autres programmes open source tels que la bibliothèque OpenHardwareMonitor. Le problème est que le pilote crée un objet de périphérique sans liste de contrôle d'accès, permettant ainsi à tous les utilisateurs Windows locaux de communiquer avec le pilote. Étant donné que le pilote permet un accès direct au matériel, une escalade de privilèges vers les droits NT AUTHORITY\SYSTEM est possible. Une correction réelle nécessiterait une modification du pilote WinRing0 et donc une nouvelle signature, ce qui est compliqué. La bibliothèque OpenHardwareMonitor, en tant que solution de contournement, corrige les droits d'accès immédiatement après le chargement du pilote (https://github.com/openhardwaremonitor/openhardwaremonitor/commit/0e435cafc61fe84d429e8a9500d666e34e3de67b). Notre script PowerShell contourne CVE-2020-14979 en déchargeant immédiatement le pilote après avoir défini le chicken bit. Cependant, une petite fenêtre d'opportunité existe à chaque exécution du script. Étant donné que la définition du chicken bit n'est pas persistante, le script doit être exécuté à chaque redémarrage. Dans notre analyse des risques, les avantages d'une protection contre Zenbleed (qui peut se produire à distance) l'emportent à nouveau sur les risques d'une escalade de privilèges locale. De plus, nous recommandons d'exécuter le script le plus tôt possible dans le processus de démarrage pour limiter l'exploitabilité par les processus utilisateur. Veuillez effectuer une analyse des risques pour votre environnement spécifique avant de déployer le script PowerShell.

Comment savoir si ça marche ?

root@kitploit:~
PS C:\stop-zenbleed-win> powershell -ExecutionPolicy RemoteSigned .\Stop-Zenbleed.ps1
[>] Installing driver...
[SC] CreateService SUCCESS

[>] Starting driver...

SERVICE_NAME: WinRing0_1_2_0
        TYPE               : 1  KERNEL_DRIVER
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 0
        FLAGS              :

[>] Opening driver...
[+] Driver access OK, handle: 2456

[>] Try 1 to apply fix on processor 1
[+] Fix is applied on processor 1 (MSR 0xC0011029=0x300C310E08202)
[+] Fix is applied on processor 2 (MSR 0xC0011029=0x300C310E08203)
[>] Try 1 to apply fix on processor 3
[+] Fix is applied on processor 3 (MSR 0xC0011029=0x3004310E08202)
[+] Fix is applied on processor 4 (MSR 0xC0011029=0x300C310E08203)
[>] Try 1 to apply fix on processor 5
[+] Fix is applied on processor 5 (MSR 0xC0011029=0x300C310E08202)
[+] Fix is applied on processor 6 (MSR 0xC0011029=0x300C310E08203)
[>] Try 1 to apply fix on processor 7
[+] Fix is applied on processor 7 (MSR 0xC0011029=0x300C310E08202)
[+] Fix is applied on processor 8 (MSR 0xC0011029=0x300C310E08203)
[>] Try 1 to apply fix on processor 9
[+] Fix is applied on processor 9 (MSR 0xC0011029=0x300C310E08202)
[+] Fix is applied on processor 10 (MSR 0xC0011029=0x300C310E08203)
[>] Try 1 to apply fix on processor 11
[+] Fix is applied on processor 11 (MSR 0xC0011029=0x300C310E08202)
[+] Fix is applied on processor 12 (MSR 0xC0011029=0x300C310E08203)
[>] Try 1 to apply fix on processor 13
[+] Fix is applied on processor 13 (MSR 0xC0011029=0x300C310E08202)
[+] Fix is applied on processor 14 (MSR 0xC0011029=0x300C310E08203)
[>] Try 1 to apply fix on processor 15
[+] Fix is applied on processor 15 (MSR 0xC0011029=0x300C310E08202)
[+] Fix is applied on processor 16 (MSR 0xC0011029=0x300C310E08203)

[>] Closing driver...

[>] Stopping driver...

SERVICE_NAME: WinRing0_1_2_0
        TYPE               : 1  KERNEL_DRIVER
        STATE              : 1  STOPPED
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

[>] Uninstalling driver...
[SC] DeleteService SUCCESS

Après avoir exécuté notre script PowerShell, l'exploit POC ne devrait plus produire de sortie.

Copyright

  • Stop-Zenbleed.ps1 est fourni sous la licence GNU GPL v3.0 : LICENSE
  • WinRing0 est © 2007-2009 OpenLibSys.org et fourni sous les termes suivants : WinRing0/LICENSE
Télécharger l’outil
  • Ce correctif logiciel est destiné à être une solution temporaire jusqu'à ce qu'AMD corrige le bogue dans ses CPU.