Інсталятор Fortnite можна використати для тихого встановлення програм на телефонах Galaxy

Програму інсталяції Fortnite Mobile на Android можна було використовувати в першій версії. Це може бути використано для тихого встановлення будь-якої програми на телефонах Samsung Galaxy.

Запуск Fortnite Mobile на Android не був надто чудовим, особливо після багато підтримуваних пристроїв насправді важко грати в гру з прийнятною частотою кадрів. Гра запущена як a Ексклюзив Samsung Galaxy лише на 3 дні. Інсталятор Fortnite вперше був доступний на Програми Samsung Galaxy до того, як Epic Games дозволяла гравцям, які не належать до Samsung, завантажувати та встановлювати повну гру з інсталятора Fortnite, доступного на веб-сайті Epic. Незабаром після того, як інсталятор Fortnite став доступним, Epic Games тихо оновили інсталятор. Тепер ми знаємо чому: вони виправили a Людина-на-диску експлойт, який уможливив зловмисну ​​програму тихо встановити будь-який додаток, який вони хотіли на смартфонах Samsung Galaxy. Оскільки виникла певна плутанина щодо того, як працює ця вада, ми спробуємо прояснити ситуацію. По-перше, нам потрібно пояснити основи встановлення програми на Android.


Послідовність встановлення програми на смартфонах Android

Тиха інсталяція зі сторонніх джерел

Щоб тихо встановити APK на Android без запиту дозволу користувача, вам потрібно мати програму системного рівня з INSTALL_PACKAGES дозвіл надано. Прикладами програм із таким дозволом є магазин Google Play на більшості пристроїв Android. Сховища додатків першої сторони на пристроях від Samsung, Huawei та інших виробників також можуть мати дозвіл INSTALL_PACKAGES. Якщо ви хочете встановити будь-яку програму з магазину Google Play, вона виконає завантаження та автоматично встановиться програма для вас без подальшого втручання після натискання «Встановити». (Навіть магазин Google Play автоматично надає певні дозволи на виконання такий як той для накладки, тоді як програми, встановлені за межами Play Store, повинні просити користувача надати ці дозволи.)

Якщо вам цікаво, чи має програма на вашому пристрої дозвіл INSTALL_PACKAGES, ви можете дізнатися за допомогою команди ADB.

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

Наприклад, назва пакета Google Play Store: "com.android.vending". Ще одна програма з таким дозволом — Shell із назвою пакета com.android.shell. Для тих із вас, хто використовує rootless Substratum через плагін Andromeda на Android Oreo сценарій Andromeda, який запускається з вашого комп’ютера, забезпечує роботу процесу оболонки, щоб Substratum міг використовувати його для встановлення пакетів (накладання тем), а потім використовувати Команди OverlayManager щоб увімкнути накладання.

Бічне завантаження програм зі сторонніх джерел

Якщо ви намагаєтеся завантажити та встановити програму з-за меж магазину додатків основного виробника, спочатку потрібно ввімкнути невідомі джерела встановлення. Це дозволяє Служба менеджера пакетів у рамках Android (яка має дозвіл INSTALL_PACKAGES) знайте, що ви усвідомлюєте ризики стороннього завантаження програм зі сторонніх джерел. На пристроях до Android Oreo є один перемикач у налаштуваннях безпеки, щоб дозволити встановлення з невідомих джерел. На Android Oreo та новіших версіях, програма, яка вимагає інсталяції APK, має декларувати REQUEST_INSTALL_PACKAGES дозволу, і користувач має додати цю програму до білого списку, щоб вона могла запитувати встановлення програми через службу диспетчера пакетів. Оскільки REQUEST_INSTALL_PACKAGES є дозволом «програми», це робить його одним із дозволів, якими можна керувати в диспетчері дозволів налаштувань або через cmd appops команда оболонки.

