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). Хардуерната поддръжка и активната защита в даден процес са различни състояния.
Как работи
Сенчестите стекове поддържат защитено състояние на адресите за връщане, докато проследяването на непреки разклонения ограничава дестинациите на следените непреки разклонения. Те са насочени към различни прехвърляния на контролния поток и имат отделно изброяване и активиране. Операционната система, зареждачът (loader), изпълнимият файл на приложението и библиотеките участват съвместно в осигуряването на защитена среда за изпълнение.
Къде е полезно
Подходящо компилирано приложение може да работи с управляван от ОС сенчест стек, така че несъответстващ адрес за връщане да предизвика определеното изключение, вместо тихо да пренасочи изпълнението. Политиката за съвместимост може да се различава за остарели модули, както и между защита в потребителски режим спрямо супервайзорен режим.
Как се проверява поддръжката и активирането
Проверете бит 7 на CPUID.07H.00H:ECX за възможност за сенчест стек и бит 20 на EDX за проследяване на непреки разклонения, след което прегледайте документирания статус за защита на процесите в ОС. Наличен бит в процесора сам по себе си не може да гарантира налагането на защитата за работеща програма.
Възможността, активирането и прилагането трябва да се проверяват отделно. Процесорът може да поддържа дадена защита, докато операционната система, приложението или политиката на виртуалната машина не я активират. Полето за поддръжка в база данни не представлява атестация на работеща система.
Какво не гарантира тази функция
Полето за CET не доказва, че и двете подфункции са налични или активирани. CET не прави изпълнимия файл надежден, не предотвратява всяка грешка, свързана с повреда на паметта, и не замества актуализациите. Глобалното деактивиране на защитата не е стандартно решение за срив на приложение.
Съвместимост и производителност на практика
Поддържайте операционната система, фърмуера и засегнатата среда за изпълнение актуални. Ако дадена защита разкрие проблем със съвместимостта, първо използвайте диагностиката на производителя и поддържаните актуализации. Глобалното превключване на защити може да засегне несвързани приложения и трябва да следва ясна политика за внедряване и възстановяване.
Практически контролен списък за проверка
- Запишете точния модел на процесора или платформата, както и използваните версии на приложението, операционната система и средата за изпълнение. Запазете точния текст на действителната грешка или изискване.
- Проверете документацията от производителя за този точен модел, след което инспектирайте действителните възможности и активираното състояние в средата, където работи програмата.
- Сравнете всяко изискване на избрания двоичен файл или бекенд. Подобно наименувана функция, псевдоним или общ технологичен етикет не са достатъчни.
- Потвърдете, че приложението е избрало планираната реализация. Използвайте неговата документирана диагностика и поддържан резервен вариант, когато изискванията не са изпълнени.
- Правете по една поддържана промяна наведнъж и повтаряйте същото работно натоварване. Запазете достъпни оригиналната конфигурация и плана за възстановяване.
Ако функцията е посочена, но софтуерът не може да я използва
Започнете с точния компонент, който дава грешка. Хардуерната база данни описва записаните възможности; операционната система или хипервайзорът могат да предоставят различна ефективна среда. Грешка за невалидна инструкция (illegal-instruction) също изисква разследване на действителната сриваща се инструкция и компилацията на двоичния файл, тъй като повреда или несвързана неподдържана инструкция може да предизвика подобен симптом.
Инсталирайте версията на приложението, драйвера или средата за изпълнение, която се поддържа за точната платформа, и използвайте документираната от производителя базова или резервна компилация, ако е необходимо. Софтуерна актуализация не може да създаде инструкция, която липсва в процесора. Промените във фърмуера и политиките за сигурност трябва да следват процедурата на производителя на системата и план за възстановяване, а не общи съвети за оптимизация.
Източници и обхват на това обяснение
Intel 64 and IA-32 Architectures Software Developer's Manual · Linux ядро: Control-flow Enforcement Technology сенчест стек
Тези източници установяват архитектурното поведение и софтуерните изисквания. Те не проверяват независимо всяка стойност на параметър на свързана страница за хардуерен модел. За поддръжка на даден модел използвайте данните от производителя на съответната страница и проверете ефективната системна конфигурация. Тази статия не предоставя бенчмарк, сертификация или дата на независим преглед.
Източници и проверка
Редакционна собственост: Feex. Не е записана дата на независим преглед. Как проучваме.
- Intel 64 and IA-32 Architectures Software Developer's Manual · Томове 1 и 2 описват посочените семейства инструкции и CPUID; Том 3 описва състоянието, страницирането, VMX и контролите за защита. Документацията за архитектурата не гарантира поддръжка за конкретен модел.
- Linux ядро: Control-flow Enforcement Technology сенчест стек · Разграничава хардуерна поддръжка, маркери в двоичните файлове, активиране в зареждача и активна защита за всяка нишка. Описва IBT и сенчестите стекове като отделни механизми.
Беше ли полезна тази статия?
Достатъчно е "да" или "не". Изберете причина, ако желаете, или добавете кратка бележка.
Благодарим ви. Това ни помага да подобрим тази страница.