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)。硬體支援與特定行程中的主動保護屬於不同狀態。
運作方式
陰影堆疊維護受保護的返回位址狀態,而間接分支追蹤則限制受追蹤間接分支的目的地。它們針對不同的控制流程轉移,並具備獨立的列舉與啟用方式。OS、載入器、應用程式二進位檔與程式庫共同協作,以構建受保護的執行環境。
適用場景
妥善建置的應用程式可在 OS 管理的陰影堆疊下執行,以便在返回位址不符時觸發定義的例外狀況,而非無聲無息地重定向執行。對於舊版模組以及使用者模式與監控者模式保護,相容性策略可能會有所不同。
如何檢查支援與啟用狀態
檢查 CPUID.07H.00H:ECX 位元 7 以確認陰影堆疊能力,並檢查 EDX 位元 20 以確認間接分支追蹤能力,接著檢查 OS 所記載的行程保護狀態。單憑可用的 CPU 位元無法確定執行中程式已受到強制防護。
能力、啟用狀態與強制執行狀態必須分別檢查。處理器可能支援某項保護,但 OS、應用程式或虛擬機器原則並未予以啟用。資料庫支援欄位並非執行中系統的證明。
該功能未涵蓋的範疇
CET 欄位並不代表兩項子功能皆存在或已啟用。CET 無法使二進位檔變得完全可信,無法防止所有記憶體損毀錯誤,亦無法取代更新。全域停用保護並非應用程式當機的常規修復方法。
實務中的相容性與效能
使 OS、韌體和受影響的執行階段保持最新。若保護機制引發相容性問題,請先使用廠商診斷工具和受支援的更新。廣泛的保護開關可能會影響無關的應用程式,應遵循明確的部署與復原原則。
實用驗證檢查清單
- 記錄所涉及的確切處理器或平台型號,以及應用程式、OS 和執行階段版本。保留實際錯誤或需求的確切措辭。
- 檢查該確切型號的原廠參考資料,然後在程式執行的環境中檢查有效功能和啟用狀態。
- 比對所選二進位檔或後端的所有需求。僅憑名稱相似的功能、別名或廣泛的技術標籤是不夠的。
- 確認應用程式已選擇預期的實作方式。當需求未獲滿足時,請使用其記載的診斷工具和受支援的後備機制。
- 一次進行一項受支援的變更,並重複執行相同的負載。隨時保留原始設定和復原途徑。
如果列出該功能但軟體無法使用
從確切發生失敗的元件著手。硬體資料庫描述的是記錄的硬體能力;作業系統或 Hypervisor 可能呈現不同的有效環境。非法指令錯誤同樣需要調查實際出錯的指令和二進位建置版本,因為損毀或無關的不受支援指令也可能產生類似的症狀。
安裝適用於該確切平台的受支援應用程式、驅動程式或執行階段版本,並在需要時使用廠商記載的基準建置版本或後備建置版本。軟體更新無法無中生有地創造處理器所缺乏的指令。韌體與安全性原則的變更應遵循系統製造商的程序和復原計劃,而非泛用的最佳化偏方。
本說明的來源與範圍
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 與陰影堆疊描述為各自獨立的功能。
這篇文章實用嗎?
只要回答「是」或「否」即可。您也可以依意願選擇原因,或附上簡短說明。
感謝您。這有助於我們改進此頁面。