記憶體安全:Arm 記憶體標籤擴充如何應對產業的安全挑戰

全面瞭解記憶體標籤擴充(Memory Tagging Extension, MTE)、如何在 Arm 行動生態系中落實 MTE,以及為何 MTE 是解決記憶體安全性漏洞此一業界挑戰的重要安全功能。

 

Arm 終端產品事業部安全和隱私策略總監 盧旻盛

 

Arm 記憶體標籤擴充如何應對產業的安全挑戰

 

運算的未來將由我們日常生活中各個方面的日益數位化所驅動,這也將導致軟體和系統複雜性的不斷增加。根據美國國家標準與技術研究院 (NIST) 報告指出,2022 年舉報的漏洞數量超過 23,000 個(其中超過 17,000 個被歸類為嚴重漏洞),連續六年創下新高。

 

利用構建於最新 Armv9 架構的 Arm CPU,我們可提供記憶體標籤擴充(Memory Tagging Extension, MTE)等安全功能,以降低上述複雜性,並為軟體開發者、晶片供應商和裝置製造商提供影響深遠的資訊安全、功能安全、成本和上市時間優勢。Armv9 在安全性的改進,可將某些類別的漏洞減少高達 95%,例如在所有嚴重安全性漏洞中占比最大的記憶體安全違規。

 

Arm 的 MTE 作為 Armv8.5 指令集的組成部分於 2019 年八月首次推出,而後 Arm 於 2021 年五月宣佈將其內建於首款相容 Armv9 的 CPU 中。早在 Armv9 架構推出之前,Google 就宣佈在 Android 中採用 Arm 的 MTE,並致力於在整個 Android 堆疊中支援 MTE。2022 年年底,榮耀在其開發者大會上宣佈,將透過榮耀天網並在未來的 DiagnosisKit 工具中向開發者提供支援 MTE 的 MagicOS 6.x 和 MagicOS 7 裝置。未來,這可能搭載在榮耀的行動裝置中。

 

在本文中,我們將回答有關 MTE 的關鍵問題,包括什麼是 MTE,它如何應對諸如記憶體安全之類的安全挑戰,它的優勢是什麼,以及我們的合作夥伴對該功能做了哪些努力。

 

MTE 的作用是什麼?它如何在 Arm 生態系中促成更出色的軟體?

 

利用 MTE,開發者可以快速找到記憶體相關漏洞,加快應用調試和開發流程。此外,該功能支援動態更改配置,這意味著在現場可透過漏洞報告和遙測系統,向開發者回傳有關存取故障位置的準確資訊。

 

值得注意的是,許多開發者首次使用 MTE 時可能會發現更多漏洞,遠超過他們所能夠修復的數量。但是,開發者可決定在產品發佈之前先修復最嚴重的漏洞,然後在更新過程中解決不太嚴重的漏洞。此外,隨著時間推移,開發者的程式碼將變得越來越清晰,因為在隨後的全域掃描中捕捉出的漏洞數量會減少,使這一流程更加省時。當機、投訴和演練的頻率也會隨之降低。

 

借助 MTE,開發者可在部署前後進行檢測並避免記憶體安全性漏洞,進而使更廣泛的行動生態系受惠。在部署之前找到並修復漏洞對於確保安全至關重要,因為這可以減少已部署程式碼的攻擊面。在部署之後檢測漏洞,可以在漏洞被大範圍利用之前對漏洞進行反應性修復,而 MTE 可協助開發者進行此類檢測。這樣就能夠有力地抵禦試圖破壞安全程式碼的攻擊。

 

圖表: Arm 記憶體標籤擴充 (Arm Memory Tagging Extension)

 

圖表: Arm 記憶體標籤擴充 (MTE)

 

 

解決記憶體安全違規為什麼如此重要?

 

數十年以來,記憶體安全一直都是安全性漏洞的主要來源。據作業系統供應商(OSV)報告,其產品中的大多數安全問題都源自於記憶體安全違規導致的漏洞。Google的 Chromium 專案團隊表示,記憶體安全問題在所有嚴重安全性漏洞中佔了 70%。

 

記憶體安全違規可能會對用戶產生巨大影響。惡意應用可透過不安全的記憶體來存取敏感性資料,比如:使用者憑證和密碼,這使得不法份子就能夠存取機密資料。除了安全方面,由未解決的記憶體安全性漏洞導致的中斷會降低用戶滿意度,不僅增加軟體開發成本,並且將來要耗費更多時間來解決此類問題。

 

美國國家安全局 (NSA) 近期發佈了一項指南,用以説明軟體開發者和營運商防止和減少軟體記憶體安全問題,其網路安全技術總監 Neal Ziring 表示:「記憶體管理問題已經存在了幾十年,今天仍非常普遍。」該機構的「軟體記憶體安全」網路安全資訊表,重點介紹了惡意網路行為者如何利用記憶體管理不善的問題來存取敏感性資料,發佈未獲授權的程式碼執行,以及所造成的其他負面影響。

 

