אישור החומרה של SafetyNet יקשה מאוד על הסתרת שורש ב-Magisk

הסתרת גישת שורש ב- Magisk עומדת להפוך להרבה יותר קשה לביצוע הודות לשינוי האחרון ב-SafetyNet שמביא אישור חומרה.

עוד במרץ, כמה משתמשים עם Magisk מותקנים שם לב שהמכשירים שלהם נכשלו באישור SafetyNet. החדשות הללו הטרידו את הקהילה ב-XDA מכיוון שמשמעותן היא שהרבה אפליקציות בנקאיות/פיננסיות ומשחקים פופולריים כמו Pokémon Go ו-Fate/Grand Order סירבו לפעול במכשירים שורשיים. במשך זמן מה, נראה היה שההגבלות המתהדקות ב-SafetyNet נסוגו לאחור, רק כדי להתגלגל שוב לקומץ משתמשים בשבועות האחרונים. עם זאת, גוגל אישרה בשקט בתחילת מאי שהיא בודקת אישור מגובה חומרה עבור תגובות SafetyNet, וזה מה שגרם ל-Magisk לא להסתיר את מצב ביטול הנעילה של מאתחול האתחול בחזרה מרץ. אם השינוי הזה יתגלגל באופן נרחב, זה אומר שמשתמשים יצטרכו לבחור בין גישה ל-root/ROMs מותאמים אישית/גרעינים/וכו'. או האפליקציות והמשחקים הבנקאיים המועדפים עליהם. אחת מהפניות הגדולות ביותר של אנדרואיד למשתמשים חזקים עשויה להיעלם בקרוב.

כדי לסכם את סדרת האירועים הזו, עלינו לדבר תחילה על SafetyNet עצמה. SafetyNet היא קבוצה של ממשקי API בשירותי Google Play. ה-API של SafetyNet Attestation הוא אחד מאותם ממשקי API, והוא יכול להיקרא על ידי יישומי צד שלישי כדי לבדוק אם בוצעה שיבוש בסביבת התוכנה של המכשיר בדרך כלשהי. ה-API בודק דברים שונים כמו סימנים של קבצים בינאריים של משתמשי-על, סטטוס ביטול הנעילה של טוען האתחול ועוד. כאשר אתה רוט מכשיר עם Magisk, הוא "[יוצר] 'סביבה בטוחה' מבודדת לתהליך הזיהוי של [SafetyNet], והוא עובר דרך ה-API של Google כדי ליצור

חוּקִי תוצאת SafetyNet שאינה משקפת את המצב האמיתי של המכשיר", לפי מפתח מוכר בכיר ב-XDA topjohnwu. זה מאפשר למשתמש לבצע שורש לטלפון שלו תוך הבטחה שה-API תמיד מחזיר "false" עבור כל בדיקות ביטול נעילה של מאתחול. שיטה זו של עקיפת זיהוי פתיחת הנעילה של מאתחול האתחול של SafetyNet עבדה עבור Magisk בכמה אחרונים שנים, אבל זה רק בגלל שגוגל דחתה לאמת את תקינות תמונת האתחול באמצעות חומרה עֵדוּת. במרץ, נראה היה שגוגל סוף סוף מתחילה להפעיל אישורי חומרה ב-SafetyNet כדי לאמת את זה תמונת אתחול, אבל מעולם לא קיבלנו הצהרה רשמית מגוגל המאשרת את השינוי ורק כמה משתמשים היו מושפע. כפי שזיהה חבר בכיר ב-XDA דיספלקסעם זאת, גוגל אישרה ב-5 במאי 2020, שתגובות SafetyNet Attestation API ממכשירים מסוימים כוללים כעת בדיקות מגובות חומרה.

ב-Google Group עבור "SafetyNet API Clients", גוגל פירטה תכונה חדשה עבור Attestation API: evaluationType. לתגובת JSON Web Signature (JWS) ממכשירים מסוימים יהיה שדה בשם "evaluationType" ש"יספק למפתחים תובנות לתוך סוגי האותות/מדידות שתרמו לכל תגובת SafetyNet Attestation API בודדת." אחד האסימונים הנתמכים בשדה זה "HARDWARE_BACKED" המציין שה-API "[השתמש] בתכונות האבטחה הזמינות מגובות החומרה של ההתקן המרוחק (לְמָשָׁל. אישור מפתח מגובה חומרה) כדי להשפיע על ההערכה [שלה]". גוגל אומרת שהם "כרגע מעריכים ומתקנים את קריטריוני הזכאות למכשירים שבהם נסתמך על מגובי חומרה תכונות אבטחה." המשמעות היא שבמכשירים מסוימים, שירותי Google Play משתמש כעת בהצהרה מגובה חומרה כדי לזהות שהתוכנה של המכשיר לא הייתה התעסק עם. גוגל לא תיעדה רשמית את השינוי הזה מחוץ להכרזה בקבוצת גוגל, כך שחלק מהמפתחים שמשתמשים ב-SafetyNet עשויים לא להיות מודע לשינוי הזה (ולכן עדיין לא בודקים את השדה "HARDWARE_BACKED" בתגובות JWS.) עם זאת, עבור אפליקציות אלה בודקים את השדה הזה, אין כעת דרך להסתיר מהם גישת שורש, בתנאי שהמכשיר שלך הוא חלק מהבדיקה ש-Google היא רץ.

