יכולות רגישות לסביבה

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

התכונות 'סביבה' מאפשרות לשירותי המערכת שהופעלו על ידי אתחול להגדיר את התצורה יכולות ב-.rc הקבצים שלהם, כך שההגדרות האישיות קובץ יחיד במקום לפצל תצורה קובץ fs_config.c. המשמעות היא שלכל שירות שהושק על ידי init, אפשר להשתמש בקובץ .rc שמשויך לשירות כדי להגדיר יכולות לשירות הזה.

יכולות סביבה הן המנגנון המועדף להגדרת יכולות. לשירותים שמופעלים באמצעות אתחול (השיטה הזאת שומרת את כל ההיבטים של השירות בקובץ .rc יחיד). מומלץ להשתמש באווירה יכולות במקום קובץ תצורה את יכולות המערכת באמצעות קטע האותיותבקובצי config.fs.

כשמגדירים יכולות לשירותים שלא הופעלו על ידי init, להמשיך להגדיר את היכולות של מערכת הקבצים באמצעות fs_config.c.

הפעלת יכולות רגישות לסביבה

כדי להפעיל יכולות רגישות לסביבה בשירות מסוים, צריך להשתמש ב: מילת מפתח אחת (capabilities) בהתחלה. לשפת ההתחלה הנוכחית פרטים נוספים, אפשר לעיין init README.md.

לדוגמה, כדי להפעיל יכולות רגישות לסביבה לשירות AOSP wificond, קובץ rc בשביל השירות wificond מגדיר את משתמש וקבוצות, ומספק לשירות את היכולות שצוינו באמצעות מילת מפתח capabilities:

service wificond /system/bin/wificond
    class main
    user wifi
    group wifi net_raw net_admin
    capabilities NET_RAW NET_ADMIN

הטמעת קובצי עזר

ההטמעה של קובץ העזר היא הליבה המשותפת של Android https://android.googlesource.com/kernel/common/

התיקונים הנדרשים

התיקונים הנדרשים הועברו בעבר לכל הליבה (kernel) המשותפת של Android הרלוונטית ענפים.

התיקון הראשי ליכולות של אווירה https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 כבר בוצעה ניוד חוזר ב:

תיקון קטן באבטחה https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 כבר בוצעה ניוד חוזר ב:

אימות

יונית בדיקות יחידה (unit testing) כוללות בדיקות יחידה של יכולות רגישות לסביבה. מעבר לכך, באמצעות את ה"יכולות" למילת המפתח ב-Android אתחול לשירות, ואז לבדוק השירות מקבל את היכולות הצפויות שיאפשרו לבצע בדיקות זמן ריצה של בתכונה הזו.