Instalator Fortnite może zostać wykorzystany do cichego instalowania aplikacji na telefonach Galaxy

Fortnite Mobile w aplikacji instalacyjnej na Androida można było wykorzystać w jej pierwszej wersji. Cicha instalacja dowolnej aplikacji na telefonach Samsung Galaxy może zostać wykorzystana.

Premiera Fortnite Mobile na Androida nie była zbyt udana, zwłaszcza od tego czasu wiele obsługiwanych urządzeń Naprawdę trudności z graniem w grę z akceptowalną liczbą klatek na sekundę. Gra została uruchomiona jako Samsung Galaxy na wyłączność tylko przez 3 dni. Instalator Fortnite był po raz pierwszy dostępny w dniu Aplikacje Samsunga Galaxy zanim firma Epic Games umożliwiła graczom innym niż Samsung pobranie i zainstalowanie pełnej gry za pomocą instalatora Fortnite dostępnego w witrynie Epic. Krótko po udostępnieniu instalatora Fortnite firma Epic Games po cichu przekazała aktualizację instalatora. Teraz wiemy dlaczego: załatali a Człowiek na dysku exploit, który umożliwił złośliwej aplikacji zainstaluj po cichu dowolną aplikację, jaką chcieli w smartfonach Samsung Galaxy. Ponieważ pojawiło się pewne zamieszanie co do działania tej wady, postaramy się ją wyjaśnić. Najpierw musimy wyjaśnić podstawy instalacji aplikacji na Androidzie.


Proces instalacji aplikacji na smartfonach z systemem Android

Ciche instalacje z zewnętrznych źródeł

Aby dyskretnie zainstalować plik APK na Androidzie bez pytania użytkownika o pozwolenie, musisz mieć aplikację na poziomie systemu z INSTALL_PACKAGES Pozwolenie udzielone. Przykładami aplikacji z tym uprawnieniem jest Sklep Google Play na większości urządzeń z Androidem. Własne sklepy z aplikacjami na urządzeniach Samsung, Huawei i innych producentów również mogą mieć przyznane uprawnienia INSTALL_PACKAGES. Jeśli chcesz zainstalować dowolną aplikację ze Sklepu Google Play, zajmie się ona pobraniem i automatycznie zainstaluje aplikację dla Ciebie bez dalszej interwencji po naciśnięciu przycisku „Zainstaluj”. (Nawet sklep Google Play automatycznie przyznaje określone uprawnienia wykonawcze takie jak ten dla nakładki, natomiast aplikacje instalowane spoza Sklepu Play muszą prosić użytkownika o przyznanie tych uprawnień).

Jeśli ciekawi Cię, czy aplikacja na Twoim urządzeniu ma uprawnienia INSTALL_PACKAGES, możesz się tego dowiedzieć za pomocą polecenia ADB.

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

Na przykład nazwa pakietu w Sklepie Google Play to „com.android.vending". Inną aplikacją z tym uprawnieniem jest Shell z nazwą pakietu com.android.shell. Dla tych z Was, którzy korzystają Substrat bez korzeni poprzez wtyczkę Andromeda w systemie Android Oreo skrypt Andromeda uruchamiany na komputerze utrzymuje proces powłoki, dzięki czemu Substratum może go używać do instalowania pakietów (nakładek motywu), a następnie używać Polecenia OverlayManagera aby włączyć nakładki.

Ładowanie aplikacji z zewnętrznych źródeł

Jeśli spróbujesz pobrać i zainstalować aplikację spoza własnego sklepu z aplikacjami, musisz najpierw włączyć nieznane źródła instalacji. To pozwala Usługa menedżera pakietów w ramach systemu Android (który ma uprawnienia INSTALL_PACKAGES) pamiętaj, że akceptujesz ryzyko związane z ładowaniem aplikacji z zewnętrznych źródeł. Na urządzeniach z systemem Android Oreo w wersji wcześniejszej w ustawieniach zabezpieczeń dostępna jest jedna opcja umożliwiająca instalację z nieznanych źródeł. Na Androidzie Oreo i nowszych wersjach, aplikacja wzywająca do instalacji pakietu APK musi zadeklarować REQUEST_INSTALL_PACKAGES pozwolenie, a użytkownik musi dodać tę aplikację do białej listy, aby mogła żądać instalacji aplikacji za pośrednictwem usługi Menedżera pakietów. Ponieważ REQUEST_INSTALL_PACKAGES jest uprawnieniem „aplikacji”, oznacza to, że jest to jedno z uprawnień, które można kontrolować z poziomu menedżera uprawnień w Ustawieniach lub za pośrednictwem cmd appops polecenie powłoki.

