Configurazione MTE

MTE può essere abilitato in modo indipendente nel kernel Android e in qualsiasi nel sistema Android. Google non impone alcun obbligo e mira a fornire la massima flessibilità al dispositivo costruttori.

Questo documento descrive le impostazioni e l'ambito dell'MTE che, a nostro parere, offre un buon compromesso tra sicurezza e costi per Android come mitigazione sempre attiva delle vulnerabilità.

Kernel

L'MTE nel kernel è configurato tramite la riga di comando. La per impostazione predefinita è ON in modalità di sincronizzazione. Questa modifica è soggetta a modifiche future per per diversi motivi:

  • È stato dimostrato che influisce significativamente su prestazioni ed esigenze delle attività di ottimizzazione.
  • La qualità del codice del kernel è ampiamente percepita come insufficiente da distribuire MTE in modalità di applicazione forzata (panic-on-failure).

Il consiglio attuale è di disabilitare l'MTE del kernel su i dispositivi di produzione. Per farlo, aggiungi kasan=off al alla riga di comando del kernel.

Spazio utente

Google fornisce un elenco predefinito di file binari dello spazio utente da proteggere con MTE. L'elenco è stato composto con l'input di Android Security e include componenti con privilegi e/o gestiscono componenti non attendibili di input. L'elenco aggiornato di file binari nativi consigliati con MTE è disponibile in il memtag-common.mk nella build di Android di un sistema operativo completo. Inoltre, diversi app di sistema attualmente sono inclusi Nfc, Bluetooth e SecureElement. Questi programmi binari e app vengono è attivata per impostazione predefinita in modalità asincrona.

Il consiglio attuale è di utilizzare l'elenco di target predefinito (non è necessario apportare modifiche). Inoltre, si consiglia di valutare Aggiunte BSP e OEM al sistema di base e attivazione di MTE su quelli sensibili alla sicurezza.

App

Le tre app di sistema elencate sopra sono le uniche che utilizzano MTE in questo momento. Affinché un'app di terze parti possa attivare MTE, AndroidManifest.xml deve specificare android:memtagMode con un valore other di off. Di conseguenza, suite di benchmark comuni Geekbench o AnTuTu non funzionano con MTE. Se anche il kernel MTE è disattivata (vedi kasan=off sopra), i benchmark sono che si prevede un impatto sul rendimento molto limitato, se non del tutto.

Per quanto riguarda le altre app, è attivo lo sviluppo del supporto degli MTE in Chrome. L'attuale versione del Play Store di Chrome include memtagMode=async nel manifest. È anche nostra aspettativa che alcune app attente alla sicurezza nell'ecosistema Android come le app di online banking. Il giorno dall'altro, ci aspettiamo che alcune app che richiedano picchi di CPU come i giochi, l'opzione MTE verrà disattivata.

Altre modalità

Le istruzioni riportate sopra utilizzano solo la modalità MTE asincrona ovunque. A seconda dell'hardware, altre modalità possono essere quasi o altrettanto rapidamente. Offrono inoltre una diagnostica migliore e con migliori proprietà di mitigazione delle vulnerabilità.

Ti consigliamo di testare una o due altre configurazioni per vedere se sono sufficienti per soddisfare i requisiti di prestazioni e potenza. Modalità MTE può essere impostato per ogni core della CPU nel sistema scrivendo /sys/devices/system/cpu/cpu*/mte_tcf_preferred. Ad esempio, scrivendo sync (o asymm) causerebbe qualsiasi processo dello spazio utente che ha richiesto la modalità asincrona di cui eseguire l'upgrade automatico automatico a Sync (o Asymm) mentre in esecuzione su quel core. Questa configurazione può essere eseguita in un file .rc sul dispositivo all'avvio del dispositivo.

Consigliamo di misurare una o due altre configurazioni per verificare soddisfano i tuoi requisiti di prestazioni e alimentazione. Alcune configurazioni interessanti da esplorare:

  • Asymm su tutti i core.
  • Asymm su core di grandi dimensioni, Sincronizzazione su altri core.
di Gemini Advanced.

Per verificare che un processo richieda la modalità asincrona (con possibili upgrade automatico), controlla che la seguente riga includa entrambi PR_MTE_TCF_SYNC e PR_MTE_TCF_ASYNC:

  debuggerd <PID> | head -30 | grep tagged_addr

Sfortunatamente, non è facile capire quale sia la modalità effettiva di un processo; ma qualsiasi processo che mostri entrambi i valori elencati sopra in base al comportamento di upgrade automatico.