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