עדכונים בחבילות שירות

אפשר לעדכן חבילות שירות כחבילות APEX, בנפרד מעדכוני מערכת מלאים. ב-SDV, תהליך העדכון הזה מנוהל על ידי מנהל העדכונים של SDV. כדי שהעדכון ייכנס לתוקף, צריך להפעיל מחדש את המכשיר.

יש שני סוגים של APEX שנתמכים בעדכונים של חבילות שירות:

  • APEX שהותקן מראש: גרסה קודמת של חבילת APEX כבר קיימת באחת מהמחיצות לקריאה בלבד (/system,‏ /system_ext,‏ /product,‏ /vendor ו-/odm).

  • APEX חדש: לא קיים חבילת APEX עם אותו שם (כפי שהוגדר ב-apex_manifest.json) באף אחת מהמחיצות לקריאה בלבד.

APEX שהותקן מראש

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

  • שם החבילה ב-apex_manifest.json זהה לזה של ה-APEX שהותקן מראש.

  • מגדירים קוד גרסה גבוה יותר ב-apex_manifest.json מאשר ב-APEX שהותקן מראש.

  • חותמים על ה-APEX עם אותו צמד מפתחות כמו ה-APEX שהותקן מראש.

‫APEX חדש

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

  • ניהול מאובטח של מפתחות החתימה שמשמשים לחבילות ה-APEX האלה.

  • ביסוס תהליך יעיל לזיהוי ולחסימה של חבילות זדוניות.

  • המרת חבילות APEX חדשות לחבילות APEX שהותקנו מראש בעדכוני מערכת עתידיים, בכל הזדמנות אפשרית.

כדי להתקין או לעדכן APEX חדש, צריך לבצע את ההגדרות הבאות.

התקנה מראש של מפתחות ציבוריים מהימנים

כדי להתקין APEX חדש, צריך להתקין מראש את מפתח החתימה הציבורי שלו במחיצת היעד. מציבים את המפתח הציבורי ב-/partition/etc/brand_new_apex/, כאשר /partition/ מייצג את המחיצה שאליה משויך ה-APEX לפי כללי Treble. לדוגמה, אם החתימה של APEX מאומתת מול מפתח ציבורי ב-/vendor/etc/brand_new_apex/, היא תתנהג כ-APEX של הספק. המערכת תדחה כל APEX חדש שלא נחתם על ידי מפתח שתואם למפתח ציבורי שהותקן מראש.

חסימה של קובץ APEX חדש זדוני

אם מזהים שחבילת APEX חדשה היא זדונית אחרי ההתקנה, צריך לחסום אותה באמצעות עדכון מערכת. כדי לעשות את זה, מוסיפים את שם חבילת ה-APEX לקובץ של רשימת חסימה ב-/partition/etc/brand_new_apex/blocklist.json. צריך למקם את רשימת החסימה הזו במחיצת היעד של APEX (אותה מחיצה שבה המפתח הציבורי שלה הותקן מראש). לכל מחיצה יש קובץ חסימה ייעודי משלה.