Po włączeniu instalacji z nieznanych źródeł globalnie lub specjalnie dla aplikacji żądającej, użytkownik może załadować aplikację z boku. Jednak Menedżer pakietów nie pozwala na cichą instalację aplikacji. Zamiast tego wyświetli monit użytkownikowi, czy chce zainstalować aplikację, i wyświetli listę wszelkich wrażliwych uprawnień, o które prosi podczas instalacji. Jeśli użytkownik wyrazi zgodę, aplikacja zostanie zainstalowana z żądanymi uprawnieniami spoza środowiska wykonawczego. Producenci OEM mogą również dostosować Menedżera pakietów: na przykład Menedżer pakietów w chińskiej wersji EMUI 5 Huawei ma funkcję skanowania pliku APK w celu podjęcia decyzji, czy jest on bezpieczny i kontroli uprawnień nadany zanim instalacja. Zaobserwowałem to na Honor Note 8 z systemem EMUI 5 importowanym z Chin, chociaż jestem pewien, że inne chińskie urządzenia Huawei i Honor również mają tę funkcję w swoich menedżerach pakietów.

W każdym razie to podsumowuje różnicę między instalowaniem aplikacji z zatwierdzonego, własnego źródła a źródła zewnętrznego. Jeśli spróbujesz zainstalować aplikację ze Sklepu Play lub równoważnego sklepu z aplikacjami za pomocą pliku INSTALL_PACKAGES pozwolenie, po cichu zajmie się instalacją samodzielnie, bez dalszej interwencji użytkownika po jej uruchomieniu pobranie. Jeśli jednak pobierzesz plik APK z XDA Labs, APKMirror lub innych źródeł zewnętrznych, instalator pakietu standardowego zajmie się instalacją i poprosi użytkownika o zainstalowanie tego pakietu. Gdzie więc pojawia się instalator Fortnite i dlaczego to wszystko jest istotne?

Błąd w procesie instalacji Fortnite

Dzisiaj rano Google ujawniło lukę odkryli w pierwszej wersji instalatora Fortnite. Luka została wykryta w Exynos Samsung Galaxy S8+ (dream2lte), ale dotyczyła także wszystkich innych urządzeń Samsung Experience, w tym Samsunga Galaxy Note 9 i Samsunga Galaxy Tab S4. Luka umożliwia m.in już zainstalowaną złośliwą aplikację aby skorzystać ze sposobu, w jaki Instalator Fortnite próbuje zainstalować Fortnite po raz pierwszy na urządzeniach Samsung Galaxy. Korzystając z prywatnego interfejsu API w aplikacjach Samsung Galaxy, instalator Fortnite omija potrzebę monitowania użytkownika za pomocą standardowego instalatora pakietu, aby zainstalował Fortnite. Dzieje się tak dlatego, że Galaxy Apps ma uprawnienia potrzebne do cichej obsługi instalacji. Nie byłoby nic złego w procesie cichej instalacji, jeśli instalowana po cichu aplikacja to prawdziwy Fortnite. Jednak ze względu na miejsce, w którym instalator Fortnite zapisał pobrany plik APK gry Fortnite, można go było łatwo wykorzystać.

Z pliku AndroidManifest z Samsung Galaxy Apps wynika, że ​​Galaxy Apps ma uprawnienia do samodzielnego instalowania innych aplikacji, z pominięciem standardowego instalatora pakietu.

Według raportu w narzędziu do śledzenia problemów instalator Fortnite pobierze aplikację Fortnite Mobile APK do /sdcard/Android/data/com.epicgames.portal/files/downloads/. W systemie Android jest to uważane za „pamięć zewnętrzną”, ponieważ /sdcard jest dowiązaniem symbolicznym /data/media/CURRENT_USER, a /sdcard to nazwa używana we wczesnych latach Androida, gdy dane aplikacji były przechowywane na fizycznych kartach SD. Obecnie dane aplikacji są zwykle przechowywane w katalogach specyficznych dla aplikacji w /data/data/, a każda aplikacja ma dostęp tylko do plików w swoim własnym katalogu /data/data. Zatem, jeśli instalator Fortnite zapisał pobrany plik APK Fortnite we własnym katalogu /data/data/, żadna aplikacja bez uprawnień do odczytu (tj. bez uprawnień roota), aby wiedzieć, co dzieje się w tym katalogu.

