Fortnite Installer може да бъде злоупотребяван за безшумно инсталиране на приложения на телефони Galaxy

Fortnite Mobile в приложението за инсталиране на Android можеше да се използва в първата си версия. Може да бъде злоупотребено с тихо инсталиране на всяко приложение на телефони Samsung Galaxy.

Стартирането на Fortnite Mobile на Android не беше особено страхотно, особено оттогава много от поддържаните устройства наистина ли трудно да играете играта с приемлива скорост на кадрите. Играта стартира като a Samsung Galaxy ексклузивно само за 3 дни. Инсталаторът на Fortnite беше достъпен за първи път на Приложения на Samsung Galaxy преди Epic Games позволи на играчи, които не са от Samsung, да изтеглят и инсталират пълната игра от Fortnite Installer, получен от уебсайта на Epic. Малко след като инсталаторът на Fortnite стана достъпен, Epic Games тихо пусна актуализация на инсталатора. Сега знаем защо: те закърпиха a Човек в диска експлойт, който направи възможно злонамерено приложение да безшумно инсталиране всяко приложение, което искат на смартфони Samsung Galaxy. Тъй като имаше известно объркване относно това как работи този недостатък, ще се опитаме да изясним нещата. Първо, трябва да обясним основите на инсталирането на приложения на Android.


Процес на инсталиране на приложението на смартфони с Android

Безшумни инсталации от източници на първа страна

