什麼是指標驗證(PAC)

於Armv8.3-A加入的機制。由指標的值與情境值,以CPU內部的金鑰計算出簡短的驗證碼(PAC),放入指標未使用的高位元,並在使用前以專用指令確認。若不一致,就把指標變成無法使用的位址,因此能提高覆寫返回位址或函式指標之攻擊的難度。驗證碼的長度取決於虛擬位址寬度等設定。

日文名稱: ポインタ認証(PAC)

「指標驗證(PAC)」出現在1領域的2道練習題中(硬體安全的進階主題與趨勢等)。

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

練習指標驗證(PAC)的題目

關於Arm的指標驗證(PAC)的機制,正確的是下列何者?

  1. A每次使用指標時,都以系統呼叫詢問OS,請OS確認該指標的值是否正確
  2. B由指標的值與情境值,以CPU內部的金鑰計算簡短的驗證碼,放入指標的高位元,並在使用前加以確認
  3. C先以CPU內部的金鑰加密指標的所有位元再存入記憶體,每次使用前在CPU內部解密
查看答案與解析

正確答案:B. 由指標的值與情境值,以CPU內部的金鑰計算簡短的驗證碼,放入指標的高位元,並在使用前加以確認

在64位元指標中不用於虛擬位址的高位元,放入以CPU內部金鑰、由指標的值與情境值(例如堆疊指標)計算出的驗證碼。在使用函式返回位址等之前,以專用指令重新計算並比較,不一致時就把它變成無法使用的位址,因此能提高覆寫堆疊上返回位址之攻擊(ROP等)的難度。軟體無法讀取金鑰,因此攻擊者無法產生與改寫後指標相符的驗證碼。不過,驗證碼的長度取決於虛擬位址寬度等設定,多半只有十幾位元以下,在可以多次猜測的情況下,必須考慮偶然一致的機率。

解析中的「指標驗證(PAC)」

出現「指標驗證(PAC)」的題目(2題)

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

相關名詞

返回位址 堆疊指標 控制流程完整性 函式指標 影子堆疊 KPTI(核心分頁表隔離) Meltdown IOMMU(輸入輸出記憶體管理單元) DMA(直接記憶體存取) 目標列刷新(TRR)

前往名詞解釋列表