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

click fraud protection

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

ההשקה של Fortnite Mobile באנדרואיד לא הייתה גדולה מדי, במיוחד מאז רבים מהמכשירים הנתמכים בֶּאֱמֶת נאבקים לשחק את המשחק עם קצבי פריימים מקובלים. המשחק הושק בתור א סמסונג גלקסי בלעדי ל-3 ימים בלבד. מתקין Fortnite היה זמין לראשונה ב- אפליקציות סמסונג גלקסי לפני Epic Games אפשרו לשחקנים שאינם סמסונג להוריד ולהתקין את המשחק המלא מ-Fortnite Installer שהושג באתר של Epic. זמן קצר לאחר שמתקין Fortnite הפך זמין, Epic Games דחף בשקט עדכון למתקין. עכשיו אנחנו יודעים למה: הם תיקנו א איש-בדיסק ניצול שאפשר לאפליקציה זדונית לעשות זאת להתקין בשקט כל אפליקציה שהם רוצים בסמארטפונים של סמסונג גלקסי. מכיוון שהיה קצת בלבול לגבי אופן פעולת הפגם הזה, ננסה להבהיר את הדברים. ראשית, עלינו להסביר את היסודות של התקנת אפליקציה באנדרואיד.


זרימת התקנת אפליקציה בסמארטפונים של אנדרואיד

התקנות שקטות ממקורות צד ראשון

כדי להתקין בשקט APK ב-Android מבלי לבקש מהמשתמש אישור, אתה צריך שיהיה לך יישום ברמת המערכת עם

INSTALL_PACKAGES ההרשאה ניתנה. דוגמאות ליישומים עם הרשאה זו כוללות את חנות Google Play ברוב מכשירי האנדרואיד. ייתכן שגם לחנויות יישומים של צד ראשון במכשירים של סמסונג, Huawei ויצרניות מכשירים אחרות ניתנה הרשאת INSTALL_PACKAGES. אם ברצונך להתקין אפליקציה כלשהי מחנות Google Play, היא תטפל בהורדה ותתקין באופן אוטומטי האפליקציה עבורך ללא התערבות נוספת לאחר שתלחץ על "התקן". (חנות Google Play אפילו באופן אוטומטי מעניק הרשאות זמן ריצה מסוימות כגון זה עבור שכבות-על, בעוד שאפליקציות המותקנות מחוץ לחנות Play צריכות לבקש מהמשתמש להעניק הרשאות אלה.)

אם אתה סקרן אם לאפליקציה במכשיר שלך יש הרשאת INSTALL_PACKAGES, תוכל לגלות זאת באמצעות פקודת ADB.

adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"

לדוגמה, שם החבילה של חנות Google Play הוא "com.android.vending". אפליקציה נוספת עם הרשאה זו היא Shell עם שם החבילה com.android.shell. לאלו מכם שמשתמשים Substratum ללא שורש באמצעות תוסף Andromeda ב-Android Oreo, סקריפט Andromeda המופעל מהמחשב שומר על תהליך המעטפת פועל כך ש-Substratum יכול להשתמש בו כדי להתקין חבילות (שכבות-העל) ולאחר מכן להשתמש ב- פקודות OverlayManager כדי לאפשר את שכבות העל.

אפליקציות בטעינת צד ממקורות צד שלישי

אם תנסה להוריד ולהתקין אפליקציה מחוץ לחנות אפליקציות של צד ראשון, תחילה יהיה עליך להפעיל מקורות התקנה לא ידועים. זה מאפשר ל שירות מנהל חבילות במסגרת אנדרואיד (בעלת הרשאת INSTALL_PACKAGES) דע שאתה מכיר בסיכונים של טעינת צד של אפליקציות ממקורות צד שלישי. במכשירי Oreo טרום אנדרואיד, יש בורר יחיד בהגדרות האבטחה כדי לאפשר התקנה ממקורות לא ידועים. ב-Android Oreo ובגירסאות מאוחרות יותר, אפליקציה הקוראת להתקנת APK חייבת להצהיר על ה REQUEST_INSTALL_PACKAGES הרשאה והמשתמש חייב לרשום את האפליקציה הזו כדי שיוכל לבקש התקנות אפליקציה דרך שירות מנהל החבילות. מאחר ש-REQUEST_INSTALL_PACKAGES היא הרשאת "appop", זה הופך אותה לאחת מההרשאות שניתן לשלוט בהן מתוך מנהל ההרשאות של ההגדרות או דרך cmd appops פקודת מעטפת.

