Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
stop-zenbleed-win — 用于在Windows上应用Zenbleed (CVE-2023-20593) MSR缓解措施的PowerShell脚本 | Kitploit
工具/GitHubGitHub/sbaresearch/stop-zenbleed-win
漏洞分析漏洞利用脚本与自动化硬件安全
GitHubsbaresearch/stop-zenbleed-win

stop-zenbleed-win

用于在Windows上应用Zenbleed (CVE-2023-20593) MSR缓解措施的PowerShell脚本

查看仓库
823年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

在 Windows 上阻止 Zenbleed(CVE-2023-20593)

新发现的 Zenbleed 漏洞(CVE-2023-20593)影响所有 AMD Zen2 处理器。
不幸的是,AMD 要到 2023 年 11 月或 12 月才会为其许多处理器提供微码更新。
在此期间如何保持安全?
幸运的是,存在一种软件规避方案。
虽然在 Linux 上应用软件规避方案只需一行命令,但在 Windows 上情况更为复杂。

要应用软件规避方案,需要在 MSR CPU 寄存器中设置一个特定的位(chicken bit DE_CFG[9])。
正如 Travis Ormandy 指出的,以下命令可用于在 Linux 上避免 Zenbleed:

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

在 Windows 下,设置 MSR 寄存器更加困难。
只有内核级驱动程序才允许写入 MSR 寄存器。
此外,要加载内核级驱动程序,它必须经过签名。
这就是我们决定使用 OpenLibSys.org 现有的 WinRing0 驱动程序的原因。
我们编写了一个 PowerShell 脚本,加载 WinRing0,向驱动程序发送适当的 MSR 写入请求,然后立即卸载 WinRing0 驱动程序。
目前,我们的 PowerShell 脚本仅在禁用 Hyper-V 时有效。
我们的 PowerShell 脚本托管在此:https://github.com/sbaresearch/stop-zenbleed-win

请注意,PowerShell 脚本确实附带一些注意事项。
在使用脚本之前,请阅读“注意事项”部分,并针对您的特定环境进行风险评估。

用法

  • 以管理员权限在 PowerShell 5.x 中运行 Stop-Zenbleed.ps1
  • 该脚本预期仅在受 Zenbleed 影响的 AMD Zen2 CPU 上运行。
    在其他系统上可能导致意外问题,请小心谨慎。

注意事项

  • 您需要禁用 Hyper-V。
    否则,Windows 操作系统本身将在 CPU ring 1 中运行,内核级驱动程序无法获取对 MSR 的写入权限。
    禁用 Hyper-V 不幸意味着禁用 Credential Guard 和 Device Guard,这是两项原本推荐的安全措施。
    我们认为,通过阻止 Zenbleed 漏洞(CVE-2023-20593)来避免潜在的信息窃取攻击(通过 JavaScript 利用 Zenbleed 至少被 tom's Hardware 认为是可能的:https://www.tomshardware.com/news/zenbleed-bug-allows-data-theft-from-amds-zen-2-processors-patches-released)的好处大于禁用两项纵深防御措施的风险。
  • WinRing0 内核级驱动程序存在 CVE-2020–14979,这是一个本地权限提升漏洞。
    参见 https://posts.specterops.io/cve-2020-14979-local-privilege-escalation-in-evga-precisionx1-cf63c6b95896 和 https://github.com/openhardwaremonitor/openhardwaremonitor/issues/1557。
    WinRing0 是一个开源的内核级驱动程序,也被其他开源程序使用,例如 OpenHardwareMonitor 库。
    问题在于驱动程序创建了一个没有访问控制列表的设备对象,从而允许所有本地 Windows 用户与该驱动程序通信。
    由于驱动程序允许直接硬件访问,因此可能发生权限提升到 NT AUTHORITY\SYSTEM 权限。
    真正的修复需要更改 WinRing0 驱动程序并进行新的签名,这很复杂。
    OpenHardwareMonitor 库作为一种规避方案,在加载驱动程序后立即修复访问权限(https://github.com/openhardwaremonitor/openhardwaremonitor/commit/0e435cafc61fe84d429e8a9500d666e34e3de67b)。
    我们的 PowerShell 脚本通过在设置 chicken bit 后立即卸载驱动程序来绕过 CVE-2020–14979。
    然而,每次执行脚本时都存在一个短暂的时间窗口。
    由于设置 chicken bit 不是持久性的,因此每次重启后都必须执行该脚本。
    在我们的风险分析中,针对 Zenbleed(可以远程发生)的保护的好处再次超过了本地权限提升的风险。
    此外,我们建议在启动过程中尽早运行脚本,以限制用户进程的可利用性。
    在部署 PowerShell 脚本之前,请针对您的特定环境进行风险评估。
  • 此软件规避方案旨在作为临时解决方案,直到 AMD 修复其 CPU 中的 bug。

如何判断它是否有效?

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

执行我们的 PowerShell 脚本后,POC 利用程序应该不再产生任何输出。

版权

  • Stop-Zenbleed.ps1 根据 GNU GPL v3.0 许可证提供:LICENSE
  • WinRing0 © 2007-2009 OpenLibSys.org,根据以下条款提供:WinRing0/LICENSE
下载工具