רשימת היתרים של הרשאות חתימה

אפליקציות עם חתימה לפלטפורמה הן אפליקציות שמשתפות את אותה חתימה (או תואמת) עם חבילת הפלטפורמה (android). אפליקציה חתומה בפלטפורמה יכולה להיות אפליקציית מערכת (שנמצאת במחיצה של תמונות מערכת) או אפליקציה שאינה של המערכת. הרשאות החתימה של הפלטפורמה הן הרשאות שמוגדרות על ידי חבילת הפלטפורמה שיש בהם גם את רמת ההגנה signature. גרסאות build שניתנות לניפוי באגים הן גרסאות build שה-android.os.Build.isDebuggable() שלהם מחזיר true, כמו userdebug או גרסאות build של eng.

בעבר, ליצרני המכשירים הייתה שליטה מועטה מאוד על הפלטפורמה ניתן להעניק signature הרשאות לאפליקציות שאינן חתומות לפלטפורמה. החל מ-Android 15, יצרנים יכולים להחליט באופן מפורש הענקת הרשאות חתימה לפלטפורמה בקובצי ה-XML של תצורת המערכת הספרייה /etc/permissions. אם אפליקציה שאינה מערכת חתומה בפלטפורמה חתומה לא נוספה לרשימת ההיתרים של הרשאת חתימה לפלטפורמה, שההרשאה פועלת כאילו האפליקציה לא חתומה על גרסאות build שלא ניתנות לניפוי באגים.

הוספה של רשימת היתרים

ניתן להציג רשימת היתרים של הרשאות לאפליקציות בקובץ XML יחיד או בכמה קובצי XML שנמצאים בספרייה frameworks/base/etc/permissions:

  • /etc/permissions/signature-permissions-OEM_NAME.xml
  • /etc/permissions/signature-permissions-DEVICE_NAME.xml

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

התאמה אישית של רשימת היתרים

AOSP כולל הטמעת רשימת היתרים שאפשר להתאים אישית לפי הצורך, דומה רשימת היתרים של הרשאות בעלות הרשאות עבור דוגמה:

<!--
  ~ This XML file declares which platform signature permissions to grant to
  ~ platform signed nonsystem apps.
  -->

<permissions>
    <signature-permissions package="com.android.example">
        <permission name="android.permission.READ_DEVICE_CONFIG"/>
        ...
    </signature-permissions>
    ...
</permissions>

איתור ההרשאות החסרות

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

Signature permission {PERMISSION_NAME} for package {PACKAGE_NAME} ({PACKAGE_PATH}) not in signature permission allowlist

המערכת עדיין יכולה להעניק את ההרשאה בגרסאות build שניתנות לניפוי באגים, אבל לא בגרסאות build גרסאות build שלא ניתנות לניפוי באגים, כמו גרסאות build של user.