תרחישים לדוגמה

במסמך הזה מפורטים תרחישים נפוצים לדוגמה ב-AVF.

אוסף קטעים מבודדים

מכונה וירטואלית מוגנת מספקת סביבה בטוחה הידור של קוד רגיש מבחינת אבטחה. הסביבה הזו מאפשרת להזיז את ההידור של bootclasspath ושל JARs של שרת המערכת (מופעלים על ידי עדכון APEX) מ- הפעלה מוקדמת לפני הפעלה מחדש, ומפחיתה באופן משמעותי את שיעור ה-APEX מעדכנים את זמן האתחול.

ההטמעה נמצאת com.android.compos APEX. הרכיב הזה הוא אופציונלי ואפשר לכלול אותו באמצעות makefile.

אוסף קטעים מבודדים

איור 1. הידור של JARs בעדכוני Mainline

מטרת האבטחה היא לאסוף באמת קלט מאומת ולהפיק את הפלט לבידוד אחד, Android כלקוח לא מהימן לא יכול לשנות את ההידור הפלט אמור להיכשל בכל דרך אחרת, מלבד להיכשל (כשה-Android מכשיל את תהליך ההפעלה אוסף זמן מסוים).

שירות ההידור ב-VM מייצר חתימה רק אם אין במהלך ההידור כולו. מערכת Android יכולה לאחזר את המפתח הציבורי מ: המכונה הווירטואלית לאימות חתימה.

המפתח של המכונה הווירטואלית נוצר מפרופיל DICE של המכונה הווירטואלית, שמוגדר על ידי ה-APEX וחבילות APK שהותקנו למכונה הווירטואלית, בנוסף לפרמטרים אחרים של ה-VM, כמו שאפשר לבצע בו ניפוי באגים.

כדי לקבוע אם המפתח הציבורי לא הגיע ממכונה וירטואלית לא צפויה, אתחולי Android את ה-VM כדי לקבוע אם המפתח נכון. ה-VM מופעלת בזמן אתחול מוקדם לאחר כל עדכון APEX.

עם ההפעלה המאומתת של VM מוגנת, שירות ההידור פועל רק מאומת לכן הקוד יכול לקבוע שהוא יקבל רק קלט תנאים מסוימים, כמו למשל, לקבל קובץ קלט רק כשהשם שלו התקציר של fs-verity מוגדר ברשימת ההיתרים.

כל ממשקי ה-API החשופים מהמכונה הווירטואלית הם קרקע למתקפה. כל קובצי הקלט מניחים שהפרמטרים מגיעים מלקוח לא מהימן, וצריך לאמת אותם נבדקו לפני העיבוד.

תקינות קובץ הקלט/פלט מאומתת על ידי ה-VM, כאשר הקבצים מאוחסנים Android כשרת קבצים לא מהימן, באופן הבא:

  • חובה לאמת את התוכן של קובץ קלט לפני השימוש האלגוריתם fs-verity. כדי שקובץ קלט יהיה זמין ב-VM, צריך: יש לספק גיבוב ברמה הבסיסית (root) במאגר (APK) שתורם אל פרופיל DICE של המכונה הווירטואלית (VM). עם גיבוב הבסיס המהימן, התוקף לא יכול לעשות שינויים לקלוט את הקלט, בלי להתגלות.
  • צריך לשמור על התקינות של קובץ הפלט ב-VM. גם אם קובץ פלט מאוחסן ב-Android. במהלך היצירה, התקינות מנוהל באותו פורמט עץ fs-verity, אבל ניתן לבצע בו שינויים באופן דינמי עודכן. אפשר לזהות את קובץ הפלט הסופי באמצעות גיבוב (hash) של השורש, שמבודד ב-VM. השירות ב-VM מגן על הפלט קבצים לפי חתימה.