Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
stop-zenbleed-win — Script PowerShell per applicare il workaround MSR di Zenbleed (CVE-2023-20593) su Windows | Kitploit
Strumenti/GitHubGitHub/sbaresearch/stop-zenbleed-win
Analisi delle VulnerabilitàExploitScripting e AutomazioneSicurezza Hardware
GitHubsbaresearch/stop-zenbleed-win

stop-zenbleed-win

Script PowerShell per applicare il workaround MSR di Zenbleed (CVE-2023-20593) su Windows

Vedi Repository
8243 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Fermare Zenbleed (CVE-2023-20593) su Windows

La vulnerabilità Zenbleed scoperta di recente (CVE-2023-20593) colpisce tutti i processori Zen2 di AMD. Purtroppo, AMD non fornirà aggiornamenti del microcodice per molti dei suoi processori fino a novembre o dicembre 2023. Come restare al sicuro nel frattempo? Fortunatamente, esiste una soluzione alternativa software. Mentre applicare la soluzione alternativa software su Linux è un comando singolo, la situazione su Windows è più complicata.

Per applicare la soluzione alternativa software, un determinato bit (il chicken bit DE_CFG[9]) deve essere impostato nel registro MSR della CPU. Come indicato da Travis Ormandy, il seguente comando può essere utilizzato per evitare Zenbleed su Linux:

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

Su Windows, impostare il registro MSR è più difficile. Solo i driver a livello kernel possono scrivere nel registro MSR. Inoltre, per caricare un driver a livello kernel, questo deve essere firmato. Ecco perché abbiamo deciso di utilizzare il driver WinRing0 esistente di OpenLibSys.org. Abbiamo scritto uno script PowerShell che carica WinRing0, invia le appropriate richieste di scrittura MSR ai driver e scarica immediatamente dopo il driver WinRing0. Attualmente, il nostro script PowerShell funziona solo quando Hyper-V è disabilitato. Il nostro script PowerShell è ospitato qui: https://github.com/sbaresearch/stop-zenbleed-win

Si prega di notare che lo script PowerShell presenta alcune avvertenze. Si prega di leggere la sezione 'Avvertenze' ed eseguire un'analisi dei rischi per il proprio ambiente specifico prima di utilizzare lo script.

Utilizzo

  • Eseguire Stop-Zenbleed.ps1 in PowerShell 5.x con permessi di amministratore
  • Lo script è pensato per essere eseguito solo su CPU AMD Zen2 affette da Zenbleed. Potrebbe causare problemi imprevisti su altri sistemi, si prega di prestare attenzione.

Avvertenze

  • È necessario disabilitare Hyper-V. Altrimenti il sistema operativo Windows stesso viene eseguito nel ring 1 della CPU e il driver a livello kernel non può ottenere l'accesso in scrittura al registro MSR. Disabilitare Hyper-V implica purtroppo la disabilitazione di Credential Guard e Device Guard, due misure di sicurezza altrimenti consigliate. A nostro avviso, evitare un potenziale attacco di furto di informazioni tramite JavaScript (lo sfruttamento di Zenbleed tramite JavaScript è almeno considerato possibile da tom's Hardware: https://www.tomshardware.com/news/zenbleed-bug-allows-data-theft-from-amds-zen-2-processors-patches-released) fermando la vulnerabilità Zenbleed (CVE-2023-20593) supera il rischio di disabilitare due misure di difesa in profondità.
  • Il driver a livello kernel WinRing0 è affetto da CVE-2020–14979, una vulnerabilità di escalation dei privilegi locale. Vedere https://posts.specterops.io/cve-2020-14979-local-privilege-escalation-in-evga-precisionx1-cf63c6b95896 e https://github.com/openhardwaremonitor/openhardwaremonitor/issues/1557. WinRing0 è un driver a livello kernel open source utilizzato anche da altri programmi open source come la libreria OpenHardwareMonitor. Il problema è che il driver crea un device object senza una lista di controllo degli accessi, consentendo così a tutti gli utenti Windows locali di comunicare con il driver. Poiché il driver consente l'accesso diretto all'hardware, è possibile un'escalation dei privilegi fino ai diritti di NT AUTHORITY\SYSTEM. Una vera correzione richiederebbe una modifica al driver WinRing0 e quindi una nuova firma, il che è complicato. La libreria OpenHardwareMonitor, come soluzione alternativa, corregge i diritti di accesso immediatamente dopo il caricamento del driver (https://github.com/openhardwaremonitor/openhardwaremonitor/commit/0e435cafc61fe84d429e8a9500d666e34e3de67b). Il nostro script PowerShell aggira CVE-2020–14979 scaricando immediatamente il driver dopo aver impostato il chicken bit. Tuttavia, esiste una piccola finestra di opportunità ogni volta che lo script viene eseguito. Poiché l'impostazione del chicken bit non è persistente, lo script deve essere eseguito a ogni riavvio. Nella nostra analisi dei rischi, i benefici di una protezione contro Zenbleed (che può avvenire da remoto) superano ancora i rischi di un'escalation dei privilegi locale. Inoltre, consigliamo di eseguire lo script il prima possibile durante il processo di avvio per limitare la sfruttabilità da parte dei processi utente. Si prega di effettuare un'analisi dei rischi per il proprio ambiente specifico prima di distribuire lo script PowerShell.
  • Questa soluzione alternativa software è intesa come soluzione temporanea fino a quando AMD non correggerà il bug nelle proprie CPU.

Come faccio a sapere che funziona?

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

Dopo aver eseguito il nostro script PowerShell, l'exploit POC non dovrebbe produrre più alcun output.

Copyright

  • Stop-Zenbleed.ps1 è fornito sotto licenza GNU GPL v3.0: LICENSE
  • WinRing0 è © 2007-2009 OpenLibSys.org e fornito secondo i seguenti termini: WinRing0/LICENSE
Scarica lo strumento