Ядро Windows как на ладони — Prefetch Side-Channel вскрывает систему безо всяких привилегий

Ядро Windows как на ладони — Prefetch Side-Channel вскрывает систему безо всяких привилегий

Системная безопасность отступает, когда адрес ядра можно найти, просто спросив кеш.

image

Исследователи безопасности продемонстрировали метод обхода механизма KASLR — одного из ключевых уровней защиты ядра — на полностью обновлённых системах Windows 11. Эта атака основана на использовании анализа боковых каналов с применением временных характеристик кеша процессора, позволяя без привилегий определить точный адрес загрузки «ntoskrnl.exe» — главного исполняемого модуля ядра Windows.

Технология Kernel Address Space Layout Randomization (KASLR) внедрена Microsoft для защиты от атак, связанных с прямым доступом к ядру. Она рандомизирует адрес загрузки компонентов ядра, затрудняя предсказание структуры памяти и, соответственно, реализацию эксплойтов. Однако новый подход демонстрирует, что даже без системных прав можно обойти этот механизм с пугающей точностью.

Ключом к атаке стала техника Prefetch Side-Channel, впервые описанная на форуме exploits-forsale. Метод задействует спекулятивное исполнение инструкций — архитектурную особенность современных процессоров Intel, при которой команды обрабатываются заранее ради ускорения, но оставляют следы в кешах CPU. Эти следы позволяют злоумышленникам сделать выводы о том, какие адреса памяти использовались системой чаще всего, в том числе об адресе загрузки ядра.

Атака реализуется с помощью инструкций prefetchnta и prefetcht2, принуждающих процессор загрузить заданные адреса в кеш первого, второго или третьего уровней. Затем с помощью точного измерения времени доступа через rdtscp производится анализ: если адрес загружен в кеш, время отклика ниже. Повторяя эту операцию на диапазоне из 32 768 возможных адресов, атака выявляет ту область, которая чаще всего оказывается закешированной — то есть место, где загружено ядро.

Дополнительно, чтобы повысить точность, атакующие используют усреднение времени отклика, отсекая шум с помощью математических порогов. При этом применяются инструкции mfence и lfence, блокирующие оптимизации компилятора и архитектуры, способные исказить тайминги. Такая комплексная работа с кешем и предсказанием выполнения делает атаку технически сложной, но при этом воспроизводимой.

Ранее мы писали о том, что исследователи из ETH Zurich обнаружили уязвимость Branch Privilege Injection ( CVE-2024-45332 ), позволяющую извлекать чувствительные данные из ядра за счёт ошибок в работе предсказателя переходов. В отличие от этой атаки, направленной на чтение содержимого защищённой памяти, метод Prefetch Side-Channel позволяет вычислить базовый адрес ядра Windows. Обе техники задействуют спекулятивное выполнение и уязвимости в архитектуре Intel, но различаются по целям: одна раскрывает расположение ядра, другая — его содержимое.

Особый интерес к Prefetch Side-Channel вызывает то, что эта методика позволяет обойти ограничения, введённые Microsoft в обновлении 24H2, в частности, ограничения на использование NtQuerySystemInformation. В результате теперь даже без SeDebugPrivilege возможно получить данные, которые ранее считались недоступными в рамках защиты KASLR.

Однако стоит отметить, что в виртуализированных средах, таких как VMware, атака теряет свою эффективность. Это связано с использованием SLAT — технологии второго уровня адресации, которая искажает поведение кеша и разрушает корреляцию между доступами и таймингом.

Хотя пока нет информации о практическом применении этого метода в атаках, сам факт его существования указывает на уязвимость в архитектуре современных CPU и необходимости более глубокой интеграции защиты между оборудованием и ОС. Эта находка — очередное напоминание о не прекращающейся гонке между создателями защитных механизмов и исследователями уязвимостей.

Пора переводить «эксплойт» на язык бизнеса.

PHDays Fest — это площадка, где CISO учатся доносить риски так, чтобы топы услышали и поняли.

*Фест. Реклама. АО «Позитив Текнолоджиз», ИНН 7718668887