MTE-Bootloader-Unterstützung

In Android 13 wird ein ABI für den Userspace eingeführt, um den angeforderten MTE-Modus an den Bootloader zu senden. So können Sie MTE auf Geräten aktivieren, die Hardwareunterstützung haben, aber nicht standardmäßig mit MTE ausgeliefert werden, oder MTE auf Geräten deaktivieren, die standardmäßig mit MTE ausgeliefert werden.

Bootloader-Unterstützung

Zur Unterstützung dieser ABI muss der Bootloader die misc_memtag_message (definiert in bootloader_message.h) aus der Partition misc 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 Standardeinstellung für das Memtag der SKU. Wenn memtag wahr ist, richtet der Bootloader eine MTE-Tag-Reservierung ein, aktiviert Tag-Prüfungen in den niedrigeren Ausnahmeebenen und kommuniziert den für das Tag reservierten Bereich über DT an den Kernel. Wenn memtag auf „false“ gesetzt 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, wird durch „An“ MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} auf (1, 0, 0) und durch „Aus“ auf (0, 0, 1) gesetzt, während die anderen Flags beibehalten werden.

Sie sollten Ihr Produkt so konfigurieren, dass die mtectrl-Binärdatei für die Userspace-Unterstützung erstellt wird. Legen Sie dann die Systemeigenschaft ro.arm64.memtag.bootctl_supported fest, um dem System zu signalisieren, dass Ihr Bootloader die Memtag-Nachricht unterstützt.

Benutzeroberfläche

Wenn die Eigenschaft ro.arm64.memtag.bootctl_supported festgelegt ist, kann der Nutzer über eine Schaltfläche im Menü „Entwickleroptionen“ einmal mit aktiviertem MTE neu starten. Die Zielgruppe sind App-Entwickler, die ihre Apps mit MTE testen möchten. Screenshot der MTE-Entwickleroption

Systemeigenschaft

Für die erweiterte Verwendung kann die Systemeigenschaft arm64.memtag.bootctl eine durch Kommas getrennte Liste der folgenden Werte enthalten:

  • memtag:MTE im Userspace dauerhaft aktivieren (MISC_MEMTAG_MODE_MEMTAG festlegen)
  • memtag-once:MTE im Nutzerbereich einmal aktivieren (MISC_MEMTAG_MODE_MEMTAG_ONCE festlegen)
  • memtag-kernel:MTE im Kernelbereich aktivieren (MISC_MEMTAG_MODE_MEMTAG_KERNEL festlegen)
  • memtag-kernel-once:MTE im Kernelbereich 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.