Аппаратно-принудительная защита стека в режиме ядра — это функция безопасности, представленная в Windows 11 22H2, которая защищает системы от различных атак на память, таких как переполнение буфера стека.
Корпорация Майкрософт добавила эту функцию в Windows 11 22H2 как часть обновления Microsoft Defender в апреле 2023 года.
Когда она включена, аппаратно-принудительная защита стека в режиме ядра повысит безопасность Windows за счет использования аппаратного обеспечения для принудительной защиты стека, что затруднит злоумышленникам использование уязвимостей.
Что такое аппаратно-принудительная защита стека в режиме ядра?
Аппаратно-принудительная защита стека в режиме ядра Windows — это функция безопасности, которая в первую очередь защищает от атак переполнения буфера стека, когда злоумышленник пытается запустить выполнение произвольного кода путем переполнения буфера (хранилища временной памяти) в стеке (структура данных, используемая для хранения вызовов функций программы и локальных переменных).
Во время этих атак злоумышленник пытается перезаписать адрес возврата или управляющие данные, чтобы перенаправить выполнение программы на запуск вредоносного кода по выбору злоумышленника.
Метод перезаписи адреса возврата или управляющих данных для перенаправления потока выполнения программы известен как атака с обратным программированием (ROP).
Для работы функции аппаратно-принудительной защиты стека в режиме ядра Windows требуется специальный аппаратный временный стек, называемый теневыми стеками.
Теневой стек — это стек временной памяти, который отражает стандартный стек, используемый операционной системой, и стек не может быть изменен приложениями, работающими в Windows.
Эти теневые стеки используются следующим образом:
- При вызове функции программы адрес возврата сохраняется как в обычном, так и в теневом стеке.
- Когда функция возвращается, функция аппаратно-принудительной защиты стека проверяет, совпадает ли адрес возврата из основного стека с адресом, хранящимся в теневом стеке.
- Если адреса возврата совпадают, функция возвращает ожидаемый результат, и выполнение программы продолжается в обычном режиме.
- Однако, если адреса возврата не совпадают, это может указывать на атаку, такую как переполнение буфера стека или ROP-атака. Когда это произойдет, Windows завершит процесс, чтобы предотвратить выполнение вредоносного кода.
Используя теневые стеки, функция аппаратно-принудительной защиты стека может смягчать атаки, тем самым защищая систему от уязвимостей, включая нулевые дни.
Однако, поскольку для работы теневых стеков требуется технология Intel Control-Flow Enforcement Technology (CET), эта функция доступна только на более новых процессорах.
Следовательно, для использования аппаратной защиты стека в режиме ядра Windows на устройстве должен быть установлен процессор Intel Tiger Lake CPU или AMD Zen 3 CPU и более поздних версий с включенной виртуализацией ЦП в BIOS.
Как включить аппаратно-принудительную защиту стека в режиме ядра
Хотя в функции аппаратной защиты стека в режиме ядра Windows разобраться непросто, включить эту функцию довольно легко.
Если вы используете Windows 11 22H2 с последними обновлениями, откройте Windows Security и перейдите в раздел Безопасность устройства > Изоляция ядра.
Если у вас есть необходимое оборудование и включена виртуализация процессора, вы увидите параметр «Аппаратная защита стека в режиме ядра», как показано ниже.
Чтобы включить эту функцию, просто переключите ее в положение «Вкл.», и Windows проверит загруженные драйверы устройств на предмет наличия каких-либо, которые могут конфликтовать с функцией безопасности.
При обнаружении каких-либо конфликтующих драйверов вам будет предложено просмотреть список драйверов для обновления до более новых версий, прежде чем вы сможете включить эту функцию.
После обновления драйверов до последних версий вы можете попытаться снова включить эту функцию и посмотреть, нет ли каких-либо дальнейших конфликтов.
Если конфликтующие драйверы не обнаружены, Windows может предложить вам перезагрузить компьютер, чтобы включить эту функцию.
Может привести к неожиданному поведению
К сожалению, когда эта функция включена, вы можете обнаружить, что определенные программы больше не работают, поскольку их драйверы конфликтуют с аппаратно-принудительной функцией защиты стека в режиме ядра.
Обычно это происходит, когда Windows не знает о драйвере, конфликтующем с этой функцией, и позволяет включить ее в любом случае.
Хотя эти конфликты могут привести к аварийному завершению работы Windows, чаще всего программа больше не запускается, а Windows сообщает, что драйвер несовместим, и предлагает вам отключить функцию безопасности.
Пользователи, включившие эту функцию, сообщают, что многие конфликты связаны с защитой авторских прав и драйверами защиты от читеров, используемыми играми, включая PUBG, Valorant (Riot Vanguard), Bloodhunt, Destiny 2, Genshin Impact, Phantasy Star Online 2 (Game Guard) и Dayz.
Однако, по мере того, как все больше пользователей начинают использовать эту функцию безопасности Windows, мы, вероятно, увидим обновленные версии этих программ защиты от читов и авторских прав для поддержки защиты стека.