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 не робіць бінарны файл вартым даверу, не прадухіляе кожную памылку пашкоджання памяці і не замяняе абнаўленні. Адключэнне абароны глабальна не з'яўляецца штатным спосабам выпраўлення збояў праграмы.
Сумяшчальнасць і прадукцыйнасць на практыцы
Падтрымлівайце АС, мікрапраграму і адпаведнае асяроддзе выканання ў актуальным стане. Калі ахоўны механізм выклікае праблему сумяшчальнасці, спачатку скарыстайцеся дыягностыкай вытворцы і падтрымліваемымі абнаўленнямі. Агульнае пераключэнне параметраў абароны можа паўплываць на незвязаныя праграмы і павінна ажыццяўляцца згодна з выразнымі палітыкамі разгортвання і аднаўлення.
Практычны чэк-ліст для праверкі
- Зафіксуйце дакладную мадэль працэсара або платформы, а таксама задзейнічаныя версіі праграмы, АС і асяроддзя выканання. Захавайце дакладную фармулёўку памылкі або патрабавання.
- Звярніцеся да дакументацыі вытворцы для гэтай канкрэтнай мадэлі, затым праверце фактычныя магчымасці і ўключаны стан у асяроддзі, дзе выконваецца праграма.
- Супастаўце кожнае патрабаванне выбранага выканальнага файла або бэкэнда. Аналагічнай назвы функцыі, псеўданіма або агульнай назвы тэхналогіі недастаткова.
- Пацвердзіце, што праграма выбрала патрэбную рэалізацыю. Выкарыстоўвайце яе задакументаваныя сродкі дыягностыкі і падтрымліваемы запасны варыянт, калі патрабаванні не выконваюцца.
- Уносьце па адным падтрымліваемым змяненні за раз і паўтарайце тую ж нагрузку. Захоўвайце зыходную канфігурацыю і магчымасць адкату.
Калі функцыя пазначана, але праграмнае забеспячэнне не можа яе выкарыстоўваць
Пачніце з канкрэтнага кампанента, які выклікае збой. Апаратная база даных апісвае зафіксаваныя магчымасці; аперацыйная сістэма або гіпервізар могуць прадастаўляць іншае фактычнае асяроддзе. Памылка недапушчальнай інструкцыі (illegal instruction) таксама патрабуе даследавання канкрэтнай інструкцыі, якая выклікала збой, і зборкі бінарнага файла, паколькі пашкоджанне даных або іншая непадтрымліваемая інструкцыя могуць выклікаць аналагічны сімптом.
Усталюйце версію праграмы, драйвера або асяроддзя выканання, якая падтрымліваецца для дадзенай платформы, і пры неабходнасці выкарыстоўвайце задакументаваную вытворцам базавую або запасную зборку. Абнаўленне ПЗ не можа стварыць інструкцыю, якой няма ў працэсары. Змяненні ў мікрапраграме (firmware) і палітыках бяспекі павінны адпавядаць працэдурам вытворцы сістэмы і плану аднаўлення, а не агульным рэцэптам аптымізацыі.
Крыніцы і межы прымянення гэтага тлумачэння
Intel 64 and IA-32 Architectures Software Developer's Manual · Ядро Linux: ценявы стэк Control-flow Enforcement Technology
Гэтыя даведнікі вызначаюць архітэктурныя паводзіны і патрабаванні да праграмнага забеспячэння. Яны не пацвярджаюць незалежна кожнае значэнне функцыі на звязанай старонцы мадэлі абсталявання. Для праверкі падтрымкі мадэллю выкарыстоўвайце даныя вытворцы на адпаведнай старонцы і правярайце фактычную канфігурацыю сістэмы. Гэты артыкул не змяшчае вынікаў тэсціравання (benchmark), сертыфікацыі або даты незалежнага агляду.
Крыніцы і праверка
Рэдакцыйная прыналежнасць: Feex. Дата незалежнай праверкі не зафіксавана. Як мы даследуем.
- Intel 64 and IA-32 Architectures Software Developer's Manual · Тамы 1 і 2 апісваюць названыя сямействы інструкцый і CPUID; Том 3 апісвае стан, старонкавую арганізацыю памяці, VMX і элементы кіравання абаронай. Архітэктурная дакументацыя не пацвярджае падтрымку канкрэтнай мадэлі.
- Ядро Linux: ценявы стэк Control-flow Enforcement Technology · Адрознівае апаратную падтрымку, бінарныя маркеры, уключэнне загрузчыкам і актыўную абарону для асобных патокаў. Апісвае IBT і ценявыя стэкі як асобныя сродкі.
Ці быў гэты артыкул карысным?
Дастаткова адказаць "так" або "не". Выберыце прычыну, калі хочаце, або дадайце кароткую нататку.
Дзякуй. Гэта дапамагае нам паляпшаць гэтую старонку.