
ThrottleStop.sys (CVE-2025-7771)를 이용한 임의 물리 메모리 읽기/쓰기 익스플로잇 (superfetch 주소 변환 포함) - Windows 커널 보안 연구
취약한 드라이버 악용과 결합된 가상-물리 주소 변환을 통해 물리 메모리 접근을 시연하는 연구 도구입니다.
이 프로젝트는 주소 변환을 위한 superfetch 기술과 IOCTL 기반 물리 메모리 접근을 결합하여 저수준 Windows 메모리 관리를 탐구합니다. 커널 모드/사용자 모드 상호 작용 및 메모리 서브시스템 내부를 이해하기 위해 제작되었습니다.
CVE ID: CVE-2025-7771
구성 요소: ThrottleStop.sys (TechPowerUp LLC의 서명된 드라이버)
영향을 받는 버전: ThrottleStop 3.0.0.0 및 잠재적으로 다른 버전
취약점 유형: 불충분한 접근 제어로 인한 노출된 IOCTL (CWE-782)
CVSS 점수: 8.7 (높음) – Kaspersky Labs
영향: 로컬 권한 상승 (LPE)
ThrottleStop.sys 드라이버는 MmMapIoSpace를 통해 완전히 임의의 물리 메모리 읽기 및 쓰기 작업을 허용하는 두 개의 IOCTL 핸들러를 노출합니다. 이러한 인터페이스에는 유효성 검사, 경계 제한 또는 접근 제어가 없습니다. 모든 사용자 모드 애플리케이션이 임의의 물리 주소를 지정하고 임의의 데이터를 읽거나 쓸 수 있습니다.
이러한 제한 없는 접근을 통해 다음이 가능합니다:
접근의 임의성은 공격자가 드라이버에 의해 부과된 제한 없이 물리 메모리에 대한 완전한 제어권을 가짐을 의미합니다.
익스플로잇은 다음 패턴을 따릅니다:
\\.\ThrottleStop 디바이스 객체 핸들 열기NtQuerySystemInformation을 사용하여 커널 베이스 주소 찾기MmMapIoSpace를 통해 물리 메모리 읽기/쓰기를 위한 IOCTL 명령 실행실제 악성코드는 이 취약점을 악용하여 NtAddAtom과 같은 커널 함수를 패치하여 실행 흐름을 가로챔으로써 보안 제품을 비활성화했습니다.
이 프로젝트는 교육 목적으로 이러한 공격 체인의 기술적 구성 요소를 시연합니다:
Superfetch 통합 – SystemSuperfetchInformation을 사용하여 커널 가상 주소를 물리 주소로 변환
드라이버 인터페이스 – 물리 메모리 작업을 위해 DeviceIoControl을 통해 취약한 드라이버와 통신
// Acquire memory map for translation
auto mm = spf::memory_map::current();
// Translate virtual kernel address to physical
void* virt = reinterpret_cast<void*>(0xFFFFF80000001000);
std::uint64_t phys = mm->translate(virt);
// Access physical memory through driver
ULONG64 value = Driver.ReadPhysical<ULONG64>(phys);
교육 및 연구 목적으로만 사용하십시오. 컴퓨터 시스템에 대한 무단 액세스는 불법입니다. 이 코드는 방어적 보안 연구를 위해 문서화된 취약점을 시연합니다.
MIT License