Konfigurasi MTE

MTE dapat diaktifkan secara independen di kernel Android dan di proses di sistem Android. Google tidak mewajibkan dan bertujuan untuk memberikan fleksibilitas maksimum pada perangkat web.

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

Kernel

MTE di {i>kernel<i} dikonfigurasi melalui baris perintah. Tujuan default adalah AKTIF dalam mode Sinkronisasi. Hal ini sewaktu-waktu dapat berubah untuk beberapa alasan:

  • Solusi ini telah terbukti memengaruhi performa dan kebutuhan secara signifikan pengoptimalan.
  • Kualitas kode kernel secara luas dianggap tidak memadai untuk dikirim MTE dalam mode penegakan (yaitu, panic-on-failure).

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

{i>Userspace<i}

Google menyediakan daftar biner userspace default yang perlu dilindungi dengan MTE. Daftar ini disusun dengan input dari Android Security dan termasuk komponen yang dilindungi hak istimewa dan/atau menangani input. Daftar terbaru biner native yang direkomendasikan dengan MTE dapat ditemukan di tindakan memtag-common.mk di build Android sistem file. Selain itu, beberapa aplikasi sistem juga termasuk: 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 perlu perubahan). Selain itu, sebaiknya Anda mengevaluasi BSP dan OEM menambahkan sistem inti dan mengaktifkan MTE pada sistem yang sensitif terhadap keamanan.

Aplikasi

Tiga aplikasi sistem yang tercantum di atas adalah satu-satunya yang menggunakan MTE saat ini. Agar aplikasi pihak ketiga dapat mengaktifkan MTE, AndroidManifest.xml-nya harus menentukan android:memtagMode dengan nilai lainnya dari off. Dengan demikian, rangkaian tolok ukur umum seperti Geekbench atau AnTuTu tidak berjalan dengan MTE. Jika MTE kernel juga dinonaktifkan (lihat kasan=off di atas), maka benchmark-nya adalah yang diperkirakan menunjukkan dampak performa yang sangat terbatas, jika ada.

Untuk aplikasi lainnya, ada pengembangan aktif dukungan MTE di Chrome. Versi Play Store Chrome saat ini mencakup Setelan memtagMode=async dalam manifes. Ini juga merupakan ekspektasi kami bahwa sejumlah aplikasi sadar keamanan di ekosistem Android (misalnya, aplikasi perbankan) pada akhirnya akan melakukan hal yang sama. Pada di sisi lain, kami berharap beberapa aplikasi yang menuntut CPU puncak performa seperti game akan memilih untuk tetap menonaktifkan MTE.

Moda lainnya

Petunjuk di atas hanya menggunakan mode MTE Asinkron di mana saja. Tergantung pada perangkat kerasnya, mode lain mungkin hampir, atau dengan sangat cepat. Mereka juga memberikan diagnostik yang lebih baik dan properti mitigasi kerentanan yang lebih kuat.

Sebaiknya uji satu atau dua konfigurasi lainnya untuk melihat apakah konfigurasi tersebut cukup baik untuk kebutuhan performa/daya Anda. Mode MTE dapat diatur untuk setiap inti CPU dalam sistem dengan menulis ke /sys/devices/system/cpu/cpu*/mte_tcf_preferred. Misalnya, menulis sync (atau asymm) akan menyebabkan proses userspace yang meminta Mode asinkron ditingkatkan secara otomatis ke versi Sinkronisasi (atau Asymm) saat yang berjalan pada inti tersebut. Penyiapan ini dapat dilakukan dalam file .rc di perangkat waktu booting.

Sebaiknya ukur satu atau dua konfigurasi lainnya untuk memeriksa apakah perangkat tersebut memenuhi persyaratan kinerja dan daya Anda. Agak besar konfigurasi yang menarik untuk dipelajari:

  • Asim di semua core.
  • Asim pada inti besar, Sinkronkan pada inti lain.

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

  debuggerd <PID> | head -30 | grep tagged_addr

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