Android 13 introduce un'ABI per consentire allo spazio utente di comunicare MTE al bootloader. Può essere utilizzata per abilitare la funzionalità MTE sui dispositivi dispongono del supporto hardware ma non vengono forniti con la funzionalità MTE abilitata per impostazione predefinita, oppure a disattivare la funzionalità MTE sui dispositivi in dotazione.
Supporto del bootloader
Per supportare questa ABI, il bootloader deve leggere
misc_memtag_message
(definito in
bootloader_message.h) dalla partizione misc
.
Se viene trovato un misc_memtag_message
valido
(MISC_VIRTUAL_AB_MAGIC_HEADER
corrisponde e il numero di versione è supportato),
il bootloader calcola
memtag = (default_memtag && !(misc.memtag_mode &MISC_MEMTAG_MODE_MEMTAG_OFF)) || misc.memtag_mode e MISC_MEMTAG_MODE_MEMTAG || misc.memtag_mode e MISC_MEMTAG_MODE_MEMTAG_ONCE memtag_kernel = misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL || misc.memtag_mode e MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
default_memtag
è l'impostazione di attivazione/disattivazione predefinita del tag per
. Se memtag
è true, il bootloader configura il tag MTE
prenotazione, attiva i controlli dei tag nei livelli di eccezione inferiori e
comunica al kernel la regione riservata ai tag tramite DT. Se
memtag
è false, il bootloader aggiunge arm64.nomte alla
alla riga di comando del kernel.
Se memtag_kernel
è true, il bootloader aggiunge
kasan=on
alla riga di comando del kernel.
Il bootloader DEVE cancellare i dati di MISC_MEMTAG_MODE_MEMTAG_ONCE
e
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
a ogni avvio.
Se il bootloader supporta fastboot oem mte
, sui set
MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
per
(1, 0, 0)
e spento a (0, 0, 1)
, mentre
in modo da preservare
gli altri flag.
Devi configurare il prodotto per creare il programma binario mtectrl
per il supporto dello spazio utente. Imposta quindi
ro.arm64.memtag.bootctl_supported
proprietà di sistema da indicare
al sistema che il tuo bootloader supporta il messaggio memtag.
Interfaccia utente
Quando la proprietàro.arm64.memtag.bootctl_supported
è impostata, viene generato
nel menu Opzioni sviluppatore consente all'utente di eseguire un riavvio soltanto con MTE
in un bucket con il controllo
delle versioni attivo. Il pubblico di destinazione è costituito dagli sviluppatori di app che vogliono testare
le loro app con MTE.
Proprietà di sistema
Per un utilizzo avanzato, la proprietà di sistema
arm64.memtag.bootctl
può utilizzare un elenco separato da virgole di
i seguenti valori:
-
memtag: abilita in modo permanente l'MTE dello spazio utente (impostato
MISC_MEMTAG_MODE_MEMTAG
) -
memtag-once: attiva l'MTE dello spazio utente una volta (impostato
MISC_MEMTAG_MODE_MEMTAG_ONCE
) -
memtag-kernel: abilita MTE kernel-space (impostato
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) -
memtag-kernel-once: abilita MTE nello spazio kernel una volta
(
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) -
memtag-off: disattiva la funzionalità MTE (impostata
MISC_MEMTAG_MODE_MEMTAG_OFF
)
Affinché la nuova impostazione abbia effetto (così com'è), è necessario riavviare il sistema applicati dal bootloader).