Bạn có thể bật MTE độc lập trong nhân Android và trong bất kỳ quy trình nào trong hệ thống Android. Google không bắt buộc bất kỳ cấu hình cụ thể nào và hướng đến việc cung cấp khả năng linh hoạt tối đa cho các trình tạo thiết bị.
Theo chúng tôi, tài liệu này mô tả các chế độ cài đặt và phạm vi MTE mang lại sự cân bằng tốt giữa bảo mật và chi phí cho người dùng Android dưới dạng tính năng giảm thiểu lỗ hổng luôn bật.
Kernel
MTE trong nhân được định cấu hình thông qua dòng lệnh. Theo mặc định, chế độ này sẽ BẬT ở chế độ Đồng bộ hoá. Điều này có thể thay đổi trong tương lai vì một số lý do:
- Điều này đã được chứng minh là ảnh hưởng đáng kể đến hiệu suất và cần phải được tối ưu hoá.
- Chất lượng mã hạt nhân được nhiều người cho là chưa đủ để vận chuyển MTE ở chế độ thực thi (tức là chế độ hoảng loạn khi gặp lỗi).
Hiện tại, bạn nên tắt MTE hạt nhân trên các thiết bị chính thức. Để thực hiện việc này, hãy thêm kasan=off
vào dòng lệnh hạt nhân.
Không gian người dùng
Google cung cấp danh sách mặc định gồm các tệp nhị phân không gian người dùng cần được bảo vệ bằng MTE. Danh sách này được tạo bằng thông tin đầu vào từ Android Security và bao gồm các thành phần có đặc quyền và/hoặc xử lý các dữ liệu đầu vào không đáng tin cậy. Bạn có thể tìm thấy danh sách mới nhất về các tệp nhị phân gốc được đề xuất với MTE trong tệp memtag-common.mk trong hệ thống xây dựng Android. Ngoài ra, một số ứng dụng hệ thống cũng được đưa vào: hiện tại là Nfc, Bluetooth và SecureElement. Theo mặc định, các tệp nhị phân và ứng dụng này được bật ở chế độ Không đồng bộ.
Hiện tại, bạn nên sử dụng danh sách mục tiêu mặc định (không cần thay đổi). Ngoài ra, bạn nên đánh giá các thành phần bổ sung BSP và OEM vào hệ thống cốt lõi và bật MTE trên các thành phần nhạy cảm về bảo mật.
Ứng dụng
Ba ứng dụng hệ thống được liệt kê ở trên là những ứng dụng duy nhất sử dụng MTE tại thời điểm này. Để ứng dụng bên thứ ba bật MTE, AndroidManifest.xml
của ứng dụng đó cần chỉ định android:memtagMode
bằng một giá trị khác với off
. Do đó, các bộ điểm chuẩn phổ biến như Geekbench hoặc AnTuTu không chạy được với MTE. Nếu MTE hạt nhân cũng bị tắt (xem kasan=off
ở trên), thì các điểm chuẩn dự kiến sẽ cho thấy tác động rất hạn chế đến hiệu suất, nếu có.
Đối với các ứng dụng khác, chúng tôi đang tích cực phát triển tính năng hỗ trợ MTE trong Chrome. Phiên bản Chrome hiện tại trên Cửa hàng Play bao gồm chế độ cài đặt memtagMode=async
trong tệp kê khai. Chúng tôi cũng kỳ vọng một số ứng dụng chú trọng đến bảo mật trong hệ sinh thái Android (ví dụ: ứng dụng ngân hàng) sẽ làm như vậy. Mặt khác, chúng tôi dự kiến một số ứng dụng đòi hỏi hiệu suất CPU cao nhất (chẳng hạn như trò chơi) sẽ chọn tắt MTE.
Các chế độ khác
Hướng dẫn ở trên chỉ sử dụng chế độ MTE không đồng bộ ở mọi nơi. Tuỳ thuộc vào phần cứng, các chế độ khác có thể gần như hoặc chính xác là nhanh như vậy. Các công cụ này cũng cung cấp thông tin chẩn đoán tốt hơn và các thuộc tính giảm thiểu lỗ hổng mạnh mẽ hơn.
Bạn nên thử nghiệm một hoặc hai cấu hình khác để xem liệu các cấu hình đó có đủ tốt cho yêu cầu về hiệu suất/mức tiêu thụ điện năng của bạn hay không. Bạn có thể đặt chế độ MTE cho từng lõi CPU trong hệ thống bằng cách ghi vào /sys/devices/system/cpu/cpu*/mte_tcf_preferred
. Ví dụ: việc ghi sync
(hoặc asymm
) sẽ khiến mọi quy trình không gian người dùng đã yêu cầu chế độ Async được tự động nâng cấp lên Sync (hoặc Asymm) trong khi chạy trên lõi đó. Bạn có thể thiết lập trong tệp .rc tại thời điểm khởi động thiết bị.
Bạn nên đo lường một hoặc hai cấu hình khác để kiểm tra xem các cấu hình đó có đáp ứng các yêu cầu về hiệu suất và nguồn điện hay không. Một số cấu hình thú vị để khám phá:
- Asymm trên tất cả lõi.
- Asymm trên(các) lõi lớn, Sync trên các lõi khác.
Để xác minh rằng một quy trình đang yêu cầu chế độ Không đồng bộ (có thể tự động nâng cấp), hãy kiểm tra để đảm bảo dòng sau bao gồm cả PR_MTE_TCF_SYNC và PR_MTE_TCF_ASYNC:
debuggerd <PID> | head -30 | grep tagged_addr
Rất tiếc, không có cách nào dễ dàng để xem chế độ hiệu quả cho một quy trình; nhưng mọi quy trình hiển thị cả hai giá trị nêu trên đều tuân theo hành vi tự động nâng cấp.