Configuration MTE

MTE peut être activé indépendamment dans le noyau Android et dans n'importe quelle dans le système Android. Google n'impose aucune et vise à offrir une flexibilité maximale à l'appareil ou des compilateurs.

Ce document décrit les paramètres et la portée de MTE qui, selon nous, offre un bon compromis entre sécurité et coût pour Android les utilisateurs, qui assurent en permanence l'atténuation des vulnérabilités.

Noyau

MTE dans le noyau est configuré via la ligne de commande. La est activé par défaut en mode de synchronisation. Ces informations sont susceptibles d'être modifiées plusieurs raisons:

  • Il a été démontré qu'elle affecte considérablement les performances et les besoins le travail d'optimisation.
  • La qualité du code du noyau est généralement perçue comme insuffisante pour être livré MTE en mode application forcée (c'est-à-dire panique en cas d'échec).

La recommandation actuelle est de désactiver MTE du noyau sur appareils de production. Pour ce faire, ajoutez kasan=off au de la ligne de commande du noyau.

Espace utilisateur

Google fournit une liste par défaut des binaires d'espace utilisateur à protéger. avec MTE. La liste a été composée à partir des données d'Android Security et inclut des composants privilégiés et/ou qui gèrent des ressources d'entrée. La liste à jour des binaires natifs recommandés avec MTE sont disponibles dans la memtag-common.mk dans le build Android du système d'exploitation. En outre, plusieurs applications système sont également inclus: actuellement, NFC, Bluetooth et SecureElement. Ces binaires et applications sont activée par défaut en mode asynchrone.

Nous vous recommandons actuellement d'utiliser la liste de cibles par défaut. (aucune modification n'est requise). Il est aussi recommandé d'évaluer Ajouts du BSP et des OEM au système principal et activer MTE sur ceux-ci sensibles à la sécurité.

Applis

Les trois applications système listées ci-dessus sont les seules utilisant MTE pour le moment. Pour qu'une application tierce puisse activer MTE, son AndroidManifest.xml doit spécifier android:memtagMode avec une valeur "autre" que off. Ainsi, les suites de benchmark courantes telles que Geekbench et AnTuTu ne s'exécutent pas avec MTE. Si MTE du noyau est également désactivées (voir kasan=off ci-dessus), les benchmarks sont l'impact sur les performances est très limité, le cas échéant.

Comme pour les autres applications, la prise en charge de MTE est en cours Chrome. La version actuelle de Chrome sur le Play Store inclut Paramètre memtagMode=async dans le fichier manifeste. C'est aussi notre attente qu'un certain nombre d'applications soucieuses de la sécurité de l'écosystème Android (par exemple, les applications bancaires) feront de même. Le En revanche, nous nous attendons à ce que certaines applications les performances, comme les jeux, choisissent de laisser MTE désactivé.

Autres modes

Les instructions ci-dessus n'utilisent que le mode MTE asynchrone partout. Selon le matériel, les autres modes peuvent être presque aussi vite que possible. Ils fournissent également de meilleurs diagnostics et plus robustes d'atténuation des failles.

Nous vous recommandons de tester une ou deux autres configurations répondent à vos besoins en termes de performances et d'alimentation. Modes MTE peut être défini pour chaque cœur de CPU du système en écrivant dans /sys/devices/system/cpu/cpu*/mte_tcf_preferred Par exemple, écrire sync (ou asymm) entraînerait tout processus d'espace utilisateur qui a demandé Le mode asynchrone passe automatiquement à Google Sync (ou Asymm) qui s'exécute sur ce cœur. Cette configuration peut être effectuée dans un fichier .rc sur l'appareil au démarrage.

Nous vous recommandons de mesurer une ou deux autres configurations ils répondent à vos besoins en termes de performances et de puissance. Un peu configurations intéressantes à explorer:

  • Asymm sur tous les cœurs.
  • Asymm sur un ou plusieurs cœurs de grande taille, synchronisation sur d'autres cœurs.
<ph type="x-smartling-placeholder">

Pour vérifier qu'un processus demande le mode asynchrone (avec (mise à niveau automatique), vérifiez que la ligne suivante inclut à la fois PR_MTE_TCF_SYNC et PR_MTE_TCF_ASYNC:

  debuggerd <PID> | head -30 | grep tagged_addr

Malheureusement, il n'existe pas de méthode simple pour connaître le mode effectif d'une processus ; mais tout processus qui affiche les deux valeurs énumérées ci-dessus est soumis au comportement de mise à niveau automatique.