Jednak od czasu instalatora Fortnite zapisał pobrany plik APK w pamięci zewnętrznej, może być monitorowany i nadpisywany przez dowolna aplikacja z uprawnieniami do odczytu pamięci zewnętrznej. Zwykle aplikacje zapisują w /data/media, „wirtualnej karcie SD”, gdy przechowują pliki, do których użytkownik musi uzyskać dostęp za pośrednictwem protokołu MTP lub innych aplikacji. Aby aplikacja mogła czytać lub zapisywać w /data/media, musi mieć READ_EXTERNAL_STORAGE i Odpowiednio uprawnienia WRITE_EXTERNAL_STORAGE (oba należą do tej samej grupy uprawnień i dlatego są przyznane łącznie). Przed Androidem 4.4 KitKat większość aplikacji żądała tych uprawnień podczas instalacji, ponieważ w przeciwnym razie nie byłyby one dostępne mogą czytać lub zapisywać pliki w wyznaczonym zewnętrznym katalogu pamięci pakietu /data/media/.../Android/. Wraz z wprowadzeniem FUSE do emulacji uprawnień do katalogu w stylu FAT-on-sdcard w systemie Android 4.4 KitKat aplikacje nie potrzebują już żadnych uprawnień, aby uzyskać dostęp do plików w wyznaczonym katalogu w pamięci zewnętrznej. Dostęp do plików w jakimkolwiek innym katalogu nadal wymagałby uprawnień do pamięci zewnętrznej, co może zrobić złośliwa aplikacja, aby przejąć proces instalacji Fortnite.

Jak pokazano na poniższym filmie, złośliwa aplikacja z uprawnieniem READ_EXTERNAL_STORAGE monitoruje katalog pobierania instalatora Fortnite w pamięci zewnętrznej. Gdy wykryje, że pobieranie zostało zakończone i odcisk palca został zweryfikowany, zastępuje plik pobrał pakiet Fortnite z własnym złośliwym pakietem dzięki WRITE_EXTERNAL_STORAGE pozwolenie. Jednak ze względu na sposób, w jaki Samsung Galaxy Apps weryfikuje plik APK Fortnite przed instalacją (...sprawdza tylko, czy nazwa pakietu to „com.epicgames.fortnite”), możliwe jest posiadanie Galaxy Aplikacje dyskretnie zainstaluj złośliwy pakiet w tle, bez interwencji użytkownika ani powiadomienia—o ile nazwa szkodliwego pakietu brzmiała „com.epicgames.fortnite”. Co gorsza, gdyby ten złośliwy pakiet atakował pakiet SDK na poziomie 22 lub niższym (Android 5.1 Lollipop i starsze wersje), automatycznie uzyskać wszystkie uprawnienia zdefiniowane w manifeście, ponieważ uprawnienia wykonawcze są obowiązkowe tylko w przypadku aplikacji przeznaczonych dla pakietu SDK na poziomie 23 i nowszym (Android 6.0 Marshmallow i później).

Ale co by się stało na urządzeniach innych niż Samsung? Cóż, ponieważ Samsung Galaxy Apps nie jest zainstalowany na urządzeniach innych niż Samsung, złośliwy plik APK nie zostanie po cichu zainstalowany w tle. Instalator Fortnite to aplikacja innej firmy, dlatego należy najpierw poprosić użytkownika o jej włączenie instalację z nieznanych źródeł, a następnie wyślij żądanie do instalatora pakietu w celu zainstalowania fałszywego APK Fortnite'a. Od użytkownika zależałoby wtedy, czy kliknie „Zainstaluj”, gdy zostanie zapytany, czy chce zainstalować aplikację, czy nie. Jest to problematyczne, niezależnie od faktu, że telefony innych firm nie są narażone na ryzyko cichej instalacji złośliwej aplikacji w tle. Przeciętny użytkownik nie byłby wcale mądrzejszy, gdyby do instalacji został mu wyświetlony złośliwy plik APK zawierający „Fortnite” w nazwie i ikonę aplikacji Fortnite.