ברגע שהתקנה ממקורות לא ידועים מופעלת באופן גלובלי או ספציפי עבור אפליקציה מבקשת, המשתמש יכול לטעון אפליקציה בצד. עם זאת, מנהל החבילות אינו מאפשר להתקין את האפליקציה בשקט. במקום זאת, זה ינחה את המשתמש אם הוא רוצה להתקין את האפליקציה ויפרט את ההרשאות הרגישות שהוא מבקש להעניק בהתקנה. אם המשתמש מסכים, אז האפליקציה מותקנת עם ההרשאות המבוקשות שאינן בזמן ריצה. יצרני OEM יכולים גם להתאים אישית את מנהל החבילות: לדוגמה, מנהל החבילות בגרסה הסינית של ל-EMUI 5 של Huawei יש תכונה לסריקת ה-APK כדי להחליט אם הוא בטוח ולשלוט מהן ההרשאות מוענק לפני הַתקָנָה. ראיתי זאת ב-Honor Note 8 שמריץ EMUI 5 שיובאה מסין, אם כי אני בטוח שגם למכשירי Huawei ו-Honor סיניים אחרים יש את התכונה הזו במנהלי החבילות שלהם.

בכל מקרה, זה בערך מסכם את ההבדל בין התקנת אפליקציה ממקור צד ראשון מאושר למקור צד שלישי. אם תנסה להתקין אפליקציה מחנות Play או מחנות אפליקציות מקבילה עם INSTALL_PACKAGES הרשאה, הוא יטפל בשקט בהתקנה בעצמו ללא התערבות נוספת של המשתמש לאחר שתתחיל ההורדה. אבל אם אתה מוריד APK מ-XDA Labs, APKMirror או מקורות צד שלישי אחרים, מתקין החבילות הסטנדרטי יטפל בהתקנה ויבקש מהמשתמש להתקין את החבילה הזו. אז איפה נכנס מתקין Fortnite ולמה כל זה רלוונטי?

פגם בתהליך ההתקנה של Fortnite

מוקדם יותר היום, גוגל חשף פגיעות הם גילו עם הגרסה הראשונה של מתקין Fortnite. הפגיעות הוכחה ב-Exynos Samsung Galaxy S8+ (dream2lte) אך השפיעה גם על כל שאר מכשירי Samsung Experience כולל Samsung Galaxy Note 9 ו- Samsung Galaxy Tab S4. הפגיעות מאפשרת יישום זדוני שכבר מותקן כדי לנצל את הדרך שבה מתקין Fortnite מנסה להתקין את Fortnite בפעם הראשונה במכשירי סמסונג גלקסי. על ידי שימוש ב-API פרטי ב-Samsung Galaxy Apps, מתקין Fortnite עוקף את הצורך להנחות את המשתמש באמצעות מתקין החבילות הרגיל להתקין את Fortnite. הסיבה לכך היא ל- Galaxy Apps יש את ההרשאה הדרושה כדי לטפל בהתקנה בשקט. לא יהיה שום דבר רע בתהליך ההתקנה השקטה הזה אם האפליקציה שמותקנת בשקט היא Fortnite האמיתית. אבל בגלל המקום שבו מתקין Fortnite אחסן את קובץ ה-APK שהורד עבור משחק Fortnite, ניתן היה לנצל אותו בקלות.

ה-AndroidManifest מ-Samsung Galaxy Apps מראה של-Galaxy Apps יש הרשאה להתקין אפליקציות אחרות בעצמו, תוך עקיפת מתקין החבילות הרגיל.

