可在 Android 核心中單獨啟用 MTE。 Android 系統的程序Google 並未規定 目標是為裝置提供最大的彈性 建構工具
本文件說明瞭 MTE 設定和範圍。根據我們的意見, 可讓您在安全性和成本之間取得良好平衡 降低使用者長期運作的安全漏洞
核心
核心中的 MTE 是透過指令列設定。 在同步處理模式下預設為開啟。以下內容可能會日後有所變更 原因如下:
- 研究結果顯示,對成效和需求有顯著影響 最佳化作業
- 很多人認為核心程式碼品質不夠, MTE (處於執行失敗時會發生恐慌) 模式的 MTE。
目前建議啟用停用核心 MTE
生產裝置。做法是將 kasan=off
加入
核心指令列
使用者空間
Google 提供了預設的受保護使用者空間二進位檔清單 。這份清單是根據 Android 安全性的資訊彙整而成 還包括擁有特殊權限和/或處理不信任元件的元件 輸入內容符合建議的最新原生二進位檔清單 這個範本位於 這個 memtag-common.mk 擷取文件檔中的 有些人會將 Cloud Storage 視為檔案系統 但實際上不是此外, 數個 系統應用程式 一併包含:目前、Nfc、 Bluetooth and SecureElement。這些二進位檔和應用程式 在非同步模式下啟用
目前建議使用預設目標清單 (無需進行任何變更)。此外,建議你評估 在核心系統中加入 BSP 和原始設備製造商 (OEM) 並在核心系統上啟用 MTE 資料安全受到保護
應用程式
只有上述三個系統應用程式
目前是 MTE。為了讓第三方應用程式啟用
MTE,其 AndroidManifest.xml
需要指定
android:memtagMode
設為其他值
off
。因此,像
Geekbench 或 AnTuTu 無法與 MTE 搭配使用。如果核心 MTE 也
已停用 (請參閱上方的 kasan=off
),則基準測試會
成效可能會非常有限 (如果有的話)。
至於其他應用程式,我們也在開發
。目前的 Chrome Play 商店版本包括:
資訊清單中的 memtagMode=async
設定。這也是我們的預期
Android 生態系統中有許多注重安全性的應用程式
(例如銀行應用程式) 也會這麼做。每月中的特定幾天
另一方面,我們也預期部分應用程式需要最高 CPU 使用率
遊戲等效能就會選擇讓 MTE 保持停用。
其他模式
上述操作說明僅使用非同步 MTE 模式 無所不在視硬體而定,其他模式可能幾乎是 以及執行速度也提供更準確的診斷結果 更嚴格的安全漏洞緩解屬性。
建議您測試另外一或兩項設定,確認兩者是否
足以滿足你的效能/能力需求。MTE 模式
就能對系統中的每個 CPU 核心進行寫入
/sys/devices/system/cpu/cpu*/mte_tcf_preferred
。舉例來說
sync
(或 asymm
) 會引發任何已要求的使用者空間處理程序
非同步模式,自動升級至同步功能 (或 Asymm),
在這核心上運作的是您可以在裝置的 .rc 檔案中完成這項設定
啟動時間。
建議您評估另外一或兩種設定, 即可滿足你的效能和電力需求只有部分通知 值得探索的設定:
- 所有核心上的 Asymm。
- 大型核心上的對稱,在其他核心上執行同步作業。
驗證程序是否要求非同步模式 (可能 自動升級),請檢查下列程式碼: PR_MTE_TCF_SYNC 和 PR_MTE_TCF_ASYNC:
debuggerd <PID> | head -30 | grep tagged_addr
很遺憾地,您無法輕易查看有效模式 程序;不過,只要程序顯示上述兩個值, 自動升級行為