MTE yapılandırması

MTE, Android çekirdeğinde ve Android sistemindeki herhangi bir işlemde bağımsız olarak etkinleştirilebilir. Google belirli bir yapılandırma zorunluluğu getirmez ve cihaz geliştiricilere maksimum esneklik sağlamayı amaçlar.

Bu dokümanda, Android kullanıcıları için her zaman açık olan bir güvenlik açığı azaltma çözümü olarak güvenlik ve maliyet arasında iyi bir denge sağladığına inandığımız MTE ayarları ve kapsamı açıklanmaktadır.

Patlayan mısır

Çekirdekteki MTE, komut satırı üzerinden yapılandırılır. Varsayılan olarak senkronizasyon modunda AÇIK'tır. Bu durum, birkaç nedenden dolayı gelecekte değiştirilebilir:

  • Performansı önemli ölçüde etkilediği ve optimizasyon çalışması gerektirdiği
  • Çekirdek kodu kalitesinin, MTE'yi zorunlu (yani, hata durumunda panik) modda göndermek için yetersiz olduğu yaygın olarak kabul edilmektedir.

Şu anda üretim cihazlarında çekirdek MTE'yi devre dışı bırakma önerilir. Bunu yapmak için çekirdek komut satırına kasan=off ekleyin.

Userspace

Google, MTE ile korunacak kullanıcı alanı ikili dosyalarının varsayılan listesini sağlar. Android Güvenlik Ekibi'nin katkılarıyla oluşturulan bu listede, ayrıcalıklı olan ve/veya güvenilmeyen girişleri işleyen bileşenler yer alır. MTE ile kullanılması önerilen yerel ikili dosyaların güncel listesini Android derleme sistemindeki memtag-common.mk dosyasında bulabilirsiniz. Ayrıca, birkaç sistem uygulaması da dahildir: şu anda Nfc, Bluetooth ve SecureElement. Bu ikili dosyalar ve uygulamalar varsayılan olarak Asenkron modda etkindir.

Mevcut öneri, varsayılan hedef listeyi kullanmanızdır (değişiklik gerekmez). Ayrıca, temel sisteme eklenen BSP ve OEM'leri değerlendirmeniz ve güvenlik açısından hassas olanlarda MTE'yi etkinleştirmeniz önerilir.

Uygulamalar

Şu anda MTE'yi kullanan tek uygulamalar yukarıda listelenen üç sistem uygulamasıdır. Bir üçüncü taraf uygulamasının MTE'yi etkinleştirmesi için AndroidManifest.xml değerinin android:memtagMode değerini off dışında bir değerle belirtmesi gerekir. Bu nedenle, Geekbench veya AnTuTu gibi yaygın karşılaştırma paketleri MTE ile çalışmaz. Çekirdek MTE de devre dışıysa (yukarıdaki kasan=off bölümüne bakın) karşılaştırma testlerinin, performans üzerinde çok sınırlı bir etkisinin (varsa) olması beklenir.

Diğer uygulamalarda ise Chrome'da MTE desteği için aktif geliştirme çalışmaları devam etmektedir. Chrome'un Play Store'daki mevcut sürümü, manifest dosyasında memtagMode=async ayarını içerir. Android ekosistemindeki güvenlik bilinciyle hareket eden bazı uygulamaların da (ör. bankacılık uygulamaları) zaman içinde aynısını yapmasını bekliyoruz. Öte yandan, oyunlar gibi en yüksek CPU performansını gerektiren bazı uygulamaların MTE'yi devre dışı bırakmayı tercih edeceğini umuyoruz.

Diğer modlar

Yukarıdaki talimatlarda her yerde yalnızca Eşzamansız MTE modu kullanılmaktadır. Donanıma bağlı olarak diğer modlar neredeyse veya tam olarak aynı hızda olabilir. Ayrıca daha iyi teşhisler ve daha güçlü güvenlik açığı azaltma özellikleri sunarlar.

Performans/güç gereksinimleriniz için yeterli olup olmadığını görmek üzere bir veya iki farklı yapılandırmayı test etmenizi öneririz. MTE modları, /sys/devices/system/cpu/cpu*/mte_tcf_preferred adresine yazarak sistemdeki her CPU çekirdeği için ayarlanabilir. Örneğin, sync (veya asymm) yazmak, Asenkron modu isteğinde bulunan tüm kullanıcı alanı süreçlerinin, ilgili çekirdekte çalışırken sessizce Senkronize (veya Asenkron) moduna otomatik olarak yükseltilmesine neden olur. Bu kurulum, cihazın önyükleme sırasında bir .rc dosyasında yapılabilir.

Performans ve güç gereksinimlerinizi karşılayıp karşılamadığını kontrol etmek için bir veya iki farklı yapılandırmayı ölçmenizi öneririz. Keşfedebileceğiniz bazı ilginç yapılandırmalar:

  • Tüm çekirdeklerde Asymm.
  • Büyük çekirdeklerde Asymm, diğer çekirdeklerde Sync.

Bir işlemin Asenkron modu (olası otomatik yükseltme ile) istediğini doğrulamak için aşağıdaki satırın hem PR_MTE_TCF_SYNC hem de PR_MTE_TCF_ASYNC içerdiğini kontrol edin:

  debuggerd <PID> | head -30 | grep tagged_addr

Maalesef bir işlemin etkin modunu görmenin kolay bir yolu yoktur. Ancak yukarıda listelenen her iki değeri de gösteren işlemler otomatik yükseltme davranışına tabidir.