什麼是CHERI

Capability Hardware Enhanced RISC Instructions的縮寫。把指標換成除了位址之外還帶有可指向範圍與權限的能力(capability),以硬體阻止越界存取與指標偽造的指令集擴充。由劍橋大學與SRI International持續研究。Arm在2020年代前期以此為基礎,向研究者提供了原型處理器Morello。

日文名稱: CHERI

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

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

能力(capability)的內容

傳統的指標只是位址,硬體沒有確認它指向何處的機制。CHERI的能力除了位址之外,還帶有可指向範圍的下限與上限,以及讀、寫、執行等權限。在64位元位址的情況下,範圍以壓縮的形式表示,使能力收在128位元之內,並在一般記憶體內容之外另外保有1位元的標記。CPU在每次載入或儲存時都會確認範圍與權限,超出時引發例外,因此緩衝區溢位這類錯誤會當場被阻止。

防止偽造的標記

只有以正確的指令產生能力,或由既有的能力縮小範圍時,才會加上標記。若把能力當作一般資料覆寫,標記就會消失,沒有標記的值無法當作指標使用。範圍與權限只能縮小、不能擴大,因此程式無法產生超過自己所獲得的權限。利用這個性質,也可以把一個程式內部分成小區塊,限制各區塊可存取的範圍(區隔化)。

普及的課題

由於指標的大小變成2倍,會影響記憶體用量與快取效率,而把指標當作整數處理的軟體需要修改。研究顯示,許多C與C++程式只需少量修改就能執行。截至2020年代中期,實作以研究用原型與部分微控制器為主,一般個人電腦與智慧型手機的CPU並未搭載。

練習CHERI的題目

關於名為CHERI的指令集擴充所使用的能力(capability),正確的說明是下列何者?

  1. A先以CPU內部的金鑰加密指標的值再放進記憶體,每次使用時解密,使其他程式與OS無法讀取指標的值
  2. B每執行1道指令,CPU就確認附加在程式執行檔上的數位簽章,不執行沒有簽章的指令
  3. C讓指標帶有可存取的範圍與權限,並在記憶體上以軟體無法改寫的1位元標記,區分它是否以正確方式產生
查看答案與解析

正確答案:C. 讓指標帶有可存取的範圍與權限,並在記憶體上以軟體無法改寫的1位元標記,區分它是否以正確方式產生

CHERI以能力取代只有位址的指標,能力整合了位址、可指向範圍的上限與下限,以及讀、寫、執行等權限(64位元位址時壓縮收在128位元內,另外帶有1位元的標記)。CPU在每次存取時確認範圍與權限,因此能以硬體阻止陣列越界讀寫這類記憶體安全的錯誤。只有以正確的指令產生能力時才會加上標記,若當作一般資料覆寫,標記就會消失,因此無法偽造指標。劍橋大學等持續進行研究,Arm在2020年代前期向研究者提供了以此為基礎的原型處理器Morello與評估板。

常見問題

CHERI與MTE(記憶體標記擴充)有何不同?

MTE比較附加在記憶體與指標上的4位元標記,以機率方式發現錯誤。CHERI讓指標本身帶有範圍與權限,確定性地阻止越界存取。MTE較容易導入既有軟體,CHERI則提供更強的保證,代價是指令集與軟體的變更較大。

使用CHERI就能消除所有記憶體安全問題嗎?

它能防止越界存取與指標偽造,但要防止使用已釋放的記憶體,還需要在記憶體配置機制上另外下工夫。此外,它也無法防止邏輯錯誤,或濫用合法給予的權限。需要與其他對策搭配使用。

解析中的「CHERI」

出現「CHERI」的題目(1題)

  1. 關於名為CHERI的指令集擴充所使用的能力(capability),正確的說明是下列何者?

相關名詞

陣列 目標列刷新(TRR) 指標驗證(PAC) 控制流程完整性 硬體物料清單(HBOM) 雷射故障注入 影子堆疊 數論轉換 暫態執行攻擊 機密運算

前往名詞解釋列表