L'app di installazione di Fortnite Mobile su Android era sfruttabile nella sua prima versione. Potrebbe essere un abuso installare silenziosamente qualsiasi app sui telefoni Samsung Galaxy.
Il lancio di Fortnite Mobile su Android non è stato eccezionale, soprattutto da allora molti dei dispositivi supportati Veramente fatica a giocare con frame rate accettabili. Il gioco è stato lanciato come a Esclusiva Samsung Galaxy per soli 3 giorni. Il programma di installazione di Fortnite è stato disponibile per la prima volta su Applicazioni Samsung Galaxy prima che Epic Games consentisse ai giocatori non Samsung di scaricare e installare il gioco completo dal programma di installazione Fortnite ottenuto sul sito Web di Epic. Poco dopo che il programma di installazione di Fortnite è diventato disponibile, Epic Games ha inviato silenziosamente un aggiornamento al programma di installazione. Ora sappiamo perché: hanno patchato a L'uomo nel disco exploit che ha reso possibile a un'app dannosa di installare silenziosamente
qualsiasi app volessero sugli smartphone Samsung Galaxy. Poiché c'è stata un po' di confusione su come funziona questo difetto, proveremo a chiarire le cose. Innanzitutto, dobbiamo spiegare le basi dell'installazione dell'app su Android.Flusso di installazione dell'app su smartphone Android
Installazioni silenziose da fonti di prima parte
Per installare silenziosamente un APK su Android senza richiedere l'autorizzazione all'utente, è necessario disporre di un'applicazione a livello di sistema con INSTALLA_PACCHETTI permesso accordato. Esempi di applicazioni con questa autorizzazione includono Google Play Store sulla maggior parte dei dispositivi Android. Anche gli store di applicazioni proprietari su dispositivi Samsung, Huawei e altri produttori di dispositivi potrebbero avere l'autorizzazione INSTALL_PACKAGES concessa. Se desideri installare qualsiasi app dal Google Play Store, gestirà il download e si installerà automaticamente l'app per te senza ulteriori interventi dopo aver premuto "Installa". (Anche il Google Play Store automaticamente concede determinate autorizzazioni di runtime come quello per sovrapposizioni, mentre le app installate dall'esterno del Play Store devono chiedere all'utente di concedere queste autorizzazioni.)
Se sei curioso di sapere se un'app sul tuo dispositivo ha l'autorizzazione INSTALL_PACKAGES, puoi scoprirlo tramite un comando ADB.
adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"
Ad esempio, il nome del pacchetto del Google Play Store è "com.android.vending
". Un'altra app con questa autorizzazione è Shell con il nome del pacchetto com.android.shell
. Per quelli di voi che usano Substrato senza radici tramite il plug-in Andromeda su Android Oreo, lo script Andromeda eseguito dal tuo PC mantiene in esecuzione il processo di shell in modo che Substratum possa utilizzarlo per installare i pacchetti (gli overlay del tema) e quindi utilizzare il Comandi di OverlayManager per abilitare le sovrapposizioni.
App a caricamento laterale da fonti di terze parti
Se tenti di scaricare e installare un'app dall'esterno di un app store proprietario, dovrai prima abilitare le origini di installazione sconosciute. Ciò consente a Servizio di gestione dei pacchetti all'interno del framework Android (che dispone dell'autorizzazione INSTALL_PACKAGES) sappi che riconosci i rischi derivanti dal caricamento laterale di app da fonti di terze parti. Sui dispositivi precedenti ad Android Oreo, è disponibile un unico interruttore nelle impostazioni di sicurezza per consentire l'installazione da fonti sconosciute. Su Android Oreo e versioni successive, un'app che richiede l'installazione di un APK deve dichiarare il file RICHIEDI_PACCHETTI_INSTALLAZIONE l'autorizzazione e l'utente deve inserire nella whitelist l'app in modo che possa richiedere l'installazione dell'app tramite il servizio Gestione pacchetti. Poiché REQUEST_INSTALL_PACKAGES è un'autorizzazione "app", ciò la rende una delle autorizzazioni che possono essere controllate dal gestore delle autorizzazioni delle Impostazioni o tramite cmd appops
comando di shell.
Una volta abilitata l'installazione da origini sconosciute a livello globale o specifico per un'applicazione richiedente, l'utente può caricare lateralmente un'app. Tuttavia, il Gestore pacchetti non consente l'installazione silenziosa dell'app. Piuttosto, chiederà all'utente se desidera installare l'app ed elencherà tutte le autorizzazioni sensibili che richiede di essere concesse al momento dell'installazione. Se l'utente accetta, l'app viene installata con le autorizzazioni non runtime richieste. Gli OEM possono anche personalizzare il Package Manager: ad esempio, il Package Manager nella versione cinese di L'EMUI 5 di Huawei ha una funzione per scansionare l'APK per decidere se è sicuro e controllare quali sono le autorizzazioni concesso Prima installazione. L'ho osservato sull'Honor Note 8 con EMUI 5 importato dalla Cina, anche se sono sicuro che anche altri dispositivi Huawei e Honor cinesi hanno questa funzionalità nei loro gestori di pacchetti.
In ogni caso, questo riassume la differenza tra l'installazione di un'app da una fonte approvata di prima parte e da una fonte di terze parti. Se provi a installare un'app dal Play Store o da un app store equivalente con INSTALL_PACKAGES autorizzazione, gestirà silenziosamente l'installazione da sola senza ulteriore intervento da parte dell'utente dopo l'avvio il download. Ma se scarichi un APK da XDA Labs, APKMirror o altre fonti di terze parti, il programma di installazione del pacchetto standard gestirà l'installazione e chiederà all'utente di installare quel pacchetto. Allora da dove viene il programma di installazione di Fortnite e perché tutto questo è rilevante?
Un difetto nel processo di installazione di Fortnite
Oggi, Google rivelato una vulnerabilità hanno scoperto con la prima versione del programma di installazione di Fortnite. La vulnerabilità è stata dimostrata sul Samsung Galaxy S8+ (dream2lte) di Exynos, ma ha interessato anche tutti gli altri dispositivi Samsung Experience, inclusi il Samsung Galaxy Note 9 e il Samsung Galaxy Tab S4. La vulnerabilità consente un applicazione dannosa già installata per sfruttare il modo in cui il programma di installazione di Fortnite tenta di installare Fortnite per la prima volta sui dispositivi Samsung Galaxy. Utilizzando un'API privata in Samsung Galaxy Apps, il programma di installazione di Fortnite evita la necessità di richiedere all'utente tramite il programma di installazione del pacchetto standard di installare Fortnite. Questo perché Galaxy Apps dispone dell'autorizzazione necessaria per gestire l'installazione in modo silenzioso. Non ci sarebbe nulla di sbagliato in questo processo di installazione silenziosa se l'app installata silenziosamente fosse il vero Fortnite. Ma a causa del luogo in cui il programma di installazione di Fortnite memorizzava il file APK scaricato per il gioco Fortnite, era facilmente sfruttabile.
Secondo il rapporto sull'Issue Tracker, il programma di installazione di Fortnite scaricherà l'APK di Fortnite Mobile su /sdcard/Android/data/com.epicgames.portal/files/downloads/
. Questa è considerata "memoria esterna" su Android poiché /sdcard è un collegamento simbolico a /data/media/CURRENT_USER e /sdcard era il nome utilizzato nei primi giorni di Android quando i dati delle app venivano memorizzati su schede SD fisiche. Al giorno d'oggi, i dati delle app vengono generalmente archiviati in directory specifiche dell'app in /data/data/ e ciascuna app ha accesso solo ai file nella propria directory /data/data. Pertanto, se il programma di installazione di Fortnite memorizzasse l'APK di Fortnite scaricato nella propria directory /data/data/, sarebbe impossibile per qualsiasi app senza autorizzazioni di lettura (ad es. senza accesso root) per sapere cosa sta succedendo in questa directory.
Tuttavia, dal momento che il programma di installazione di Fortnite salvato l'APK scaricato nella memoria esterna, potrebbe essere monitorato e sovrascritto da qualsiasi app con autorizzazioni di lettura per l'archiviazione esterna. Normalmente, le app scrivono su /data/media, la "scheda SD virtuale", quando memorizzano file a cui l'utente deve accedere tramite MTP o altre app. Affinché un'app possa leggere o scrivere su /data/media, è necessario che disponga di READ_EXTERNAL_STORAGE e Rispettivamente le autorizzazioni WRITE_EXTERNAL_STORAGE (entrambe si trovano nello stesso gruppo di autorizzazioni e sono quindi concessi insieme). Prima di Android 4.4 KitKat, la maggior parte delle app richiedeva queste autorizzazioni al momento dell'installazione perché altrimenti non lo sarebbero state in grado di leggere o scrivere sui file nella directory di archiviazione esterna designata del pacchetto in /data/media/.../Android/. Con l'introduzione di FUSE per emulare i permessi di directory in stile FAT su scheda SD in Android 4.4 KitKat, le app non necessitano più di autorizzazioni per accedere ai file nella directory designata nella memoria esterna. L'accesso ai file in qualsiasi altra directory richiederebbe comunque le autorizzazioni di archiviazione esterna, che è ciò che un'app dannosa può fare per dirottare il processo di installazione di Fortnite.
Come mostrato nel video qui sotto, un'app dannosa con l'autorizzazione READ_EXTERNAL_STORAGE monitora la directory di download del programma di installazione di Fortnite nella memoria esterna. Quando rileva che il download è completo e l'impronta digitale è verificata, sostituisce il file ha scaricato il pacchetto Fortnite con il proprio pacchetto dannoso grazie a WRITE_EXTERNAL_STORAGE autorizzazione. Tuttavia, a causa del modo in cui Samsung Galaxy Apps verifica l'APK di Fortnite prima dell'installazione (...controlla solo se il nome del pacchetto è "com.epicgames.fortnite"), è possibile avere Galaxy App installa silenziosamente il pacchetto dannoso in background senza alcun intervento o notifica da parte dell'utente— purché il nome del pacchetto dannoso fosse "com.epicgames.fortnite". Ancora peggio, se questo pacchetto dannoso prendesse di mira il livello SDK 22 o inferiore (Android 5.1 Lollipop e versioni precedenti), verranno concesse automaticamente tutte le autorizzazioni definite nel file manifest poiché le autorizzazioni di runtime sono obbligatorie solo per le app destinate al livello SDK 23 e superiore (Android 6.0 Marshmallow e Dopo).
Ma cosa accadrebbe sui dispositivi non Samsung? Bene, poiché Samsung Galaxy Apps non è installato su dispositivi non Samsung, l'APK dannoso non verrà installato automaticamente in background. Fortnite Installer è un'app di terze parti e quindi deve prima chiedere all'utente di abilitarla installazione da fonti sconosciute e quindi inviare una richiesta al programma di installazione del pacchetto per installare il falso APK di Fortnite. Dipenderà quindi dall'utente toccare "Installa" quando gli viene chiesto se desidera installare l'app o meno. Ciò è problematico indipendentemente dal fatto che i telefoni non Samsung non corrono il rischio che un'app dannosa venga installata silenziosamente in background. L'utente medio non se ne accorgerebbe nemmeno se gli venisse presentato per l'installazione un APK dannoso creato con "Fortnite" nel nome e l'icona dell'app Fortnite.
Tuttavia, esiste una chiara distinzione tra lo sfruttamento di questo difetto sugli smartphone Samsung Galaxy e sugli smartphone non Samsung. Il primo è un attacco Man-in-the-Disk che sfrutta anche un'API di sistema nascosta per installare silenziosamente qualsiasi app in in background, con qualsiasi autorizzazione e senza bisogno di indurre l'utente a credere che stia installando un falso Fortnite APK. Quest'ultimo è a attacco Man-in-the-Disk standard che può verificarsi anche su altre app che salvano APK o altri dati importanti in directory di archiviazione esterne, come dimostrato dal recente Punto di controllo inviare. Si dà il caso che, grazie all'API nascosta di Galaxy Apps, questo attacco Man-in-the-Disk sia più pericoloso sui dispositivi Samsung Galaxy.
Riparare il Difetto
Va riconosciuto merito a Epic Games, che ha risposto molto rapidamente alla segnalazione di Google Issue Tracker e ha implementato un aggiornamento alla versione 2.1.0 il più velocemente possibile. La soluzione è stata semplice: basta salvare l'APK di Fortnite scaricato nella directory di archiviazione interna del programma di installazione di Fortnite in /data/data anziché nella directory di archiviazione esterna in /data/media. L'ingegnere di Epic Games ha richiesto che il difetto venisse divulgato dopo 90 giorni, anche se Google ha rifiutato e ha reso pubblica la questione 7 giorni dopo l'implementazione della correzione. Il CEO di Epic Games, Tim Sweeney, lo era non soddisfatto dei rapidi tempi di risposta dal rapporto iniziale sulla sicurezza alla sua divulgazione. Ha offerto la seguente dichiarazione a Android Centrale.
Epic ha davvero apprezzato lo sforzo di Google di eseguire un controllo di sicurezza approfondito di Fortnite immediatamente dopo la nostra rilasciare su Android e condividere i risultati con Epic in modo da poter rilasciare rapidamente un aggiornamento per correggere il difetto scoperto.
Tuttavia è stato irresponsabile da parte di Google divulgare pubblicamente i dettagli tecnici della falla così rapidamente, mentre molte installazioni non erano ancora state aggiornate ed erano ancora vulnerabili.
Un ingegnere della sicurezza di Epic, dietro mia sollecitazione, ha richiesto a Google di ritardare la divulgazione pubblica dei tipici 90 giorni per consentire un'installazione più ampia dell'aggiornamento. Google ha rifiutato. Puoi leggerlo tutto su https://issuetracker.google.com/issues/112630336
Gli sforzi di analisi della sicurezza di Google sono apprezzati e avvantaggiano la piattaforma Android, tuttavia un'azienda potente come Google dovrebbe esercitarsi di più tempi di divulgazione responsabili rispetto a questo e non mettere in pericolo gli utenti nel corso dei suoi sforzi di contro-PR contro la distribuzione di Fortnite da parte di Epic al di fuori di Google Play.
Non posso parlare di quanti dispositivi Samsung Galaxy esistenti abbiano ancora il vecchio programma di installazione Fortnite. Forse Epic Games dovrebbe dire a questi utenti di aggiornare la propria installazione inviando un messaggio in Fortnite Mobile. La nuova elegante funzionalità di messaggistica in-app di Firebase potrebbe fare il trucco. Anche se probabilmente non è comunque un grosso problema perché, se un utente con il vecchio programma di installazione ha già scaricato il legittimo Fortnite, qualsiasi attacco MITD non funzionerà perché l'APK dannoso non può essere installato sopra Fortnite esistente installazione. In ogni caso, la scoperta di questo difetto così presto dopo il rilascio di Fortnite su Android, quando c'erano ancora così tante polemiche su Epic Games' decisione di abbandonare Google Play- aiuta sicuramente la tesi secondo cui la decisione di Epic Games è stata imprudente. Se questa fosse l'intenzione di Google dietro a pubblicizzare questo problema così rapidamente, non lo sapremo mai.