Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
stop-zenbleed-win — PowerShell-Skript zur Anwendung des Zenbleed (CVE-2023-20593) MSR-Workarounds unter Windows | Kitploit
Tools/GitHubGitHub/sbaresearch/stop-zenbleed-win
SchwachstellenanalyseExploitationScripting & AutomatisierungHardware-Sicherheit
GitHubsbaresearch/stop-zenbleed-win

stop-zenbleed-win

PowerShell-Skript zur Anwendung des Zenbleed (CVE-2023-20593) MSR-Workarounds unter Windows

Repository anzeigen
82vor 3 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Beenden von Zenbleed (CVE-2023-20593) unter Windows

Die kürzlich entdeckte Zenbleed-Schwachstelle (CVE-2023-20593) betrifft alle Zen2-Prozessoren von AMD. Leider wird AMD bis November oder Dezember 2023 keine Mikrocode-Updates für viele seiner Prozessoren bereitstellen. Wie kann man in der Zwischenzeit sicher bleiben? Glücklicherweise gibt es einen Software-Workaround. Während das Anwenden des Software-Workarounds unter Linux eine einzige Zeile ist, gestaltet sich die Sache unter Windows komplizierter.

Um den Software-Workaround anzuwenden, muss ein bestimmtes Bit (das Chicken-Bit DE_CFG[9]) im MSR-CPU-Register gesetzt werden. Wie von Travis Ormandy hervorgehoben, kann der folgende Befehl verwendet werden, um Zenbleed unter Linux zu vermeiden:

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

Unter Windows ist das Setzen des MSR-Registers schwieriger. Nur Kernel-Level-Treiber dürfen auf das MSR-Register schreiben. Darüber hinaus muss ein Kernel-Level-Treiber signiert sein, um geladen zu werden. Aus diesem Grund haben wir uns entschieden, den vorhandenen WinRing0-Treiber von OpenLibSys.org zu verwenden. Wir haben ein PowerShell-Skript geschrieben, das WinRing0 lädt, die entsprechenden MSR-Schreibanforderungen an die Treiber sendet und den WinRing0-Treiber sofort danach entlädt. Derzeit funktioniert unser PowerShell-Skript nur, wenn Hyper-V deaktiviert ist. Unser PowerShell-Skript wird hier gehostet: https://github.com/sbaresearch/stop-zenbleed-win

Bitte beachten Sie, dass das PowerShell-Skript einige Einschränkungen mit sich bringt. Bitte lesen Sie den Abschnitt 'Einschränkungen' und führen Sie eine Risikoanalyse für Ihre spezifische Umgebung durch, bevor Sie das Skript verwenden.

Verwendung

  • Führen Sie Stop-Zenbleed.ps1 in einer PowerShell 5.x mit Administratorrechten aus.
  • Das Skript erwartet, nur auf von Zenbleed betroffenen AMD Zen2-CPUs ausgeführt zu werden. Es könnte auf anderen Systemen unerwartete Probleme verursachen, seien Sie vorsichtig.

Einschränkungen

  • Sie müssen Hyper-V deaktivieren. Andernfalls läuft das Windows-Betriebssystem selbst im CPU-Ring 1 und der Kernel-Level-Treiber kann keinen Schreibzugriff auf das MSR erhalten. Das Deaktivieren von Hyper-V bedeutet leider auch das Deaktivieren von Credential Guard und Device Guard, zwei ansonsten empfohlenen Sicherheitsmaßnahmen. Unserer Ansicht nach wiegt die Vermeidung eines potenziellen Informationsdiebstahlangriffs über JavaScript (Die Ausnutzung von Zenbleed über JavaScript wird zumindest von Tom's Hardware als möglich angesehen: https://www.tomshardware.com/news/zenbleed-bug-allows-data-theft-from-amds-zen-2-processors-patches-released) durch das Beenden der Zenbleed-Schwachstelle (CVE-2023-20593) das Risiko der Deaktivierung von zwei Defense-in-Depth-Maßnahmen auf.
  • Der WinRing0-Kernel-Level-Treiber leidet unter CVE-2020–14979, einer lokalen Privilegieneskalations-Schwachstelle. Siehe https://posts.specterops.io/cve-2020-14979-local-privilege-escalation-in-evga-precisionx1-cf63c6b95896 und https://github.com/openhardwaremonitor/openhardwaremonitor/issues/1557. WinRing0 ist ein Open-Source-Kernel-Level-Treiber, der auch von anderen Open-Source-Programmen wie der OpenHardwareMonitor-Bibliothek verwendet wird. Das Problem ist, dass der Treiber ein Geräteobjekt ohne Zugriffskontrollliste erstellt und damit allen lokalen Windows-Benutzern die Kommunikation mit dem Treiber ermöglicht. Da der Treiber direkten Hardwarezugriff erlaubt, ist eine Privilegieneskalation zu NT AUTHORITY\SYSTEM-Rechten möglich. Eine echte Behebung würde eine Änderung im WinRing0-Treiber und damit eine neue Signatur erfordern, was kompliziert ist. Die OpenHardwareMonitor-Bibliothek behebt als Workaround die Zugriffsrechte unmittelbar nach dem Laden des Treibers (https://github.com/openhardwaremonitor/openhardwaremonitor/commit/0e435cafc61fe84d429e8a9500d666e34e3de67b). Unser PowerShell-Skript umgeht CVE-2020–14979, indem es den Treiber sofort nach dem Setzen des Chicken-Bits entlädt. Es besteht jedoch jedes Mal, wenn das Skript ausgeführt wird, ein kleines Zeitfenster der Angreifbarkeit. Da das Setzen des Chicken-Bits nicht persistent ist, muss das Skript bei jedem Neustart ausgeführt werden. In unserer Risikoanalyse überwiegen die Vorteile des Schutzes vor Zenbleed (das aus der Ferne geschehen kann) erneut die Risiken einer lokalen Privilegieneskalation. Darüber hinaus empfehlen wir, das Skript so früh wie möglich im Startvorgang auszuführen, um die Ausbeutbarkeit durch Benutzerprozesse einzuschränken. Bitte führen Sie eine Risikoanalyse für Ihre spezifische Umgebung durch, bevor Sie das PowerShell-Skript einsetzen.

Woran erkenne ich, dass es funktioniert?

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

Nach Ausführung unseres PowerShell-Skripts sollte der POC-Exploit keine weiteren Ausgaben mehr erzeugen.

Urheberrecht

  • Stop-Zenbleed.ps1 wird unter der GNU GPL v3.0-Lizenz bereitgestellt: LICENSE
  • WinRing0 ist © 2007-2009 OpenLibSys.org und wird unter den folgenden Bedingungen bereitgestellt: WinRing0/LICENSE
Tool herunterladen
  • Dieser Software-Workaround ist als vorübergehender Workaround gedacht, bis AMD den Fehler in seinen CPUs behebt.