Android 13 führt ein ABI für den User-Space ein, um dem Bootloader den angeforderten MTE-Modus mitzuteilen. Dies kann verwendet werden, um MTE auf Geräten zu aktivieren, die über Hardwareunterstützung verfügen, MTE jedoch nicht standardmäßig aktiviert ausliefern, oder um MTE auf Geräten zu deaktivieren, die damit ausgeliefert werden.
Bootloader-Unterstützung
Um diese ABI zu unterstützen, muss Ihr Bootloader die misc_memtag_message
(definiert in bootloader_message.h ) von der misc
Partition lesen. Wenn eine gültige misc_memtag_message
gefunden wird ( MISC_VIRTUAL_AB_MAGIC_HEADER
stimmt überein und die Versionsnummer wird unterstützt), berechnet der Bootloader
memtag = (default_memtag && !(misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_OFF)) || misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG || misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_ONCE memtag_kernel = misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL || misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
default_memtag
ist die standardmäßige Memtag-Ein/Aus-Einstellung für die SKU. Wenn memtag
wahr ist, richtet der Bootloader die MTE-Tag-Reservierung ein, aktiviert Tag-Prüfungen in den unteren Ausnahmeebenen und kommuniziert den Tag-reservierten Bereich über DT an den Kernel. Wenn memtag
falsch ist, hängt der Bootloader arm64.nomte an die Kernel-Befehlszeile an.
Wenn memtag_kernel
wahr ist, hängt der Bootloader kasan=on
an die Kernel-Befehlszeile an.
Der Bootloader MUSS MISC_MEMTAG_MODE_MEMTAG_ONCE
und MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
bei jedem Start löschen.
Wenn der Bootloader fastboot oem mte
unterstützt, setzt on MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
auf (1, 0, 0)
und off auf (0, 0, 1)
, während die anderen Flags erhalten bleiben.
Sie sollten Ihr Produkt so konfigurieren, dass es die mtectrl
Binärdatei für die Userspace-Unterstützung erstellt. Legen Sie dann die Systemeigenschaft ro.arm64.memtag.bootctl_supported
fest, um dem System anzuzeigen, dass Ihr Bootloader die Memtag-Nachricht unterstützt.
Benutzeroberfläche
Wenn die Eigenschaftro.arm64.memtag.bootctl_supported
“ festgelegt ist, ermöglicht eine Schaltfläche im Menü „Entwickleroptionen“ dem Benutzer einen einmaligen Neustart mit aktiviertem MTE. Zielgruppe hierfür sind App-Entwickler, die ihre Apps mit MTE testen möchten. Systemeigenschaft
Für die erweiterte Verwendung kann die Systemeigenschaft arm64.memtag.bootctl
eine durch Kommas getrennte Liste der folgenden Werte annehmen:
- memtag: User-Space-MTE dauerhaft aktivieren (
MISC_MEMTAG_MODE_MEMTAG
festlegen) - memtag-once: User-Space-MTE einmalig aktivieren (
MISC_MEMTAG_MODE_MEMTAG_ONCE
festlegen) - memtag-kernel: Kernel-Space-MTE aktivieren (
MISC_MEMTAG_MODE_MEMTAG_KERNEL
festlegen) - memtag-kernel-once: Kernel-Space-MTE einmal aktivieren (
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) - memtag-off: MTE deaktivieren (
MISC_MEMTAG_MODE_MEMTAG_OFF
festlegen)
Das System muss neu gestartet werden, damit die neue Einstellung wirksam wird (da sie vom Bootloader angewendet wird).