Control-flow Enforcement (CET)
Также называется CET
CET, Control-flow Enforcement Technology, добавляет аппаратные механизмы защиты потока управления, главным образом теневые стеки (shadow stacks) и отслеживание косвенных переходов (indirect branch tracking). Аппаратная поддержка и активная защита в конкретном процессе представляют собой разные состояния.
Что необходимо знать
CET, Control-flow Enforcement Technology, добавляет аппаратные механизмы защиты потока управления, главным образом теневые стеки (shadow stacks) и отслеживание косвенных переходов (indirect branch tracking). Аппаратная поддержка и активная защита в конкретном процессе представляют собой разные состояния.
Как это работает
Теневые стеки сохраняют защищенное состояние адресов возврата, тогда как отслеживание косвенных переходов ограничивает адреса назначения отслеживаемых косвенных ветвлений. Они охватывают различные переходы потока управления и имеют раздельное перечисление и активацию. ОС, загрузчик, исполняемый файл приложения и библиотеки совместно обеспечивают работу защищенной среды выполнения.
Области применения
Приложение, собранное соответствующим образом, может выполняться с управляемым ОС теневым стеком, благодаря чему несовпадающий адрес возврата вызывает определенное исключение вместо незаметного перенаправления выполнения. Политика совместимости может различаться для устаревших модулей, а также для защиты в пользовательском режиме по сравнению с режимом супервизора.
Как проверить поддержку и активацию
Проверьте бит 7 CPUID.07H.00H:ECX для поддержки теневого стека и бит 20 EDX для отслеживания косвенных переходов, затем проверьте документированный ОС статус защиты процесса. Наличие доступного бита процессора само по себе не гарантирует принудительное применение для работающей программы.
Аппаратную возможность, активацию и фактическое применение политик необходимо проверять раздельно. Процессор может поддерживать технологию защиты, в то время как ОС, приложение или политика виртуальной машины ее не задействуют. Наличие отметки о поддержке в базе данных не является аттестацией работающей системы.
Чего не гарантирует данная функция
Поле CET не доказывает, что обе подфункции присутствуют или включены. CET не делает исполняемый файл доверенным, не предотвращает все ошибки повреждения памяти и не заменяет обновления. Глобальное отключение защиты не является штатным решением проблемы сбоя приложения.
Совместимость и производительность на практике
Поддерживайте ОС, микрокод и соответствующую среду выполнения в актуальном состоянии. Если механизм защиты вызывает проблемы совместимости, в первую очередь используйте средства диагностики и поддерживаемые обновления от поставщика. Изменение глобальных параметров защиты может затронуть сторонние приложения и должно производиться согласно регламенту развертывания и плана отката.
Практический чек-лист для проверки
- Зафиксируйте точную модель процессора или платформы, а также задействованные версии приложения, ОС и среды выполнения. Сохраните точную формулировку возникшей ошибки или требования.
- Сверьтесь со справочными материалами производителя для этой точной модели, затем проверьте действующую поддержку и состояние активации в окружении, где выполняется программа.
- Сопоставьте каждое требование выбранного бинарного файла или бэкенда. Похожего названия функции, псевдонима или общего маркетингового обозначения технологии недостаточно.
- Убедитесь, что приложение выбрало предполагаемую реализацию. Используйте его документированные средства диагностики и поддерживаемый резервный код при несоблюдении требований.
- Вносите по одному поддерживаемому изменению за раз и повторяйте ту же рабочую нагрузку. Сохраняйте исходную конфигурацию и возможность отката.
Если функция указана в списке, но ПО не может ее использовать
Начните с точного сбойного компонента. База данных оборудования описывает зафиксированные возможности; операционная система или гипервизор могут предоставлять иное фактическое окружение. Ошибка недопустимой инструкции также требует анализа конкретной сбойной команды и сборки бинарного файла, так как повреждение данных или сторонняя неподдерживаемая инструкция могут вызывать аналогичный симптом.
Установите версию приложения, драйвера или среды выполнения, поддерживаемую для данной платформы, и при необходимости используйте документированную производителем базовую или резервную сборку. Обновление ПО не может создать инструкцию, отсутствующую в процессоре. Изменения микрокода и политик безопасности должны выполняться по процедуре производителя системы и с планом восстановления, а не по общим шаблонам оптимизации.
Источники и границы применимости пояснения
Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 · Ядро Linux: теневой стек Control-flow Enforcement Technology
Эти материалы определяют архитектурное поведение и требования к программному обеспечению. Они не подтверждают независимо каждое значение параметров на странице конкретной модели оборудования. Для проверки поддержки моделью используйте данные производителя на этой странице и проверяйте действующую конфигурацию системы. Данная статья не содержит результатов тестов производительности, сертификатов или дат независимых обзоров.
Источники и проверка
Редакционная принадлежность: Feex. Дата независимой проверки не зарегистрирована. Как мы проводим исследования.
- Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 · Тома 1 и 2 описывают указанные семейства инструкций и CPUID; том 3 описывает управление состоянием, страничную адресацию, VMX и средства защиты. Архитектурная документация не определяет факт поддержки конкретной моделью.
- Ядро Linux: теневой стек Control-flow Enforcement Technology · Разграничивает аппаратную поддержку, маркеры бинарных файлов, включение на уровне загрузчика и активную защиту отдельных потоков. Описывает IBT и теневые стеки как отдельные механизмы.
Была ли эта статья полезна?
Достаточно ответа "да" или "нет". При желании выберите причину или оставьте короткую заметку.
Спасибо. Это помогает нам улучшать эту страницу.