
Эксплуатация произвольного чтения/записи физической памяти с использованием ThrottleStop.sys (CVE-2025-7771) с трансляцией адресов Superfetch — исследование безопасности ядра Windows
Исследовательский инструмент, демонстрирующий доступ к физической памяти через трансляцию виртуальных адресов в физические в сочетании с эксплуатацией уязвимого драйвера.
Этот проект исследует низкоуровневое управление памятью Windows, объединяя технику superfetch для трансляции адресов с доступом к физической памяти на основе IOCTL. Создан для понимания взаимодействия режима ядра/пользовательского режима и внутренних механизмов подсистемы памяти.
Идентификатор CVE: CVE-2025-7771
Компонент: ThrottleStop.sys (подписанный драйвер от TechPowerUp LLC)
Затронутая версия: ThrottleStop 3.0.0.0 и, возможно, другие
Тип уязвимости: Открытый IOCTL с недостаточным контролем доступа (CWE-782)
Оценка CVSS: 8.7 (Высокий) – Лаборатория Касперского
Влияние: локальное повышение привилегий (LPE)
Драйвер ThrottleStop.sys предоставляет два обработчика IOCTL, которые позволяют выполнять полностью произвольные операции чтения и записи физической памяти через MmMapIoSpace. На этих интерфейсах нет проверок валидации, ограничений по границам или контроля доступа. Любое приложение в пользовательском режиме может указать любой физический адрес и читать или записывать произвольные данные.
Этот неограниченный доступ позволяет:
Произвольный характер доступа означает, что атакующий получает полный контроль над физической памятью без каких-либо ограничений со стороны драйвера.
Эксплуатация следует следующей схеме:
\\.\ThrottleStopNtQuerySystemInformation для определения базового адреса ядраMmMapIoSpaceРеальное вредоносное ПО использовало эту уязвимость для отключения продуктов безопасности путем патча функций ядра, таких как 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