Коли інсталяція з невідомих джерел увімкнена глобально або спеціально для програми, яка запитує, користувач може завантажити програму збоку. Однак диспетчер пакунків не дозволяє установлювати програму без звуку. Скоріше, він запитає користувача, чи хоче він встановити програму, і перерахує будь-які конфіденційні дозволи, які він запитує надати під час встановлення. Якщо користувач погоджується, програма встановлюється із запитаними дозволами, не пов’язаними з виконанням. OEM-виробники також можуть налаштувати менеджер пакетів: наприклад, менеджер пакетів у китайській версії EMUI 5 від Huawei має функцію сканування APK, щоб визначити, чи безпечний він, і контролювати, які дозволи надано раніше установка. Я спостерігав це на Honor Note 8 із EMUI 5, імпортованим із Китаю, хоча я впевнений, що інші китайські пристрої Huawei та Honor також мають цю функцію у своїх менеджерах пакетів.

У будь-якому випадку, це підсумовує різницю між встановленням програми зі схваленого основного джерела та стороннього джерела. Якщо ви спробуєте встановити програму з Play Store або еквівалентного магазину програм за допомогою INSTALL_PACKAGES дозволу, він мовчки виконає встановлення самостійно без подальшого втручання користувача після вашого запуску завантаження. Але якщо ви завантажуєте файл APK із XDA Labs, APKMirror або інших сторонніх джерел, стандартний інсталятор пакета виконає встановлення та запропонує користувачеві встановити цей пакет. Тож де береться інсталятор Fortnite і чому все це актуально?

Помилка в процесі встановлення Fortnite

Раніше сьогодні Google розкрила вразливість вони виявили з першою версією інсталятора Fortnite. Уразливість була продемонстрована на Exynos Samsung Galaxy S8+ (dream2lte), але також вплинула на всі інші пристрої Samsung Experience, включаючи Samsung Galaxy Note 9 і Samsung Galaxy Tab S4. Вразливість дозволяє an вже встановлена ​​шкідлива програма щоб скористатися тим, як інсталятор Fortnite намагається встановити Fortnite вперше на пристроях Samsung Galaxy. Використовуючи приватний 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/. Це вважається "зовнішнім накопичувачем" на Android, оскільки /sdcard є символічним посиланням на /data/media/CURRENT_USER, а /sdcard — це назва, яка використовувалася на початку Android, коли дані програм зберігаються на фізичних SD-картах. Зараз дані додатків зазвичай зберігаються в окремих каталогах додатків у /data/data/, і кожна програма має доступ лише до файлів у своєму власному каталозі /data/data. Таким чином, якби інсталятор Fortnite зберіг завантажений APK Fortnite у власному каталозі /data/data/, це було б неможливо для будь-якої програми без дозволу на читання (тобто. без кореневого доступу), щоб знати, що відбувається в цьому каталозі.

Однак, оскільки інсталятор Fortnite зберіг завантажений APK у зовнішній пам’яті, його можна відстежувати та перезаписувати будь-яка програма з дозволами на читання зовнішньої пам’яті. Зазвичай програми записують на /data/media, «віртуальну SD-карту», ​​коли вони зберігають файли, до яких користувач має отримати доступ через MTP або інші програми. Щоб програма читала або записувала в /data/media, вона повинна мати READ_EXTERNAL_STORAGE і Дозволи WRITE_EXTERNAL_STORAGE відповідно (обидва належать до однієї групи дозволів і, отже, надані разом). До Android 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 перевіряє APK Fortnite перед встановленням (...він просто перевіряє, чи назва пакета "com.epicgames.fortnite"), можна мати Galaxy програми тихо інсталювати шкідливий пакет у фоновому режимі без втручання або сповіщення користувача— якщо ім’я шкідливого пакета було «com.epicgames.fortnite». Ще гірше, якби цей шкідливий пакет був націлений на рівень SDK 22 або нижчий (Android 5.1 Lollipop і раніші версії), він би автоматично надаватиметься всі дозволи, визначені в його маніфесті, оскільки дозволи під час виконання є обов’язковими лише для програм, націлених на рівень SDK 23 і вище (Android 6.0 Marshmallow і пізніше).