לפי topjohnwu, אישור מגובה חומרה אומר ששירותי Google Play כעת "[שולח] אישור מאגר מפתחות ללא שינוי לשרתי SafetyNet, [מאמת] את הלגיטימיות שלו, וכן [בודק] את נתוני הרחבת האישורים כדי לדעת אם המכשיר שלך [אומת] אתחול מופעל (סטטוס טוען האתחול)." מאז המפתחות הפרטיים שמהם נגזרים תעודות מאגר המפתחות מגובים על ידי הסביבה המאובטחת המבודדת של הטלפון, שליפתם תהיה כרוכה בהבסת האבטחה של סביבת הביצוע המהימנה (TEE) של הטלפון או אבטחת חומרה ייעודית מודול (HSM). אם מישהו היה מסוגל איכשהו להדליף מפתח פרטי, ה מפתחות יבוטלו במהירות ברגע שגוגל גילתה. גוגל מציעה תגמולים של מאות אלפי דולרים עבור כל פרצות אבטחה קריטיות המשפיעות על ה-TEE בטלפונים של Pixel, מה שרק מראה שזה לא סביר מאוד שזה יהיה דרך פוטנציאלית לעקוף את זיהוי פתיחת הנעילה של טוען האתחול בכל מקרה.

דרך אפשרית נוספת שבה Magisk יכולה להמשיך לזייף את סטטוס ביטול הנעילה של מאתחול היא על ידי שינוי הקוד בצד הלקוח של SafetyNet כך שישתמש תמיד בהערכת BASIC. כפי ש מציין topjohnwuעם זאת, הדבר ידרוש הזרקת קוד מותאם אישית לשירותי Google Play באמצעות מסגרת hooking כמו Xposed Framework. זה לא רק שקשה לעשות זאת מכיוון ששירותי Google Play מעורפלים מאוד, אלא שזה גם בלתי אפשרי להסתיר אותו מכיוון ש"ניתוח מרחב זיכרון יגלה מניפולציה רבה של קוד בקלות." יתר על כן, זה גם יעבוד רק אם השרתים של גוגל ימשיכו לקבל הערכות BASIC ואם הערכות HARDWARE_BACKED לא נאכפות במכשירים התומכים אוֹתָם. (תגובות SafetyNet "[מגיעות] משרתי Google וחתומות עם המפתח הפרטי של גוגל", לפי topjohnwu, כך שלא ניתן לזייף את התגובות בפועל.)

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

למרבה הצער, כנראה יש הרבה אפליקציות בחוץ שמשתמשות בבדיקות SafetyNet כאשר הן לא ממש צריכות. דוגמה אחת שצוטט על ידי topjohnwu היא האפליקציה הרשמית של מקדונלד'ס, שלכאורה מסרבת לפעול על מכשיר לא נעול עם טוען אתחול. בטוויטר, topjohnwu קורא לאפליקציות שמשתמשות יתר על המידה ב-API כיוצרות סביבה עוינת למשתמשים חזקים. מפתח מוכר XDA קוויני899 מצטרף עם אנקדוטה על האופן שבו הצוות שלו שקל להשתמש ב-SafetyNet כדי לבדוק את מצב אבטחת המכשיר. בסופו של דבר הם החליטו לא להמשיך עם זה מכיוון שהאפליקציה של הצוות שלו מצפינה את כל הנתונים הרגישים איתם היא עובדת. אין להשתמש ב-SafetyNet, לטענתו, במקום נוהלי אבטחה וטיפול נאותים בנתונים, במיוחד כאשר שוקלים את אפשרות לניצול משתמש-על.

למידע נוסף על האופן שבו השינוי החדש ב-SafetyNet משפיע על Magisk, עיין ב-topjohnwu's שאלות נפוצות מצוינות בטוויטר. אם אתה רק רוצה לבדוק אם המכשיר שלך הוא חלק ממבחן SafetyNet החדש של גוגל, אז אתה יכול לעקוב המדריך הזה מאת XDA Senior Member Displax או הורד את המהדורה האחרונה של Magisk Manager.


מאמר זה עודכן בשעה 10:46 EST ב-30 ביוני 2020, כדי לתקן ש-Google משלמת תגמולים רק עבור פרצות TEE שנמצאו בטלפונים של Pixel. יתר על כן, נוספו פרטים לגבי המהדורה האחרונה של Magisk Manager אשר מציגה כעת את שדה evaluationType בבודק SafetyNet המובנה.