什麼是控制流程完整性

使程式的執行流程不偏離原本程式可能發生之路徑(控制流程圖)的對策總稱。包括保護函式返回的影子堆疊與指標驗證、把間接呼叫與跳躍的目的地限制在帶有指定標記之處的Intel IBT與Arm分支目標識別(Branch Target Identification)等硬體功能,以及由編譯器插入的目的地檢查。能提高覆寫返回位址或函式指標、串接既有程式碼片段之攻擊的難度。

日文名稱: 制御フロー完全性

「控制流程完整性」出現在1領域的1道練習題中(硬體安全的進階主題與趨勢等)。

這個名詞所屬的領域: 硬體安全的進階主題與趨勢

練習控制流程完整性的題目

關於以硬體支援控制流程完整性的功能,保護函式返回者與保護經由函式指標等之間接呼叫或跳躍者的組合,正確的是下列何者?

  1. A返回以影子堆疊或指標驗證保護,間接呼叫或跳躍則以要求目的地開頭有指定標記指令的機制保護
  2. B返回以要求目的地開頭有指定標記指令的機制保護,間接呼叫或跳躍則以影子堆疊保護
  3. C返回以KPTI(核心分頁表隔離)保護,間接呼叫或跳躍則以IOMMU的位址轉換保護
查看答案與解析

正確答案:A. 返回以影子堆疊或指標驗證保護,間接呼叫或跳躍則以要求目的地開頭有指定標記指令的機制保護

影子堆疊比較返回位址與其副本,指標驗證確認附加在返回位址上的驗證碼,因此兩者都保護函式的返回。對於間接呼叫或跳躍,Intel的IBT與Arm的分支目標識別(Branch Target Identification)要求目的地開頭有標記指令(x86為ENDBR64),並把跳到函式中途等處的分支變成例外。不過,只要是有標記的地方,任何間接分支都能跳過去,因此有時會與編譯器所做、把目的地限制在型別相符之函式的細部檢查搭配使用。KPTI是針對Meltdown的對策,IOMMU是限制設備DMA的機制,兩者都不保護控制流程。

出現「控制流程完整性」的題目(1題)

  1. 關於以硬體支援控制流程完整性的功能,保護函式返回者與保護經由函式指標等之間接呼叫或跳躍者的組合,正確的是下列何者?

相關名詞

函式指標 影子堆疊 返回位址 指標驗證(PAC) KPTI(核心分頁表隔離) Meltdown IOMMU(輸入輸出記憶體管理單元) DMA(直接記憶體存取) 目標列刷新(TRR) 硬體物料清單(HBOM)

前往名詞解釋列表