什麼是記憶體安全違規?

 

記憶體安全違規有兩種主要類型:空間安全違規和時間安全違規。MTE 可提供在生產程式碼中檢測這兩種違規的機制,且無需使用任何儀器。

 

當在某個物件的真實邊界之外存取該物件時,就違反了空間安全。例如:將資料寫入緩衝區或其他物件之外時。這可能會被用來改變函數指標、保存寄存器或類似物件的目標位址。

 

當在某個物件已過期後使用了該物件的參考時,就違反了時間安全,通常是在該物件的記憶體已被釋放之後 - 利用現有的「記憶體釋放後使用」漏洞。憑藉對分配器的瞭解,攻擊者可以放置新的惡意物件來替代預期版本。

 

MTE 的工作原理是什麼?

 

Arm 運作的 MTE 為兩階段系統,即「鎖」和「金鑰」。如果金鑰匹配,則允許存取鎖記憶體;否則,存取動作可能會被記錄下來或偵錯。這樣就可以更輕鬆地檢測到難以捕捉的記憶體安全錯誤,也有助於進行常規調試。

 

在鎖和金鑰兩階段系統中,存在兩種類型的標記:

 

位址標記,用作金鑰。這將在進程中每個指標的最高位增加四位。位址標記僅適用於64位元應用,因為它使用了「高位元組忽略」功能,這是 Arm 64 位元的一個功能。

 

記憶體標記,用作鎖。記憶體標記也由四位元組成,與應用記憶體空間中每個對齊的 16 位元組區域相連接。Arm 將這些 16 位元組區域稱為標記顆粒。這四位元並不用於應用資料,而且是分開儲存。

 

行動裝置為什麼需要 MTE?

 

未來市場上的行動裝置將具有更先進的運算能力,因此攻擊面也更大。同時,透過這些裝置獲得的個人內容和資料的數量和價值也在不斷增加。因此,需要實施一種安全性功能,為終端使用者提供安全生態系和安全的數位體驗。

 

MTE 非常靈活,可在產品開發和部署的各個階段部署在不同配置中。例如:MTE 可根據進程配置為非同步和同步模式。非同步模式的運行成本非常低,並且可用於確定存在記憶體問題的程式碼區域,而同步模式會在遇到導致安全違規的指令時出錯,並在檢測到漏洞時產生大量的調試資訊。這種靈活性對大規模部署尤其有用,因為 MTE 具有高度的可擴展性,能夠在數百萬甚至數十億台裝置上運行,為系統和應用軟體提供可靠的錯誤檢測功能。

 

Arm 在 MTE 方面的合作夥伴是誰?

 

2019 年八月,Google 宣佈在 Android 系統中採用 Arm 的 MTE,承諾在 Android 堆疊中支援 MTE,並表示透過使用該技術,「即便有記憶體漏洞可利用,也將變得非常困難。」

 

Arm 與 Google 在 MTE 技術方面的合作在於檢測現有程式碼庫和寫入的新程式碼中存在的記憶體安全性漏洞。以下是 Google 的 Kostya Serebryany 和 Sudhi Herle 的評論:

 

「我們相信,記憶體標籤將能夠檢測到環境中最常見的幾種記憶體安全性漏洞,同時幫助供應商識別並修復這些漏洞,並阻止惡意行為者利用這些漏洞。」

 

Android 12 添加了一個 MTE 初始實作,可檢測到「記憶體釋放後使用」漏洞和「緩衝區溢位」漏洞,而這些都是 Google 程式碼庫中最常見的記憶體安全性漏洞來源。在 Android 13 中,Google 添加了一個開發者模式啟動開關,以便在具有硬體支援但未永久開啟 MTE 功能的裝置上啟用 MTE。對於未來的 Android 版本,Arm 和 Google 將重點關注降低 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-X3Cortex-A715Cortex-A510 最新版本 (A510-r1) CPU 的晶片組都將內建非對稱 MTE。

 

Arm 架構是安全的數位體驗的基礎

 

Arm 正在重新定義運算的未來,而 MTE 是提供安全行動體驗的一個關鍵功能。Arm 正在與行動生態系中的所有合作夥伴(包括晶片供應商、裝置製造商、作業系統供應商和開發者)攜手推動落實 MTE 功能,以減少開發時間和成本,同時提供安全可靠的使用者體驗。對於我們的生態系來說,最重要的是 MTE 可以輕鬆地進行大規模部署。透過 Armv9 架構 - 這是全球數十億行動裝置的運算基礎,MTE 現已廣泛普及,Arm 架構正在成為全球數位化安全的基礎。

 

原文出處: Memory safety: How Arm Memory Tagging Extension addresses this industry-wide security challenge