Konfigurasi MTE

MTE dapat diaktifkan secara independen di kernel Android dan dalam proses apa pun di sistem Android. Google tidak mewajibkan konfigurasi tertentu dan bertujuan untuk memberikan fleksibilitas maksimum kepada pembuat perangkat.

Dokumen ini menjelaskan setelan dan cakupan MTE yang, menurut kami, memberikan kompromi yang baik antara keamanan dan biaya bagi pengguna Android sebagai mitigasi kerentanan yang selalu aktif.

Biji Jagung Meletup

MTE di kernel dikonfigurasi melalui command line. Setelan defaultnya adalah AKTIF dalam mode Sinkronisasi. Hal ini dapat berubah pada masa mendatang karena beberapa alasan:

  • Hal ini terbukti memengaruhi performa secara signifikan dan memerlukan pekerjaan pengoptimalan.
  • Kualitas kode kernel secara luas dianggap tidak memadai untuk mengirimkan MTE dalam mode penerapan (yaitu, panik saat gagal).

Rekomendasi saat ini adalah menonaktifkan MTE kernel di perangkat produksi. Untuk melakukannya, tambahkan kasan=off ke command line kernel.

Ruang pengguna

Google menyediakan daftar default biner ruang pengguna yang akan dilindungi dengan MTE. Daftar ini disusun dengan input dari Android Security dan menyertakan komponen yang memiliki hak istimewa dan/atau menangani input yang tidak tepercaya. Daftar terbaru biner native yang direkomendasikan dengan MTE dapat ditemukan di file memtag-common.mk di sistem build Android. Selain itu, beberapa aplikasi sistem juga disertakan: saat ini, Nfc, Bluetooth, dan SecureElement. Biner dan aplikasi ini diaktifkan dalam mode Asinkron secara default.

Rekomendasi saat ini adalah menggunakan daftar target default (tidak diperlukan perubahan). Selain itu, sebaiknya evaluasi penambahan BSP dan OEM ke sistem inti dan aktifkan MTE pada sistem yang sensitif terhadap keamanan.

Aplikasi

Tiga aplikasi sistem yang tercantum di atas adalah satu-satunya aplikasi yang menggunakan MTE saat ini. Agar aplikasi pihak ketiga dapat mengaktifkan MTE, AndroidManifest.xml-nya harus menentukan android:memtagMode dengan nilai selain off. Oleh karena itu, suite benchmark umum seperti Geekbench atau AnTuTu tidak berjalan dengan MTE. Jika MTE kernel juga dinonaktifkan (lihat kasan=off di atas), benchmark diharapkan akan menunjukkan dampak performa yang sangat terbatas, jika ada.

Untuk aplikasi lainnya, ada pengembangan aktif dukungan MTE di Chrome. Chrome versi Play Store saat ini menyertakan setelan memtagMode=async dalam manifes. Kami juga berharap sejumlah aplikasi yang mengutamakan keamanan di ekosistem Android (misalnya, aplikasi perbankan) pada akhirnya akan melakukan hal yang sama. Di sisi lain, kami memperkirakan bahwa beberapa aplikasi yang menuntut performa CPU puncak seperti game akan memilih untuk tetap menonaktifkan MTE.

Mode lainnya

Petunjuk di atas hanya menggunakan mode MTE Asinkron di mana saja. Bergantung pada hardware, mode lain mungkin hampir, atau sama cepatnya. Alat ini juga memberikan diagnostik yang lebih baik dan properti mitigasi kerentanan yang lebih kuat.

Sebaiknya uji satu atau dua konfigurasi lain untuk melihat apakah konfigurasi tersebut cukup baik untuk persyaratan performa/daya Anda. Mode MTE dapat ditetapkan untuk setiap core CPU dalam sistem dengan menulis ke /sys/devices/system/cpu/cpu*/mte_tcf_preferred. Misalnya, menulis sync (atau asymm) akan menyebabkan proses ruang pengguna yang telah meminta mode Asinkron diupgrade secara otomatis ke Sinkron (atau Asim) saat berjalan di core tersebut. Penyiapan ini dapat dilakukan dalam file .rc pada waktu booting perangkat.

Sebaiknya ukur satu atau dua konfigurasi lain untuk memeriksa apakah konfigurasi tersebut memenuhi persyaratan performa dan daya Anda. Beberapa konfigurasi menarik untuk dijelajahi:

  • Asymm di semua core.
  • Asymm pada core besar, Sync pada core lainnya.

Untuk memverifikasi bahwa proses meminta mode Asinkron (dengan kemungkinan upgrade otomatis), pastikan baris berikut menyertakan PR_MTE_TCF_SYNC dan PR_MTE_TCF_ASYNC:

  debuggerd <PID> | head -30 | grep tagged_addr

Sayangnya, tidak ada cara mudah untuk melihat mode yang efektif untuk proses; tetapi setiap proses yang menampilkan kedua nilai yang tercantum di atas tunduk pada perilaku upgrade otomatis.