על פי הדיווח על Issue Tracker, מתקין Fortnite יוריד את Fortnite Mobile APK ל /sdcard/Android/data/com.epicgames.portal/files/downloads/. זה נחשב ל"אחסון חיצוני" באנדרואיד מכיוון ש-/sdcard הוא קישור סמלי אליו /data/media/CURRENT_USER, ו-/sdcard היה השם ששימש בימים הראשונים של אנדרואיד כאשר נתוני האפליקציה היו מאוחסן בכרטיסי SD פיזיים. כיום, נתוני אפליקציה מאוחסנים בדרך כלל בספריות ספציפיות לאפליקציה ב- /data/data/, ולכל אפליקציה יש גישה רק לקבצים בספריית /data/data משלה. לפיכך, אם מתקין Fortnite אחסן את ה-APK של Fortnite שהורד בספריית /data/data/ משלו, זה יהיה בלתי אפשרי עבור כל אפליקציה ללא הרשאות קריאה (כלומר. ללא גישת שורש) כדי לדעת מה קורה בספרייה הזו.

עם זאת, מאז מתקין Fortnite שמר את ה-APK שהורד באחסון חיצוני, ניתן לנטר אותו ולהחליפו על ידי כל אפליקציה עם הרשאות קריאה לאחסון חיצוני. בדרך כלל, אפליקציות כותבות ל-/data/media, "כרטיס ה-SD הווירטואלי", כשהן מאחסנות קבצים שהמשתמש צריך לגשת אליהם דרך MTP או אפליקציות אחרות. כדי שאפליקציה תוכל לקרוא או לכתוב אל /data/media, היא צריכה להיות בעלת READ_EXTERNAL_STORAGE ו WRITE_EXTERNAL_STORAGE הרשאות בהתאמה (שתיהן נמצאות תחת אותה קבוצת הרשאות ומכאן מוענקים יחד). לפני אנדרואיד 4.4 KitKat, רוב האפליקציות ביקשו הרשאות אלה בעת ההתקנה, כי אחרת, הן לא היו מסוגל לקרוא או לכתוב לקבצים בספריית האחסון החיצונית המיועדת של החבילה שלהם ב /data/media/.../Android/. עם הצגת FUSE כדי לחקות הרשאות ספרייה בסגנון FAT-on-sdcard ב-Android 4.4 KitKat, אפליקציות כבר לא זקוקות להרשאות כלשהן כדי לגשת לקבצים בספרייה הייעודית שלהן באחסון חיצוני. גישה לקבצים בכל ספרייה אחרת עדיין תצטרך את הרשאות האחסון החיצוניות, וזה מה שאפליקציה זדונית יכולה לעשות כדי לחטוף את תהליך ההתקנה של Fortnite.

כפי שמוצג בסרטון למטה, אפליקציה זדונית עם הרשאת READ_EXTERNAL_STORAGE עוקבת אחר ספריית ההורדות של מתקין Fortnite באחסון חיצוני. כאשר הוא מזהה שההורדה הושלמה וטביעת האצבע מאומתת, הוא מחליף את הורדת חבילת Fortnite עם חבילה זדונית משלה הודות ל-WRITE_EXTERNAL_STORAGE רְשׁוּת. עם זאת, בגלל האופן שבו Samsung Galaxy Apps מאמת את Fortnite APK לפני ההתקנה (...זה רק בודק אם שם החבילה הוא "com.epicgames.fortnite"), אפשר לקבל Galaxy אפליקציות התקן בשקט את החבילה הזדונית ברקע ללא התערבות או התראה של המשתמש- כל עוד שם החבילה הזדונית היה "com.epicgames.fortnite." גרוע מכך, אם החבילה הזדונית הזו מתמקדת ב-SDK לרמה 22 ומטה (Android 5.1 Lollipop ומעלה), יקבלו אוטומטית את כל ההרשאות המוגדרות במניפסט שלו מכיוון שהרשאות זמן ריצה הן חובה רק עבור אפליקציות הממקדות SDK לרמה 23 ומעלה (Android 6.0 Marshmallow ו- יותר מאוחר).

