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
Vulnerability AnalysisExploitationScripting & AutomationHardware Security
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 레지스터의 특정 비트(치킨 비트 DE_CFG[9])를 설정해야 합니다. Travis Ormandy가 지적한 바와 같이 다음 명령을 사용하면 Linux에서 Zenbleed를 피할 수 있습니다:

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

Windows에서 MSR 레지스터를 설정하는 것은 더 어렵습니다. 커널 수준 드라이버만 MSR 레지스터에 쓸 수 있습니다. 게다가 커널 수준 드라이버를 로드하려면 서명이 필요합니다. 그래서 우리는 OpenLibSys.org의 기존 WinRing0 드라이버를 사용하기로 결정했습니다. WinRing0을 로드하고, 드라이버에 적절한 MSR 쓰기 요청을 보낸 다음, 즉시 WinRing0 드라이버를 언로드하는 PowerShell 스크립트를 작성했습니다. 현재 우리의 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 OS 자체가 CPU 링 1에서 실행되어 커널 수준 드라이버가 MSR에 대한 쓰기 액세스 권한을 얻을 수 없습니다. 불행히도 Hyper-V를 비활성화하면 일반적으로 권장되는 두 가지 보안 조치인 Credential Guard와 Device Guard도 비활성화됩니다. 우리의 관점에서는 Zenbleed 취약점(CVE-2023-20593)을 차단하여 JavaScript를 통한 잠재적 정보 탈취 공격을 방지하는 것이(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 라이브러리와 같은 다른 오픈소스 프로그램에서도 사용하는 오픈소스 커널 수준 드라이버입니다. 문제는 드라이버가 ACL(액세스 제어 목록) 없이 디바이스 개체를 생성하여 모든 로컬 Windows 사용자가 드라이버와 통신할 수 있게 한다는 것입니다. 드라이버가 직접 하드웨어 액세스를 허용하므로 NT AUTHORITY\SYSTEM 권한으로의 권한 상승이 가능합니다. 실제 수정은 WinRing0 드라이버의 변경과 그에 따른 새로운 서명이 필요하므로 복잡합니다. OpenHardwareMonitor 라이브러리는 해결 방법으로 드라이버를 로드한 직후 액세스 권한을 수정합니다(https://github.com/openhardwaremonitor/openhardwaremonitor/commit/0e435cafc61fe84d429e8a9500d666e34e3de67b). 우리의 PowerShell 스크립트는 치킨 비트를 설정한 후 드라이버를 즉시 언로드하여 CVE-2020–14979를 우회합니다. 그러나 스크립트가 실행될 때마다 작은 시간 창의 공격 기회가 존재합니다. 치킨 비트 설정은 영구적이지 않으므로 재부팅할 때마다 스크립트를 실행해야 합니다. 우리의 위험 분석에서는 (원격으로 발생할 수 있는) Zenbleed에 대한 보호의 이점이 로컬 권한 상승의 위험보다 다시 한번 중요하다고 판단했습니다. 또한 사용자 프로세스에 의한 악용 가능성을 제한하기 위해 부팅 프로세스에서 가능한 한 빨리 스크립트를 실행할 것을 권장합니다. PowerShell 스크립트를 배포하기 전에 사용자 환경에 맞는 위험 분석을 수행하시기 바랍니다.
  • 이 소프트웨어 해결 방법은 AMD가 CPU의 버그를 수정할 때까지의 임시 해결 방법입니다.

작동하는지 어떻게 알 수 있나요?

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
도구 다운로드