全面了解內(nèi)存標(biāo)記擴展 (Memory Tagging Extension, MTE),如何在 Arm 移動生態(tài)系統(tǒng)中實現(xiàn) MTE,以及為何? MTE 是解決內(nèi)存安全漏洞這一業(yè)界挑戰(zhàn)的重要安全功能。
?
Arm 終端事業(yè)部安全和隱私戰(zhàn)略總監(jiān)盧旻盛
?
計算的未來將由我們?nèi)粘I罡鱾€方面的日益數(shù)字化所驅(qū)動,這也將導(dǎo)致軟件和系統(tǒng)復(fù)雜性的不斷增加。據(jù)相關(guān)數(shù)據(jù)報告稱,2022 年報告的漏洞數(shù)量超過 23,000 個 (其中超過 17,000 個被歸類為嚴(yán)重漏洞),連續(xù)六年創(chuàng)下新高。
?
利用構(gòu)建于最新 Armv9 架構(gòu)的 Arm CPU,我們可提供內(nèi)存標(biāo)記擴展 (Memory Tagging Extension, MTE) 等安全功能,以降低上述復(fù)雜性,并為軟件開發(fā)者、芯片供應(yīng)商和設(shè)備制造商提供影響深遠的信息安全、功能安全、成本和上市時間優(yōu)勢。Armv9 安全性改進可將某些類別的漏洞減少高達 95%,例如在所有嚴(yán)重安全漏洞中占比最大的內(nèi)存安全違規(guī)。
?
Arm 的 MTE 作為 Armv8.5 指令集的組成部分于 2019 年八月首次推出,而后 Arm 于 2021 年五月宣布將其內(nèi)置于首款兼容 Armv9 的 CPU 中。早在 Armv9 架構(gòu)推出之前,谷歌就宣布在安卓中采用 Arm 的 MTE,并致力于在整個安卓堆棧中支持 MTE。2022 年年底,榮耀在其開發(fā)者大會上宣布,將通過榮耀天網(wǎng)并在未來的 DiagnosisKit 工具中向開發(fā)者提供支持 MTE 的 MagicOS 6.x 和 MagicOS 7 設(shè)備。未來,這可能搭載在榮耀的移動設(shè)備中。
?
在本文中,我們將回答有關(guān) MTE 的關(guān)鍵問題,包括什么是 MTE,它如何應(yīng)對諸如內(nèi)存安全之類的安全挑戰(zhàn),它的優(yōu)勢是什么,以及我們的合作伙伴對該功能做了哪些努力。
?
MTE 的作用是什么?它如何在 Arm 生態(tài)系統(tǒng)中帶來更出色的軟件?
?
利用 MTE,開發(fā)者可以快速找到內(nèi)存相關(guān)漏洞,加快應(yīng)用調(diào)試和開發(fā)流程。此外,該功能支持動態(tài)更改配置,這意味著在現(xiàn)場可通過漏洞報告和遙測系統(tǒng),向開發(fā)者回傳有關(guān)訪問故障位置的準(zhǔn)確信息。
?
值得注意的是,許多開發(fā)者首次使用 MTE 時可能會發(fā)現(xiàn)更多漏洞,遠超過他們所能夠修復(fù)的數(shù)量。但是,開發(fā)者可決定在產(chǎn)品發(fā)布之前先修復(fù)最嚴(yán)重的漏洞,然后在更新過程中解決不太嚴(yán)重的漏洞。此外,隨著時間推移,開發(fā)者的代碼將變得越來越清晰,因為在隨后的全局掃描中捕捉出的漏洞數(shù)量會減少,使這一流程更加省時。崩潰、投訴和演習(xí)的頻率也會隨之降低。
?
借助 MTE,開發(fā)者可在部署前后進行檢測并避免內(nèi)存安全漏洞,從而有利于更廣泛的移動生態(tài)系統(tǒng)。在部署之前找到并修復(fù)漏洞對于確保安全至關(guān)重要,因為這可以減少已部署代碼的攻擊面。在部署之后檢測漏洞可以在漏洞被大范圍利用之前對漏洞進行反應(yīng)性修復(fù),而 MTE 可協(xié)助開發(fā)者進行此類檢測。這樣就能夠有力地抵御試圖破壞安全代碼的攻擊。
?
解決內(nèi)存安全違規(guī)為什么如此重要?
?
數(shù)十年以來,內(nèi)存安全一直都是安全漏洞的主要來源。據(jù)操作系統(tǒng)供應(yīng)商 (OSV) 報告,其產(chǎn)品中的大多數(shù)安全問題都源于內(nèi)存安全違規(guī)導(dǎo)致的漏洞。谷歌的 Chromium 項目團隊表示,內(nèi)存安全問題在所有嚴(yán)重安全漏洞中占到了 70%。
?
內(nèi)存安全違規(guī)可能會對用戶產(chǎn)生巨大影響。惡意應(yīng)用可通過不安全的內(nèi)存來訪問敏感數(shù)據(jù),比如:用戶憑證和密碼,這樣不法分子就能夠訪問機密數(shù)據(jù)。除了安全方面,由未解決的內(nèi)存安全漏洞導(dǎo)致的中斷會降低用戶滿意度,不僅增加軟件開發(fā)成本,并且將來要耗費更多時間來解決此類問題。
?
內(nèi)存管理問題已經(jīng)存在了幾十年,今天仍非常普遍。相關(guān)安全機構(gòu)近期發(fā)布了一項指南[6],旨在幫助軟件開發(fā)者和運營商防止和減少軟件內(nèi)存安全問題。該機構(gòu)的“軟件內(nèi)存安全”網(wǎng)絡(luò)安全信息表重點介紹了惡意網(wǎng)絡(luò)行為者如何利用內(nèi)存管理不善的問題來訪問敏感數(shù)據(jù),發(fā)布未獲授權(quán)的代碼執(zhí)行,以及所造成的其他負(fù)面影響。
?
什么是內(nèi)存安全違規(guī)?
?
內(nèi)存安全違規(guī)有兩種主要類型:空間安全違規(guī)和時間安全違規(guī)。MTE 可提供在生產(chǎn)代碼中檢測這兩種違規(guī)的機制,且無需使用任何儀器。
?
當(dāng)在某個對象的真實邊界之外訪問該對象時,就違反了空間安全。例如:將數(shù)據(jù)寫入緩沖區(qū)或其他對象之外時。這可能會被用來改變函數(shù)指針、保存寄存器或類似對象的目標(biāo)地址。
?
當(dāng)在某個對象已過期后使用了該對象的參考時,就違反了時間安全,通常是在該對象的內(nèi)存已釋放后——利用現(xiàn)有的“內(nèi)存釋放后使用”漏洞。憑借對分配器的了解,攻擊者可以放置新的惡意對象來替代預(yù)期版本。
?
MTE 的工作原理是什么?
?
Arm 實現(xiàn)的 MTE 為兩階段系統(tǒng),即“鎖”和“密鑰”。如果密鑰匹配,則允許訪問鎖內(nèi)存;否則,訪問可能會被記錄下來或出錯。這樣就可以更輕松地檢測到難以捕獲的內(nèi)存安全錯誤,也有助于進行常規(guī)調(diào)試。
?
在鎖和密鑰兩階段系統(tǒng)中,存在兩種類型的標(biāo)記:
?
地址標(biāo)記,用作密鑰。這將在進程中每個指針的最高位增加四位。地址標(biāo)記僅適用于 64 位應(yīng)用,因為它使用了“高字節(jié)忽略”功能,這是 Arm ?64 位的一個功能。
?
內(nèi)存標(biāo)記,用作鎖。內(nèi)存標(biāo)記也由四位組成,與應(yīng)用內(nèi)存空間中每個對齊的 16 字節(jié)區(qū)域相連接。Arm 將這些 16 字節(jié)區(qū)域稱為標(biāo)記顆粒。這四位并不用于應(yīng)用數(shù)據(jù),而且是分開存儲。
?
移動設(shè)備為什么需要 MTE?
?
未來市場上的移動設(shè)備將具有更先進的計算能力,因此攻擊面也更大。與此同時,通過這些設(shè)備獲得的個人內(nèi)容和數(shù)據(jù)的數(shù)量和價值也在不斷增加。因此,需要實現(xiàn)一種安全性功能,為終端用戶提供安全生態(tài)系統(tǒng)和安全的數(shù)字體驗。
?
MTE 非常靈活,可在產(chǎn)品開發(fā)和部署的各個階段部署在不同配置中。例如:MTE 可根據(jù)進程配置為異步和同步模式。異步模式的運行開銷非常低,并且可用于確定存在內(nèi)存問題的代碼區(qū)域,而同步模式會在遇到導(dǎo)致安全違規(guī)的指令時出錯,并在檢測到漏洞時產(chǎn)生大量的調(diào)試信息。這種靈活性對大規(guī)模部署尤其有用,因為 MTE 具有高度的可擴展性,能夠在數(shù)百萬甚至數(shù)十億臺設(shè)備上運行,為系統(tǒng)和應(yīng)用軟件提供可靠的錯誤檢測功能。
?
Arm 在 MTE 方面的合作伙伴是誰?
?
2019 年八月,谷歌宣布在安卓系統(tǒng)中采用 Arm 的 MTE,承諾在安卓堆棧中支持 MTE,并表示通過使用該技術(shù),“哪怕有內(nèi)存漏洞可利用,也將變得非常困難。”
?
Arm 與谷歌在 MTE 技術(shù)方面的合作旨在檢測現(xiàn)有代碼庫和寫入的新代碼中存在的內(nèi)存安全漏洞。以下是谷歌的 Kostya Serebryany 和 Sudhi Herle 的評論:
?
我們相信,內(nèi)存標(biāo)記將能夠檢測到環(huán)境中最常見的幾種內(nèi)存安全漏洞,同時幫助供應(yīng)商識別并修復(fù)這些漏洞,并阻止惡意行為者利用這些漏洞。
?
安卓 12 添加了一個 MTE 初始實現(xiàn),可檢測到“內(nèi)存釋放后使用”漏洞和“緩沖區(qū)溢出”漏洞,而這些都是谷歌代碼庫中最常見的內(nèi)存安全漏洞來源。在安卓 13 中,谷歌添加了一個開發(fā)者模式啟動開關(guān),以便在具有硬件支持但未永久開啟 MTE 功能的設(shè)備上啟用 MTE。對于未來的安卓版本,Arm 和谷歌將重點關(guān)注降低 MTE 使用的內(nèi)存。
?
芯片供應(yīng)商和設(shè)備制造商如何看待?
?
MTE 是所有 Armv9 CPU 的固有功能。為了解決軟件生態(tài)系統(tǒng)中的內(nèi)存安全漏洞,很多 Arm 合作伙伴已經(jīng)在其芯片組中構(gòu)建并啟用該功能。其中一家率先使用 MTE 的設(shè)備制造商就是榮耀,該公司宣布,將通過榮耀天網(wǎng)并在未來的 DiagnosisKit 工具中向開發(fā)者提供支持 MTE 的 MagicOS 6.x 和 MagicOS 7 設(shè)備。這有力表明,在即將進入消費市場、基于 Armv9 技術(shù)的移動設(shè)備上,都可開啟 MTE。
?
這項成果已經(jīng)開始產(chǎn)生積極影響。快手是一家領(lǐng)先的內(nèi)容社區(qū)及社交平臺。快手 App 是中國目前最廣泛使用的短視頻和直播手機應(yīng)用之一,根據(jù) 2022 年第三季度財報數(shù)據(jù),快手應(yīng)用的平均日活躍用戶為 3.63 億,平均月活躍用戶為 6.26 億,快手的海外產(chǎn)品 (Kwai 和 SnackVideo) 擁有超 1.6 億用戶。該公司目前正與榮耀天網(wǎng)合作,在大型項目中使用 Arm MTE提高內(nèi)存安全,90% 的內(nèi)存安全問題可以在 App 正式發(fā)布之前就在線下被檢測出來,取得了以下收益:
?
相較于 ASan,內(nèi)存安全問題檢測速度提高了三倍,內(nèi)存消耗降低一半
發(fā)現(xiàn)了十幾個潛在問題,如果沒有 MTE,這些隱蔽問題將難以被發(fā)現(xiàn)
?
以下是快手對 MTE 的評價:
“快手的使命是成為全球最癡迷于為客戶創(chuàng)造價值的公司,為了給用戶提供極致體驗,快手非常重視保護用戶隱私和信息安全,快手研發(fā)團隊長期以來為了保證內(nèi)存安全付出了巨大努力。但由于傳統(tǒng)內(nèi)存檢測工具的性能開銷較高,且需要重新編譯所有源代碼,所以幾乎無法在快手移動端大型 C++ 代碼庫的日常開發(fā)實踐中使用這些工具,MTE 解決了這些問題,在保證內(nèi)存安全方面發(fā)揮著重要作。”
?
Arm 為什么將 MTE 內(nèi)置于其產(chǎn)品和解決方案中?
?
MTE 是 Armv9 架構(gòu)中一系列新的及現(xiàn)有安全功能的組成部分,旨在提高所有細(xì)分消費品市場的安全性。這意味著,我們的合作伙伴可通過自己在安全措施方面的軟件投資來獲取更高價值,從而形成一個標(biāo)準(zhǔn)化程度更高且更具擴展性的解決方案,以應(yīng)對各種安全挑戰(zhàn)。
?
Arm 近期的 MTE 開發(fā)成果是什么?
?
隨著 2022 年六月發(fā)布的第二代 Armv9 CPU,我們推出了全新的非對稱 MTE,在安全漏洞檢測速度、精度和針對性之間實現(xiàn)了更高的靈活性。這可提高應(yīng)用的穩(wěn)定性,有利于軟件開發(fā),同時有助于在整個生態(tài)系統(tǒng)中更廣泛地推廣 MTE。采用 Arm Cortex-X3、Cortex-A715 和 Cortex-A510 最新版本 (A510-r1) CPU 的芯片組都將內(nèi)置非對稱 MTE。
?
Arm 架構(gòu)是安全的數(shù)字體驗的基石
?
Arm 正在重新定義計算的未來,而 MTE 是提供安全移動體驗的一個關(guān)鍵功能。Arm 正在與移動生態(tài)系統(tǒng)中的所有合作伙伴(包括芯片供應(yīng)商、設(shè)備制造商、操作系統(tǒng)供應(yīng)商和開發(fā)者)攜手推動實現(xiàn) MTE 功能,以減少開發(fā)時間和成本,同時提供安全可靠的用戶體驗。對于我們的生態(tài)系統(tǒng)來說,最重要的是 MTE 可以輕松地進行大規(guī)模部署。通過 Armv9 架構(gòu)——這是全球數(shù)十億移動設(shè)備的計算基礎(chǔ),MTE 現(xiàn)已廣泛普及,Arm 架構(gòu)正在成為全球數(shù)字化安全的基石。
?
評論
查看更多