Але що станеться на пристроях не від Samsung? Ну, оскільки Samsung Galaxy Apps не встановлено на пристроях інших виробників, шкідливий APK не буде автоматично встановлено у фоновому режимі. Інсталятор Fortnite є сторонньою програмою, тому спочатку потрібно запропонувати користувачеві ввімкнути її інсталяцію з невідомих джерел, а потім надішліть запит інсталятору пакетів для встановлення фейку Fortnite APK. Тоді це залежатиме від того, чи натисне користувач «Встановити», коли його запитають, чи хочуть вони встановити програму чи ні. Це проблема, незважаючи на той факт, що телефони інших виробників не піддаються загрозі встановлення шкідливої ​​програми у фоновому режимі. Пересічний користувач не вчинив би мудрішим, якщо б йому надали для встановлення шкідливий APK, створений із «Fortnite» у назві та піктограмою програми Fortnite.

Тим не менш, існує чітка різниця між використанням цієї вади на смартфонах Samsung Galaxy і смартфонах інших виробників. Перший – це атака Man-in-the-Disk, яка також використовує переваги прихованого системного API для тихого встановлення будь-якої програми в у фоновому режимі з будь-якими дозволами та без потреби змусити користувача подумати, що він встановлює підроблену Fortnite APK. Останній є a стандартна атака Man-in-the-Disk, яка також може трапитися з іншими програмами, які зберігають файли APK або інші важливі дані в зовнішніх каталогах зберігання, як показали останні CheckPoint пост. Так сталося, що завдяки прихованому API Galaxy Apps ця атака Man-in-the-Disk більш небезпечна на пристроях Samsung Galaxy.

Виправлення дефекту

До честі Epic Games, вони дуже швидко відреагували на звіт Google Issue Tracker і випустили оновлення до версії 2.1.0 якомога швидше. Виправлення було простим — просто збережіть завантажений APK Fortnite у внутрішній каталог інсталятора Fortnite в /data/data, а не в зовнішній каталог зберігання в /data/media. Інженер Epic Games попросив розкрити недолік через 90 днів, але Google відмовився та оприлюднив проблему через 7 днів після появи виправлення. Генеральним директором Epic Games був Тім Суїні ні задоволений швидким часом виконання від початкового звіту про безпеку до його оприлюднення. Він запропонував наступну заяву Android Central.

Epic щиро оцінив зусилля Google провести поглиблений аудит безпеки Fortnite одразу після нашого випустити на Android і поділитися результатами з Epic, щоб ми могли швидко випустити оновлення для усунення недоліку виявлено.

Однак з боку Google було безвідповідально так швидко оприлюднити технічні деталі недоліку, оскільки багато інсталяцій ще не було оновлено та все ще були вразливими.

Інженер безпеки Epic за моїм наполяганням попросив Google відкласти публічне оприлюднення на типові 90 днів, щоб дати час для більшого поширення оновлення. Google відмовився. Ви можете прочитати все це на https://issuetracker.google.com/issues/112630336

Зусилля Google щодо аналізу безпеки оцінені та приносять користь платформі Android, однак така потужна компанія, як Google, повинна більше практикуватися відповідальний час розкриття інформації, ніж цей, і не наражати на небезпеку користувачів у ході своїх заходів протидії PR проти розповсюдження Epic Fortnite за межами Google Play.

Я не можу сказати, скільки існуючих пристроїв Samsung Galaxy все ще мають старішу програму встановлення Fortnite. Можливо, Epic Games слід повідомити цим користувачам оновити інсталяцію, надіславши повідомлення у Fortnite Mobile. Нова чудова функція In-App Messaging від Firebase може зробити трюк. Хоча це, ймовірно, не є великою проблемою, тому що якщо користувач зі старішою програмою встановлення вже завантажив законну Fortnite, тоді будь-яка атака MITD не працюватиме, оскільки шкідливий APK не можна встановити поверх існуючого Fortnite установка. У будь-якому випадку, виявлення цієї вади так рано після випуску Fortnite на Android, коли досі існує стільки суперечок щодо Epic Games рішення відмовитися від Google Play— безумовно, допомагає аргумент, що рішення Epic Games було необережним. Ми ніколи не дізнаємося, чи був намір Google так швидко оприлюднити цю проблему.