За да инсталирате тихо APK на Android, без да подканяте потребителя за разрешение, трябва да имате приложение на системно ниво с INSTALL_PACKAGES дадено разрешение. Примери за приложения с това разрешение включват Google Play Store на повечето устройства с Android. Магазините за приложения на първи страни на устройства от Samsung, Huawei и други производители на устройства може също да имат предоставено разрешение INSTALL_PACKAGES. Ако искате да инсталирате което и да е приложение от Google Play Store, то ще се справи с изтеглянето и ще се инсталира автоматично приложението за вас без допълнителна намеса, след като натиснете „Инсталиране“. (Дори Google Play Store автоматично дава определени разрешения за изпълнение като този за наслагвания, докато приложенията, инсталирани извън 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 разрешение и потребителят трябва да постави това приложение в белия списък, за да може да поиска инсталиране на приложение чрез услугата Package Manager. Тъй като REQUEST_INSTALL_PACKAGES е разрешение за „приложение“, това го прави едно от разрешенията, които могат да се контролират от диспечера на разрешенията на настройките или чрез cmd appops shell команда.

След като инсталацията от неизвестни източници е активирана глобално или конкретно за искащо приложение, тогава потребителят може да зареди странично приложение. Мениджърът на пакети обаче не позволява приложението да се инсталира тихо. По-скоро ще подкани потребителя дали иска да инсталира приложението и ще посочи всички чувствителни разрешения, които иска да бъдат предоставени при инсталиране. Ако потребителят приеме, тогава приложението се инсталира с исканите разрешения без време на изпълнение. OEM производителите могат също да персонализират Package Manager: Например Package Manager в китайската версия на EMUI 5 на Huawei има функция за сканиране на APK, за да реши дали е безопасно и да контролира какви са разрешенията предоставено преди инсталация. Наблюдавах това на Honor Note 8, работещ с EMUI 5, внесен от Китай, въпреки че съм сигурен, че други китайски устройства на Huawei и Honor също имат тази функция в техните мениджъри на пакети.

Във всеки случай това обобщава разликата между инсталирането на приложение от одобрен източник на първа страна и източник на трета страна. Ако се опитате да инсталирате приложение от Play Store или еквивалентен магазин за приложения с INSTALL_PACKAGES разрешение, той безшумно ще се справи с инсталирането сам без допълнителна намеса на потребителя, след като започнете изтеглянето. Но ако изтеглите APK от XDA Labs, APKMirror или други източници на трети страни, стандартният пакет за инсталиране ще се справи с инсталирането и ще подкани потребителя да инсталира този пакет. И така, къде идва Fortnite Installer и защо всичко това е уместно?

Грешка в инсталационния процес на Fortnite

По-рано днес Google разкри уязвимост те откриха с първата версия на Fortnite Installer. Уязвимостта беше демонстрирана на Exynos Samsung Galaxy S8+ (dream2lte), но също така засегна всички други устройства Samsung Experience, включително Samsung Galaxy Note 9 и Samsung Galaxy Tab S4. Уязвимостта позволява на вече инсталирано злонамерено приложение за да се възползвате от начина, по който Fortnite Installer се опитва да инсталира Fortnite за първи път на устройства Samsung Galaxy. Чрез използване на частен API в Samsung Galaxy Apps, Fortnite Installer заобикаля необходимостта от подканване на потребителя чрез стандартния пакет за инсталиране на Fortnite. Това е така, защото Galaxy Apps има необходимото разрешение, за да се справи с инсталацията безшумно. Няма да има нищо лошо в този процес на тиха инсталация, ако приложението, което се инсталира безшумно, е истинският Fortnite. Но поради мястото, където Fortnite Installer съхранява изтегления APK файл за играта Fortnite, той може лесно да се използва.

AndroidManifest от Samsung Galaxy Apps показва, че Galaxy Apps има разрешение да инсталира други приложения самостоятелно, заобикаляйки стандартния пакет за инсталиране.

Според доклада на Issue Tracker, Fortnite Installer ще изтегли 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 съхрани изтегления Fortnite APK в собствената си директория /data/data/, би било невъзможно за всяко приложение без разрешения за четене (т.е. без root достъп), за да знаете какво се случва в тази директория.

Въпреки това, тъй като инсталаторът на 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 Installer във външно хранилище. Когато установи, че изтеглянето е приключило и пръстовият отпечатък е проверен, той заменя изтегли пакет 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? Е, тъй като Samsung Galaxy Apps не е инсталиран на устройства, които не са на Samsung, злонамереният APK няма да се инсталира тихо във фонов режим. Fortnite Installer е приложение на трета страна и следователно трябва първо да подкани потребителя да го активира инсталация от неизвестни източници и след това изпратете заявка до инсталатора на пакета за инсталиране на фалшивия Fortnite APK. След това ще зависи от потребителя да докосне „Инсталиране“, когато бъде попитан дали иска да инсталира приложението или не. Това е проблематично, независимо от факта, че телефоните, които не са на Samsung, не са изложени на опасност злонамерено приложение да бъде инсталирано безшумно във фонов режим. Средностатистическият потребител не би бил по-мъдър, ако злонамерен APK, създаден с „Fortnite“ в името си и иконата на приложението Fortnite, му бъде представен за инсталиране.

Все пак има ясно разграничение между използването на този недостатък на смартфони Samsung Galaxy и смартфони, които не са на Samsung. Първата е атака Man-in-the-Disk, която също се възползва от скрит системен API за безшумно инсталиране на всяко приложение в фона, с каквито и да било разрешения и без нужда да подвеждате потребителя да мисли, че инсталира фалшив Fortnite APK. Последният е а стандартна атака Man-in-the-Disk, която може да се случи и на други приложения, които записват APK или други важни данни във външни директории за съхранение, както показват последните CheckPoint пост. Случва се така, че благодарение на скрития API на Galaxy Apps, тази атака Man-in-the-Disk е по-опасна на устройствата Samsung Galaxy.

Коригиране на недостатъка

За чест на Epic Games, те реагираха много бързо на доклада на Google Issue Tracker и пуснаха актуализация до версия 2.1.0 възможно най-бързо. Поправката беше проста – просто запазете изтегления Fortnite APK във вътрешната директория за съхранение на инсталатора на 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 срещу разпространението на Fortnite от Epic извън Google Play.

Не мога да говоря за колко съществуващи устройства на Samsung Galaxy все още имат по-стария инсталатор на Fortnite. Може би Epic Games трябва да каже на тези потребители да актуализират своята инсталация, като изпратят съобщение във Fortnite Mobile. Страхотната нова функция за съобщения в приложението на Firebase може да свърши работа. Въпреки че това вероятно не е голяма работа така или иначе, защото, ако потребител с по-стария инсталатор вече е изтеглил легитимния Fortnite, тогава всяка MITD атака няма да работи, защото злонамереният APK не може да бъде инсталиран върху съществуващия Fortnite инсталация. Във всеки случай, откриването на този недостатък толкова рано след пускането на Fortnite на Android – когато все още има толкова много спорове относно Epic Games решение да се откаже от Google Play— определено помага на аргумента, че решението на Epic Games е било небрежно. Никога няма да разберем дали това е било намерението на Google да оповести този проблем толкова бързо.