記憶體安全:Arm 記憶體標籤擴充如何應對產業的安全挑戰
全面瞭解記憶體標籤擴充(Memory Tagging Extension, MTE)、如何在 Arm 行動生態系中落實 MTE,以及為何 MTE 是解決記憶體安全性漏洞此一業界挑戰的重要安全功能。
Arm 終端产物事業部安全和隱私策略總監 卢旻盛
运算的未来将由我们日常生活中各个方面的日益数位化所驱动,这也将导致软体和系统复杂性的不断增加。根据指出,2022 年舉報的漏洞數量超過 23,000 個(其中超過 17,000 個被歸類為嚴重漏洞),連續六年創下新高。
利用構建於最新 Armv9 架构的 Arm CPU,我們可提供記憶體標籤擴充(Memory Tagging Extension, MTE)等安全功能,以降低上述複雜性,並為軟體開發者、晶片供应商和裝置製造商提供影響深遠的資訊安全、功能安全、成本和上市時間優勢。Armv9 在安全性的改進,可將某些類別的漏洞減少高達 95%,例如在所有嚴重安全性漏洞中占比最大的記憶體安全違規。
作為 Armv8.5 指令集的組成部分於 2019 年八月首次推出,而後 Arm 於 2021 年五月宣佈將其內建於 中。早在 Armv9 架构推出之"前,Google 就宣佈在,並致力於在整個 Android 堆疊中支援 MTE。2022 年年底,榮耀在其開發者大會上宣佈,將透過榮耀天網並在未來的 DiagnosisKit 工具中向開發者提供支援 MTE 的 MagicOS 6.x 和 MagicOS 7 裝置。未來,這可能搭載在榮耀的行動裝置中。
在本文中,我們將回答有關 MTE 的關鍵問題,包括什麼是 MTE,它如何應對諸如記憶體安全之"類的安全挑戰,它的優勢是什麼,以及我們的合作伙伴對該功能做了哪些努力。
MTE 的作用是什麼?它如何在 Arm 生態系中促成更出色的軟體?
利用 MTE,開發者可以快速找到記憶體相關漏洞,加快應用調試和開發流程。此外,該功能支援動態更改配置,這意味著在現場可透過漏洞報告和遙測系統,向開發者回傳有關存取故障位置的準確資訊。
值得注意的是,許多開發者首次使用 MTE 時可能會發現更多漏洞,遠超過他們所能夠修復的數量。但是,開發者可決定在产物發佈之"前先修復最嚴重的漏洞,然後在更新過程中解決不太嚴重的漏洞。此外,隨著時間推移,開發者的程式碼將變得越來越清晰,因為在隨後的全域掃描中捕捉出的漏洞數量會減少,使這一流程更加省時。當機、投訴和演練的頻率也會隨之"降低。
借助 MTE,開發者可在部署前後進行檢測並避免記憶體安全性漏洞,進而使更廣泛的行動生態系受惠。在部署之"前找到並修復漏洞對於確保安全至關重要,因為這可以減少已部署程式碼的攻擊面。在部署之"後檢測漏洞,可以在漏洞被大範圍利用之"前對漏洞進行反應性修復,而 MTE 可協助開發者進行此類檢測。這樣就能夠有力地抵禦試圖破壞安全程式碼的攻擊。
解决记忆体安全违规為什麼如此重要?
數十年以來,記憶體安全一直都是安全性漏洞的主要來源。據作業系統供应商(OSV)報告,其产物中的大多數安全問題都源自於記憶體安全違規導致的漏洞。Google的 表示,記憶體安全問題在所有嚴重安全性漏洞中佔了 70%。
记忆体安全违规可能会对用户产生巨大影响。恶意应用可透过不安全的记忆体来存取敏感性资料,比如:使用者凭证和密码,这使得不法份子就能够存取机密资料。除了安全方面,由未解决的记忆体安全性漏洞导致的中断会降低用户满意度,不仅增加软体开发成本,并且将来要耗费更多时间来解决此类问题。
,用以説明軟體開發者和營運商防止和減少軟體記憶體安全問題,其網路安全技術總監 Neal Ziring 表示:「記憶體管理問題已經存在了幾十年,今天仍非常普遍。」該機構的「軟體記憶體安全」網路安全資訊表,重點介紹了惡意網路行為者如何利用記憶體管理不善的問題來存取敏感性資料,發佈未獲授權的程式碼執行,以及所造成的其他負面影響。
什麼是记忆体安全违规?
记忆体安全违规有两种主要類型:空間安全違規和時間安全違規。MTE 可提供在生產程式碼中檢測這两种違規的機制,且無需使用任何儀器。
当在某个物件的真实边界之"外存取该物件时,就违反了空间安全。例如:将资料写入缓衝区或其他物件之"外时。这可能会被用来改变函数指标、保存寄存器或类似物件的目标位址。
當在某個物件已過期後使用了該物件的參考時,就違反了時間安全,通常是在該物件的記憶體已被釋放之"後 - 利用現有的「記憶體釋放後使用」漏洞。憑藉對分配器的瞭解,攻擊者可以放置新的惡意物件來替代預期版本。
MTE 的工作原理是什麼?
Arm 運作的 MTE 為兩階段系統,即「鎖」和「金鑰」。如果金鑰匹配,則允許存取鎖記憶體;否則,存取動作可能會被記錄下來或偵錯。這樣就可以更輕鬆地檢測到難以捕捉的記憶體安全錯誤,也有助於進行常規調試。
在鎖和金鑰兩階段系統中,存在两种類型的標記:
位址標記,用作金鑰。這將在進程中每個指標的最高位增加四位。位址標記僅適用於64位元應用,因為它使用了「高位元組忽略」功能,這是 Arm 64 位元的一個功能。
記憶體標記,用作鎖。記憶體標記也由四位元組成,與應用記憶體空間中每個對齊的 16 位元組區域相連接。Arm 將這些 16 位元組區域稱為標記顆粒。這四位元並不用於應用資料,而且是分開儲存。
行動裝置為什麼需要 MTE?
未来市场上的行动装置将具有更先进的运算能力,因此攻击面也更大。同时,透过这些装置获得的个人内容和资料的数量和价值也在不断增加。因此,需要实施一种安全性功能,為终端使用者提供安全生态系和安全的数位体验。
MTE 非常靈活,可在产物開發和部署的各個階段部署在不同配置中。例如:MTE 可根據進程配置為非同步和同步模式。非同步模式的運行成本非常低,並且可用於確定存在記憶體問題的程式碼區域,而同步模式會在遇到導致安全違規的指令時出錯,並在檢測到漏洞時產生大量的調試資訊。這種靈活性對大規模部署尤其有用,因為 MTE 具有高度的可擴展性,能夠在數百萬甚至數十億台裝置上運行,為系統和應用軟體提供可靠的錯誤檢測功能。
Arm 在 MTE 方面的合作伙伴是誰?
2019 年八月,Google 宣佈在 ,承諾在 Android 堆疊中支援 MTE,並表示透過使用該技術,「即便有記憶體漏洞可利用,也將變得非常困難。」
Arm 與 Google 在 MTE 技術方面的合作在於檢測現有程式碼庫和寫入的新程式碼中存在的記憶體安全性漏洞。以下是 Google 的 Kostya Serebryany 和 Sudhi Herle 的評論:
「我们相信,记忆体标籤将能够检测到环境中最常见的几种记忆体安全性漏洞,同时帮助供应商识别并修復这些漏洞,并阻止恶意行為者利用这些漏洞。」
添加了一個 MTE 初始實作,可檢測到「記憶體釋放後使用」漏洞和「緩衝區溢位」漏洞,而這些都是 Google 程式碼庫中最常見的記憶體安全性漏洞來源。在 中,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 年六月發佈的,我們推出了全新的非對稱 MTE,在安全性漏洞檢測速度、精確度和針對性之"間展現了更高的靈活性。這可提高應用的穩定性,有利於軟體發展,同時有助於在整個生態系中更廣泛地推廣 MTE。採用 Arm Cortex-X3、Cortex-A715 和 Cortex-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