MTE Yapılandırması

MTE, Android çekirdeğinde ve Android sistemindeki herhangi bir süreçte bağımsız olarak etkinleştirilebilir. Google herhangi bir özel yapılandırmayı zorunlu kılmaz ve cihaz üreticilerine maksimum esneklik sağlamayı amaçlar.

Bu belgede, bizim görüşümüze göre, her zaman açık olan güvenlik açığının azaltılması olarak Android kullanıcıları için güvenlik ve maliyet arasında iyi bir denge sağlayan MTE ayarları ve kapsamı açıklanmaktadır.

Çekirdek

Çekirdekteki MTE, komut satırı aracılığıyla yapılandırılır. Senkronizasyon modunda varsayılan ayar AÇIK'tır. Bu, birkaç nedenden dolayı gelecekte değişikliğe tabidir:

  • Performansı önemli ölçüde etkilediği ve optimizasyon çalışmasına ihtiyaç duyduğu gösterilmiştir.
  • Çekirdek kodu kalitesinin, MTE'yi zorunlu (yani arıza durumunda panik) modda göndermek için yetersiz olduğu yaygın olarak algılanmaktadır.

Mevcut öneri, üretim cihazlarında çekirdek MTE'nin devre dışı bırakılmasıdır . Bunu yapmak için çekirdek komut satırına kasan=off ekleyin.

Kullanıcı alanı

Google, MTE ile korunacak kullanıcı alanı ikili dosyalarının varsayılan bir listesini sağlar. Liste, Android Security'den gelen girdilerle oluşturulmuştur ve ayrıcalıklı ve/veya güvenilmeyen girişleri işleyen bileşenleri içerir. MTE ile önerilen yerel ikili dosyaların güncel listesi, Android derleme sistemindeki memtag-common.mk dosyasında bulunabilir. Ek olarak çeşitli sistem uygulamaları da dahildir: şu anda NFC, Bluetooth ve SecureElement. Bu ikili dosyalar ve uygulamalar varsayılan olarak Async modunda etkinleştirilir.

Mevcut öneri , varsayılan hedef listesinin kullanılmasıdır (değişikliğe gerek yoktur). Ayrıca çekirdek sisteme yapılan BSP ve OEM eklemelerinin değerlendirilerek güvenlik açısından hassas olanlarda MTE'nin etkinleştirilmesi önerilir.

Uygulamalar

Yukarıda listelenen üç sistem uygulaması şu anda MTE kullanan tek uygulamadır. Üçüncü taraf bir uygulamanın MTE'yi etkinleştirmesi için AndroidManifest.xml dosyasında android:memtagMode off dışında bir değerle belirtilmesi gerekir. Bu nedenle Geekbench veya AnTuTu gibi ortak kıyaslama paketleri MTE ile çalışmaz. Çekirdek MTE'si de devre dışı bırakılırsa (yukarıdaki kasan=off bakın), bu durumda kıyaslamaların, eğer varsa, çok sınırlı performans etkisi göstermesi beklenir.

Diğer uygulamalara gelince, Chrome'da MTE desteği aktif olarak geliştirilmektedir. Chrome'un mevcut Play Store sürümü, bildirimde memtagMode=async ayarını içeriyor. Ayrıca Android ekosistemindeki bazı güvenlik bilincine sahip uygulamaların (örneğin bankacılık uygulamaları) da eninde sonunda aynısını yapması da beklentimizdir. Öte yandan oyunlar gibi en yüksek CPU performansını gerektiren bazı uygulamaların MTE'yi devre dışı bırakmayı tercih etmesini bekliyoruz.

Diğer modlar

Yukarıdaki talimatlar her yerde yalnızca Eşzamansız MTE modunu kullanır. Donanıma bağlı olarak diğer modlar da hemen hemen veya tam olarak aynı hızda olabilir. Ayrıca daha iyi tanılama ve bir ölçüde daha güçlü güvenlik açığı azaltma özellikleri sağlarlar.

Performansınız/güç gereksinimleriniz için yeterince iyi olup olmadıklarını görmek amacıyla bir veya iki yapılandırmayı daha test etmenizi öneririz. MTE modları sistemdeki her CPU çekirdeği için /sys/devices/system/cpu/cpu*/mte_tcf_preferred dosyasına yazılarak ayarlanabilir. Örneğin, sync (veya asymm ) yazmak, Async modunu talep eden herhangi bir kullanıcı alanı işleminin, o çekirdek üzerinde çalışırken sessizce otomatik olarak Sync'e (veya Asymm'e) yükseltilmesine neden olur. Bu kurulum, cihazın önyüklemesi sırasında bir .rc dosyasında yapılabilir.

Performansınızı ve güç gereksinimlerinizi karşılayıp karşılamadıklarını kontrol etmek için bir veya iki yapılandırmayı daha ölçmenizi öneririz. Keşfedilecek bazı ilginç konfigürasyonlar:

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

Bir işlemin Async modunu istediğini doğrulamak için (otomatik yükseltme mümkündür), aşağıdaki satırın hem PR_MTE_TCF_SYNC hem de PR_MTE_TCF_ASYNC içerdiğini kontrol edin:

  debuggerd  | head -30 | grep tagged_addr

Ne yazık ki bir sürecin etkili modunu görmenin kolay bir yolu yoktur; ancak yukarıda listelenen her iki değeri de gösteren herhangi bir işlem, otomatik yükseltme davranışına tabidir.