אבל מה יקרה במכשירים שאינם של סמסונג? ובכן, מכיוון ש-Samsung Galaxy Apps לא מותקן במכשירים שאינם של סמסונג, ה-APK הזדוני לא יותקן בשקט ברקע. Fortnite Installer היא אפליקציית צד שלישי ולכן צריך קודם כל לבקש מהמשתמש להפעיל התקנה ממקורות לא ידועים ולאחר מכן שלח בקשה למתקין החבילות להתקין את הזיוף APK של Fortnite. אז זה יהיה תלוי במשתמש שיקיש על "התקן" כשישאל אם הוא רוצה להתקין את האפליקציה או לא. זה בעייתי ללא קשר לעובדה שטלפונים שאינם של סמסונג אינם בסכנה של התקנה של אפליקציה זדונית ברקע בשקט. המשתמש הממוצע לא יהיה חכם יותר אם APK זדוני שנוצר עם "Fortnite" בשמו וסמל אפליקציית Fortnite יוצג בפניו להתקנה.

ובכל זאת, יש הבחנה ברורה בין ניצול הפגם הזה בסמארטפונים של סמסונג גלקסי לסמארטפונים שאינם של סמסונג. הראשון הוא התקפת Man-in-the-Disk שמנצלת גם ממשק API של מערכת נסתר כדי להתקין בשקט כל אפליקציה ב הרקע, עם כל הרשאות, וללא צורך להערים על המשתמש לחשוב שהוא מתקין Fortnite מזויף APK. האחרון הוא א מתקפת Man-in-the-Disk רגילה שיכולה לקרות גם לאפליקציות אחרות ששומרות חבילות APK או נתונים חשובים אחרים בספריות אחסון חיצוניות, כפי שהראה לאחרונה CheckPoint הודעה. במקרה, הודות ל-Galaxy Apps API הנסתר, מתקפת ה-Man-in-the-Disk הזו מסוכנת יותר במכשירי סמסונג גלקסי.

תיקון הפגם

לזכותה של Epic Games ייאמר שהם הגיבו מהר מאוד לדיווח על Google Issue Tracker והוציאו עדכון לגרסה 2.1.0 במהירות האפשרית. התיקון היה פשוט - פשוט שמור את ה-APK של Fortnite שהורד בספריית האחסון הפנימית של מתקין Fortnite ב- /data/data ולא בספריית האחסון החיצונית שלו ב- /data/media. המהנדס של Epic Games ביקש לחשוף את הפגם לאחר 90 יום, אם כי גוגל סירבה ופרסמה את הנושא לציבור 7 ימים לאחר שהתיקון הושק. המנכ"ל של Epic Games טים סוויני היה לֹא מרוצה מזמן האספקה ​​המהיר מדוח האבטחה הראשוני ועד לחשיפתו. הוא הציע את ההצהרה הבאה ל אנדרואיד מרכזי.

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

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

מהנדס אבטחה אפי, בדחפתי, ביקש מגוגל לדחות את החשיפה לציבור במשך 90 הימים הטיפוסיים כדי לאפשר לעדכון להיות מותקן באופן נרחב יותר. גוגל סירבה. אתה יכול לקרוא הכל ב https://issuetracker.google.com/issues/112630336

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

אני לא יכול לדבר על כמה מכשירי סמסונג גלקסי קיימים עדיין עם מתקין Fortnite הישן יותר. אולי Epic Games צריך להגיד למשתמשים האלה לעדכן את ההתקנה שלהם על ידי שליחת הודעה ב-Fortnite Mobile. התכונה החדשה והחדישה של Firebase להעברת הודעות בתוך האפליקציה יכול לעשות את העבודה. אם כי, זה כנראה לא עניין גדול בכל מקרה, כי אם משתמש עם המתקין הישן יותר כבר הוריד את הלגיטימי Fortnite, אז כל התקפת MITD לא תעבוד כי לא ניתן להתקין את ה-APK הזדוני על גבי Fortnite הקיים הַתקָנָה. בכל מקרה, הגילוי של הפגם הזה מוקדם כל כך לאחר שחרורו של Fortnite באנדרואיד - כשעדיין יש כל כך הרבה מחלוקת על Epic Games' החלטה לבטל את Google Play- בהחלט עוזר לטיעון שההחלטה של ​​Epic Games הייתה רשלנית. אם זו הייתה הכוונה של גוגל מאחורי פרסום הנושא הזה כל כך מהר, לעולם לא נדע.