תכונת אנדרואיד לא מתועדת מאפשרת לכל אפליקציה שרירותית לקבל גישת שורש בסביבת SELinux מתירנית. המשך לקרוא כדי לדעת יותר!
בעולם של מודינג אנדרואיד, אנשים נוטים לראות בגישה לשורשים את אבן היסוד של כל הדברים. זה מאפשר למשתמשים לקחת שליטה מלאה על המכשירים שלהם ולהוסיף תכונות שלא תמיד זמינות בתצורת המניות. אבל כמו שאומרים - "עם כוח גדול באה אחריות גדולה" - אין זה חכם לעקוף את מודל האבטחה של אנדרואיד אלא אם כן אתה יודע למה אתה נכנס. לחובבי אנדרואיד ותיקים בפורומים שלנו, אתם בוודאי מודעים לפוטנציאל של קיימות דלתות אחוריות במכשיר שלכם, וכן סביר יותר שתפעיל מוד מהימן המותאם לבסיס על גבי גרסת האנדרואיד העדכנית ביותר עם האבטחה העדכנית ביותר טלאים. אחרי שאמרתי את זה, אולי אתה מכיר כמה אנשים שלא ממש אכפת להם מאיזה תיקון שורש הם מתקינים כל עוד הם לכאורה עובדים עבורם. זו הסיבה שאתה עדיין יכול למצוא משאית של אופנים שעובדים רק כאשר SELinux מוגדר כמתירנית, מה שבתורו מותיר את המשתמשים שלהם רגישים מאוד לאיומי אבטחה.
מה זה SELinux
SELinux, או לינוקס משופרת באבטחה, הוא מודול אבטחה ליבת לינוקס שתוכנן במיוחד עבור גישה וניהול של מדיניות אבטחה. הוצג במקור באנדרואיד 4.3 Jelly Bean ומוגדר למצב האכיפה שלו כברירת מחדל מאז אנדרואיד 4.4 KitKat, SELinux עוזר לאכוף זכויות בקרת גישה וניסיונות למנוע הסלמה של הרשאות התקפות. בקצרה, SELinux פועל כמכשול לשליטה בלתי מורשית במכשיר שלך, כגון אפליקציה או פגיעות שמטרתה להשיג גישת שורש בזדון. הגדרת SELinux ל"אכיפה" כברירת מחדל היא אחת הדרכים העיקריות שבהן משתמשים רגילים מוגנים מפני התקפות כאלה.
מדוע SELinux מתירני אינו מומלץ
כדי להדגיש, הדרך האופיינית להשיג גישת שורש במכשיר אנדרואיד לא בהכרח צריכה לשנות את סטטוס SELinux. העברת מצב SELinux מ"אכיפה" ל"מתירנית" משביתה בכוונה את אחת מתכונות האבטחה המרכזיות במכשיר, וזו הסיבה המשתמש צריך לאפשר זאת במפורש על ידי התקנת ליבה מותאמת אישית או שינוי הפרמטרים של תמונת האתחול הקיימת. מוד מקודד גרוע חסר מדיניות SELinux מתאימה בדרך כלל מאלץ את משתמשי הקצה לעבור ל-SELinux מתירנית ובעצם מרחיב את משטח ההתקפה. זה בדיוק מה שמפתח vvb2060 הוכיחו כשהם פרסם שיטת הסלמה של זכויות היתר בהוכחת מושג כאשר הדרישה היחידה להשיג שליטה היא SELinux מתירנית.
כנסו ל-Magica
למשתמש לקבל גישת שורש מלאה במכשיר שלו עם אנדרואיד 10 (או גרסה מתקדמת יותר) עם SELinux מוגדר כמתירני, קל להחריד עשה: כל מה שאתה צריך לעשות הוא ללחוץ על התקן, ו-"Magica" תקבל באופן אוטומטי גישת שורש בשירות ותתקין את Magisk לאתחול תמונה. זה משהו הרבה יותר רחב בהיקפו מאשר רק להתאים את המכשיר שלך. על פי XDA מפתח מוכר בכיר ומתחזק Magisk topjohnwu, כל אפליקציה שרירותית, כולל תוכנות זדוניות, יכול לצמיתות שורש המכשיר שלך ללא הסכמתך והרשאתך על ידי שימוש ב- PoC.
אם אתה תוהה ברמה הטכנית מה Magica מנצל, topjohnwu הסביר את הדברים הבאים ב פוסט של Reddit:
"כאשר SELinux מתירנית במהלך האתחול, zygote תדע זאת ותשבית מסנני seccomp syscall. זה בעצם מבטל את ההגבלה של קריאות מערכת המותרות בתהליכים של צד שלישי.
ב-Android 10+, יש תכונה חדשה "לא מתועדת" בשם "App Zygote" שבה מותר לאפליקציות צד שלישי להוליד זיגוטה משלהן עבור "שירותים מבודדים" (גם הם כמעט לא מתועדים). גם "App Zygote" וגם "שירותים מבודדים" הם תכונות מיוחדות המיועדות ל-Chrome/Webview*. תהליכים של App Zygote פועלים עם הרשאות מיוחדות, ועם seccomp מושבת, הוא יכול לקרוא ל-setuid 0 ולהסלים את ההרשאות שלו ולקבל גישת שורש.
זה עדיין איכשהו מגביל בהשוואה למה שפתרונות שורש רגילים מספקים (למשל Magisk), אולם טונות של אמצעי אבטחה באנדרואיד יובסו לחלוטין כאשר UID=0. לדוגמה, זה מספיק כדי להשתמש בו כדי לתקן תמונות אתחול, מה שאומר שניתן להשתמש בו כדי להחדיר תוכנות זדוניות כגון Magisk שונה כדי לעזור לה לקבל הרשאות שורש "אמיתיות".
עדכון: מה UID=0 עצמו יכול לעשות? במסגרת של אנדרואיד, כמעט לכל השירותים יש אור ירוק עיוור כאשר ה-UID של תהליך הבקשה הוא 0. המשמעות היא שתהליך השורש הזה מסוגל לתפעל טונות של דברים באמצעות ממשקי API ספציפיים לאנדרואיד (למשל ActivityManager)"
*לפי היזם aviraxp, שתי תכונות אלו מתוכננות באופן כללי יותר "לשיתוף משאבים וזיכרון בין מספר תהליכים מבודדים."
סיכום
בהתחשב בנזק הבלתי הפיך שיכול להיגרם למשתמשים הממוקדים על ידי תוכנות זדוניות בסביבת SELinux מתירנית, אנו ממליצים בחום לכולם להמשיך לאכוף אותו אלא אם כן הכרחי. אמנם יש לנו מזל שיש לנו ניצול של הוכחה לקונספט, אבל אין לנו מושג כמה מחברי תוכנות זדוניות כבר יודעים על נתיב ההתקפה הזה. אחרי הכל, קורבן ימשיך להישאר לא מודע למצב הסכנה של המכשיר שלו אם לא עשה זאת עדים לניצול בשימוש פעיל, מה שלא קשה להשיג עבור אפליקציה נוכלת שיש לה שורש מתמשך גִישָׁה.