Поделиться через


CET поддерживается по умолчанию

apphost и singlefilehost теперь помечены как Intel CET — совместимы (они компилируются с параметром /CETCOMPAT ). Это изменение было внесено для повышения безопасности приложений .NET. Однако он накладывает ограничение на общие библиотеки, с которыми могут загружаться и взаимодействовать приложения .NET. Библиотеки не могут задать контекст потока в расположение с указателем инструкции, который отсутствует в теневом стеке или в таблице разрешенных адресов продолжения для обработки исключений.

Прежнее поведение

Ранее общие библиотеки, загруженные в процесс .NET, смогли задать контекст потока с помощью SetThreadContext, RtlRestoreContext/NtContinue или обработчиков исключений в любом расположении в адресном пространстве процесса.

Новое поведение

Начиная с .NET 9 общие библиотеки, загруженные в процесс .NET, могут задавать контекст потока только с помощью SetThreadContext, RtlRestoreContextNtContinue/ или обработчиков исключений в расположениях, которые являются следующими:

  • Присутствует в теневом стеке.
  • В таблице разрешенных адресов продолжения для обработки исключений (создается /EHCONT параметром компилятора или SetProcessDynamicEHContinuationTargets API).

Если библиотеки пытаются изменить контекст потока на любое другое расположение, процесс завершается.

Представленные версии

.NET 9( предварительная версия 6)

Тип критического изменения

Это изменение может повлиять на совместимость двоичного кода.

Причина изменения

Включение CET повышает безопасность приложений .NET путем добавления аппаратно-принудительной защиты стека, которая обеспечивает надежную защиту от эксплойтов ROP (возвращаемое программирование).

Решения.

  • Вы можете отказаться от CET, добавив <CETCompat>false</CETCompat> в файл проекта приложения (например, CSPROJ-файл ).
  • Используйте приложение Безопасность Windows или групповую политику, чтобы отказаться от применения аппаратного стека для конкретного приложения .NET. Дополнительные сведения см. в разделе "Включение защиты от эксплойтов".

Затронутые API

  • Н/Д