תמיכה בתוכנת אתחול MTE

ב-Android 13 כוללים ממשק ABI שמאפשר למרחב המשתמשים להעביר את מצב MTE לתוכנת האתחול. אפשר להשתמש בכך כדי להפעיל MTE במכשירים יש תמיכה בחומרה אך לא שולחים כאשר MTE מופעל כברירת מחדל, או להשבית את MTE במכשירים שמהם הוא נשלח.

תמיכה בתוכנת אתחול

כדי לתמוך ב-ABI הזה, תוכנת האתחול צריכה לקרוא את misc_memtag_message (מוגדר ב: runloader_message.h) מהמחיצה misc. אם נמצא misc_memtag_message תקין (MISC_VIRTUAL_AB_MAGIC_HEADER תואם ומספר הגרסה נתמך), של תוכנת האתחול

memtag = (default_memtag && !(misc.memtag_mode &MISC_MEMTAG_מצב_MEMTAG_OFF)) ||
      misc.memtag_mode ו MISC_MEMTAG_מצב_MEMTAG ||
      misc.memtag_mode ו MISC_MEMTAG_מצב_MEMTAG_ONCE

memtag_kernel = misc.memtag_mode ו MISC_MEMTAG_מצב_MEMTAG_KERNEL ||
      misc.memtag_mode ו MISC_MEMTAG_מצב_MEMTAG_KERNEL_ONCE

default_memtag היא הגדרת ברירת המחדל להפעלה/השבתה של המטא-תג מק"ט. אם הערך של memtag הוא True, תוכנת האתחול מגדירה תג MTE מאפשרת בדיקות תגים ברמות החריגות הנמוכות יותר, וכן מעבירה את האזור השמור לתג לליבה (kernel) באמצעות DT. אם המיקום memtag מוגדר כ-False, תוכנת האתחול מצרפת את arm64.nomte אל בשורת הפקודה של הליבה.

אם הערך של memtag_kernel הוא True, תוכנת האתחול מצרפת kasan=on לשורת הפקודה בליבה (kernel).

תוכנת האתחול חייבת לנקות MISC_MEMTAG_MODE_MEMTAG_ONCE ו MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE בכל אתחול.

אם תוכנת האתחול תומכת ב-fastboot oem mte, אז בערכות MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} עד (1, 0, 0), והנחה ל-(0, 0, 1), במסגרת שימור הדגלים האחרים.

צריך להגדיר את המוצר ליצירת הקובץ הבינארי של mtectrl לתמיכה במרחב משתמשים. לאחר מכן, מגדירים מאפיין מערכת אחד (ro.arm64.memtag.bootctl_supported) לציון למערכת שבה תוכנת האתחול תומכת בהודעת ה-memtag.

ממשק משתמש

כשהמאפיין ro.arm64.memtag.bootctl_supported מוגדר, הלחצן בתפריט האפשרויות למפתחים מאפשר למשתמש לבצע הפעלה מחדש פעם אחת באמצעות MTE מופעל. קהל היעד של היעד הזה הוא מפתחי אפליקציות שרוצים לבדוק את האפליקציות שלהם באמצעות MTE. צילום מסך של האפשרות למפתחים ב-MTE.

מאפיין מערכת

לשימוש מתקדם, מאפיין המערכת arm64.memtag.bootctl יכול להשתמש ברשימה מופרדת בפסיקים של הערכים הבאים:

  • memtag: הפעלה רציפה של MTE במרחב המשתמשים (מוגדר MISC_MEMTAG_MODE_MEMTAG)
  • memtag-once: הפעלת MTE במרחב המשתמש פעם אחת (הגדרה MISC_MEMTAG_MODE_MEMTAG_ONCE)
  • memtag-kernel: הפעלת MTE עם מרחב ליבה (kernel) (מוגדר MISC_MEMTAG_MODE_MEMTAG_KERNEL)
  • memtag-kernel-once: הפעלה אחת של MTE עם מרחב ליבה (MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE)
  • memtag-off: השבתת MTE (מוגדר MISC_MEMTAG_MODE_MEMTAG_OFF)

יש להפעיל מחדש את המערכת כדי שההגדרה החדשה תיכנס לתוקף (כפי שהיא שהוחלו על ידי תוכנת האתחול).