一、引言
1.1、研究背景及意義
在萬物互聯時代,嵌入式系統廣泛存在于智能家居、工業控制、醫療設備等關鍵領域。然而,隨著系統復雜性的提升,內存安全問題(如緩沖區溢出、懸垂指針、越界訪問)已成為嵌入式設備面臨的主要威脅之一。
內存安全問題不僅影響系統的正常運行,還可能導致數據泄露、系統崩潰等嚴重后果。例如,2014年的Heartbleed漏洞就是因為內存管理不當導致的,影響了全球數百萬臺服務器的安全。此外,嵌入式系統通常資源有限,處理能力和內存空間相對不足,這使得傳統的內存保護機制在嵌入式環境中難以有效實施。因此,探索適合嵌入式系統的內存安全解決方案顯得尤為迫切。
傳統的軟件防護方案(如ASLR、DEP)和編譯時檢查存在性能開銷高、覆蓋率不足等問題。CHERI(Capability Hardware Enhanced RISC Instructions)架構通過硬件級能力(Capability)模型,為嵌入式系統提供了一種全新的內存安全防護思路。
1.2、CHERI架構簡介
CHERI(Capability Hardware Enhanced RISC Instructions)架構是一種新興的安全架構,由英國劍橋大學和美國SRI International合作研發。CHERI架構通過引入能力指針(Capability Pointer)的概念,從硬件層面提供 fine-grained 的內存保護能力。能力指針不僅包含傳統的地址信息,還包含了訪問權限和內存邊界信息,從而有效防止緩沖區溢出、內存泄漏等常見內存安全漏洞。這種架構的設計目標是顯著提升計算機系統的安全性和可靠性,尤其適用于對安全性要求極高的嵌入式系統領域。
CHERI架構的核心思想在于通過硬件支持的能力指針,確保每個內存訪問操作都在預定義的權限和范圍內進行。這種機制從根本上杜絕了非法內存訪問的可能性,從而大大提高了系統的安全性。與傳統的內存保護機制相比,CHERI架構不僅在安全性上有顯著提升,還在性能和靈活性方面表現出色,使其成為嵌入式系統內存安全研究的理想選擇。
二、CHERI架構的核心思想
CHERI由劍橋大學和ARM等機構聯合研發,其核心理念是通過硬件擴展實現細粒度內存保護,具體包括以下特性:
l 能力(Capability)模型
每個指針不僅是內存地址,還包含訪問權限(如可讀、可寫、可執行)、邊界范圍(起始地址和長度)等元數據。
例如,一個指向數組的指針只能訪問該數組的合法區間,越界操作會被硬件直接攔截。
l 硬件強制隔離
能力元數據由硬件直接驗證,軟件無法繞過。即使存在漏洞,攻擊者也無法通過內存破壞篡改能力信息。
l 向后兼容性
CHERI支持混合模式運行,傳統代碼(無能力模型)與增強代碼可共存,降低遷移成本。
1. CHERI架構的核心:能力指針
1.1 能力指針的硬件實現
(注:示意圖示例,實際可參考CHERI官方文檔)
其實能力這個概念在計算領域并不算新鮮事物,以往已經有不少大型機系統就采取過類似的機制。
Grisenthwaite解釋道,“這些獨立的128位單元被保存在一起,同時進一步為寄存器文件和內存系統添加元數據標簽,用以將能力與數據區分開來。”這里的元數據標簽非常重要,能夠“幫助我們保證能力具備不可偽造的特性。”
這意味著元數據標簽只能由內核或其他高權限進程所設置,攻擊者只要嘗試把能力當成數據來操作并更改其屬性,都會導致該能力失去狀態。而失去狀態,也就意味著能力失效。
Grisenthwaite解釋稱,“最主要的變化,就是我們建立起一套完整的加載和存儲體系,它們會從能力寄存器中獲取自身基礎地址并檢查所生成的地址。這些地址通常可能會在能力范圍內添加一個整數偏移量。”
對能力權限的檢查會與常規內存管理檢查一同進行,任何與能力檢查相沖突的行為都將導致內存中止,其中止方式與轉譯后備緩沖器(TLB)中的內存管理故障相同。
根據Grisenthwaite的描述,Morello架構同樣支持普通的加載和存儲指令,這些指令會從傳統的通用寄存器中獲取地址。但Arm還添加了所謂默認數據能力的機制,能夠為此類訪問添加邊界和權限,相當于為不具備能力感知的遺留代碼創建起相應的沙箱。
與此同時,對能力的操作自然也需要新的數據處理指令。這些新的數據處理指令包含某些規則,允許用戶在能力邊界定義的范圍之內執行地址調整。
Grisenthwaite還提到,“重要的是,一般來說無法在能力內添加邊界。這些指令允許大家減少能力的邊界或權限,通過原始對象創建子對象。但用戶無法在能力不提供相應權限的前提下,擴大權限邊界。”
該項目的目標之一就是調整程序計數器,將其轉化為程序計數器能力,從而建立一組與之相關的邊界。直接分支可以在邊界之內實現分支,而間接分支則可以改變能力邊界,從而在不同代碼塊之間實現調用。
能力指針與傳統指針的對比:
注:關鍵差異:能力指針在硬件層面存儲了內存范圍(Base+Length)、權限(R/W/X)和標簽(Tag),任何越界訪問直接由硬件攔截。
2. 內存安全挑戰的硬件級解決方案
2.1 緩沖區溢出防護
傳統系統:攻擊者通過溢出覆蓋返回地址
CHERI系統:能力指針的邊界限制使溢出訪問觸發硬件異常
2.2 使用釋放后內存(Use-After-Free)
注:防護機制,內存釋放時硬件自動清除能力指針的標簽(Tag),使后續訪問失效。
3. 嵌入式系統的CHERI適配實踐
3.1 安全編譯器的代碼轉換
編譯器(如Clang-CHERI)將源碼中的指針自動升級為能力指針:
3.2 實時性保障:硬件加速檢查
4. 應用案例:工業控制系統的CHERI改造
4.1 系統架構圖
安全隔離:不同功能模塊(通信/控制/日志)使用獨立能力域
攻擊攔截:惡意代碼嘗試跨模塊訪問時觸發硬件隔離
4.2 關鍵代碼片段
5. 未來研究方向(技術路線圖)
關鍵技術節點:2025年實現物聯網級CHERI-Micro控制器.
結語
CHERI架構為嵌入式系統提供了一種“治本”的內存安全方案,其硬件強制的防護機制顯著提升了設備的安全性。盡管在硬件生態和工具鏈上仍需完善,但隨著RISC-V的普及和物聯網安全需求的升級,CHERI有望成為嵌入式開發的下一代黃金標準。
通過硬件能力指針的革新設計,CHERI架構為嵌入式系統構建了“鋼鐵般”的內存安全防線。在智能汽車、工業物聯網等關鍵領域,CHERI正在開啟硬件安全的新紀元。讀者可訪問CHERI Playground在線實驗能力指針的魔力。