研究工具,通过虚拟地址到物理地址的转换结合脆弱驱动程序利用,演示物理内存访问。
本项目探索了底层 Windows 内存管理,结合 superfetch 技术进行地址转换和基于 IOCTL 的物理内存访问。旨在理解内核模式/用户模式交互以及内存子系统内部机制。
CVE ID: CVE-2025-7771
组件: ThrottleStop.sys(来自 TechPowerUp LLC 的已签名驱动)
受影响版本: ThrottleStop 3.0.0.0 及可能其他版本
漏洞类型: 暴露的 IOCTL 且访问控制不足(CWE-782)
CVSS 评分: 8.7(高危) – 卡巴斯基实验室
影响: 本地权限提升(LPE)
ThrottleStop.sys 驱动程序暴露了两个 IOCTL 处理程序,通过 MmMapIoSpace 允许完全任意的物理内存读写操作。这些接口没有验证检查、边界限制或访问控制。任何用户模式应用程序都可以指定任意物理地址并读写任意数据。
这种无限制的访问使得以下操作成为可能:
任意访问的性质意味着攻击者对物理内存拥有完全控制权,不受驱动程序施加的任何限制。
利用遵循以下模式:
\\.\ThrottleStop 设备对象的句柄NtQuerySystemInformation 定位内核基址MmMapIoSpace 发送 IOCTL 命令对物理内存进行读写现实世界中的恶意软件已利用此漏洞,通过修补 NtAddAtom 等内核函数来劫持执行流,从而禁用安全产品。
本项目出于教育目的,演示了此类攻击链的技术组成部分:
Superfetch 集成 – 使用 SystemSuperfetchInformation 将内核虚拟地址转换为物理地址
驱动接口 – 通过 DeviceIoControl 与脆弱驱动通信以进行物理内存操作
// 获取用于地址转换的内存映射
auto mm = spf::memory_map::current();
// 将内核虚拟地址转换为物理地址
void* virt = reinterpret_cast<void*>(0xFFFFF80000001000);
std::uint64_t phys = mm->translate(virt);
// 通过驱动访问物理内存
ULONG64 value = Driver.ReadPhysical<ULONG64>(phys);
仅用于教育和研究目的。 未经授权访问计算机系统是违法行为。此代码演示了已知漏洞,用于防御性安全研究。
MIT 许可证