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