Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
stop-zenbleed-win — Скрипт PowerShell для применения обходного решения MSR для Zenbleed (CVE-2023-20593) в Windows | Kitploit
Инструменты/GitHubGitHub/sbaresearch/stop-zenbleed-win
Анализ уязвимостейЭксплуатацияСкриптинг и автоматизацияАппаратная Безопасность
GitHubsbaresearch/stop-zenbleed-win

stop-zenbleed-win

Скрипт PowerShell для применения обходного решения MSR для Zenbleed (CVE-2023-20593) в Windows

Репозиторий
823 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Остановка Zenbleed (CVE-2023-20593) в Windows

Недавно обнаруженная уязвимость Zenbleed (CVE-2023-20593) затрагивает все процессоры AMD Zen2. К сожалению, AMD не предоставит обновления микрокода для многих своих процессоров до ноября или декабря 2023 года. Как оставаться в безопасности в промежутке? К счастью, существует программный обходной путь. Хотя применение программного обходного пути в Linux — это одна команда, в Windows дела обстоят сложнее.

Для применения программного обходного пути необходимо установить определённый бит (chicken bit DE_CFG[9]) в регистре CPU MSR. Как указал Трэвис Орманди, следующая команда может использоваться для предотвращения Zenbleed в Linux:

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

В Windows установка регистра MSR более сложна. Только драйверы уровня ядра имеют право записывать в регистр MSR. Кроме того, для загрузки драйвера уровня ядра он должен быть подписан. Именно поэтому мы решили использовать существующий драйвер WinRing0 от OpenLibSys.org. Мы написали PowerShell-скрипт, который загружает WinRing0, отправляет соответствующие запросы на запись в MSR драйверам и сразу после этого выгружает драйвер WinRing0. В настоящее время наш PowerShell-скрипт работает только при отключённом Hyper-V. Наш PowerShell-скрипт размещён здесь: https://github.com/sbaresearch/stop-zenbleed-win

Обратите внимание, что PowerShell-скрипт имеет ряд предостережений. Пожалуйста, прочитайте раздел «Предостережения» и проведите анализ рисков для вашего конкретного окружения перед использованием скрипта.

Использование

  • Запустите Stop-Zenbleed.ps1 в PowerShell 5.x с правами администратора
  • Скрипт предназначен для запуска только на затронутых Zenbleed процессорах AMD Zen2. На других системах он может вызвать непредвиденные проблемы, пожалуйста, будьте осторожны.

Предостережения

  • Вам необходимо отключить Hyper-V. В противном случае сама ОС Windows работает в ring 1 CPU, и драйвер уровня ядра не может получить доступ на запись к MSR. Отключение Hyper-V, к сожалению, подразумевает отключение Credential Guard и Device Guard, двух в остальном рекомендуемых мер безопасности. По нашему мнению, предотвращение потенциальной атаки с кражей информации через JavaScript (возможность эксплуатации Zenbleed через JavaScript по крайней мере рассматривается как реальная изданием tom's Hardware: https://www.tomshardware.com/news/zenbleed-bug-allows-data-theft-from-amds-zen-2-processors-patches-released) путём устранения уязвимости Zenbleed (CVE-2023-20593) перевешивает риск отключения двух мер эшелонированной защиты.
  • Драйвер уровня ядра 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-скрипт обходит CVE-2020–14979, немедленно выгружая драйвер после установки chicken bit. Однако при каждом выполнении скрипта существует небольшое временное окно для атаки. Поскольку установка chicken bit не сохраняется, скрипт необходимо запускать при каждой перезагрузке. В нашем анализе рисков преимущества защиты от Zenbleed (которая может произойти удалённо) снова перевешивают риски локального повышения привилегий. Кроме того, мы рекомендуем запускать скрипт как можно раньше в процессе загрузки, чтобы ограничить возможность эксплуатации пользовательскими процессами. Пожалуйста, проведите анализ рисков для вашего конкретного окружения перед развёртыванием PowerShell-скрипта.

Как узнать, что это работает?

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
Скачать инструмент
  • Этот программный обходной путь предназначен как временное решение до тех пор, пока AMD не исправит ошибку в своих процессорах.