Mimo to istnieje wyraźna różnica pomiędzy wykorzystaniem tej luki w smartfonach Samsung Galaxy i smartfonach innych producentów. Pierwszy z nich to atak typu Man-in-the-Disk, który wykorzystuje również ukryty systemowy interfejs API do cichej instalacji dowolnej aplikacji tle, z dowolnymi uprawnieniami i bez konieczności oszukiwania użytkownika, aby pomyślał, że instaluje fałszywego Fortnite APK. To ostatnie to A standardowy atak typu Man-in-the-Disk, który może przytrafić się także innym aplikacjom zapisującym pliki APK lub inne ważne dane w zewnętrznych katalogach pamięci masowejjak pokazał ostatni Punkt kontrolny post. Tak się składa, że ​​dzięki ukrytemu API Galaxy Apps ten atak Man-in-the-Disk jest bardziej niebezpieczny na urządzeniach Samsung Galaxy.

Naprawa wady

Trzeba przyznać, że firma Epic Games bardzo szybko odpowiedziała na zgłoszenie w narzędziu Google Issue Tracker i najszybciej, jak mogła, wprowadziła aktualizację do wersji 2.1.0. Rozwiązanie było proste — po prostu zapisz pobrany plik APK Fortnite w wewnętrznym katalogu pamięci instalatora Fortnite w /data/data zamiast w katalogu pamięci zewnętrznej w /data/media. Inżynier Epic Games zażądał ujawnienia usterki po 90 dniach, jednak Google odmówił i upublicznił problem 7 dni po wprowadzeniu poprawki. Dyrektor generalny Epic Games, Tim Sweeney, był nie zadowolony z szybkiego czasu realizacji od wstępnego raportu bezpieczeństwa do jego ujawnienia. Złożył następujące oświadczenie Centrum Androida.

Firma Epic naprawdę doceniła wysiłki Google mające na celu przeprowadzenie dogłębnego audytu bezpieczeństwa Fortnite bezpośrednio po naszym wypuścić na Androida i udostępnić wyniki firmie Epic, abyśmy mogli szybko wydać aktualizację naprawiającą tę wadę odkryty.

Jednakże tak szybkie ujawnienie szczegółów technicznych usterki ze strony Google było nieodpowiedzialne, podczas gdy wiele instalacji nie zostało jeszcze zaktualizowanych i nadal było podatnych na ataki.

Inżynier ds. bezpieczeństwa firmy Epic za moimi namowami poprosił Google o opóźnienie publicznego ujawnienia aktualizacji o typowe 90 dni, aby dać czas na szersze zainstalowanie aktualizacji. Google odmówił. Całość można przeczytać na https://issuetracker.google.com/issues/112630336

Wysiłki Google w zakresie analizy bezpieczeństwa są doceniane i przynoszą korzyści platformie Android, jednak firma tak potężna jak Google powinna więcej ćwiczyć odpowiedzialnym terminie ujawnienia informacji i nie narażać użytkowników w trakcie działań przeciwdziałających PR przeciwko dystrybucji Fortnite przez firmę Epic poza granicami Google Play.

Nie mogę powiedzieć, ile istniejących urządzeń Samsung Galaxy nadal ma starszą wersję instalatora Fortnite. Być może Epic Games powinno poinformować tych użytkowników o konieczności aktualizacji instalacji, wysyłając wiadomość w Fortnite Mobile. Nowa, fajna funkcja przesyłania wiadomości w aplikacji Firebase mógłby załatwić sprawę. Chociaż i tak prawdopodobnie nie jest to wielka sprawa, ponieważ jeśli użytkownik ze starszym instalatorem pobrał już legalny Fortnite, wówczas żaden atak MITD nie zadziała, ponieważ złośliwego pakietu APK nie można zainstalować na istniejącym Fortnite instalacja. W każdym razie wykrycie tej wady tak wcześnie po wydaniu Fortnite na Androida – kiedy wciąż jest tak wiele kontrowersji wokół gry Epic Games decyzja o porzuceniu Google Play— z pewnością pomaga argument, że decyzja Epic Games była nieostrożna. Nigdy się nie dowiemy, czy taki był zamysł Google, który spowodował tak szybkie nagłośnienie tej sprawy.