Il problema è stato risolto. L'exploit è stato chiuso.
Chiuderemo questo bug a causa dell'accesso a una versione di anteprima di Android. Se il problema è ancora pertinente e riproducibile nell'ultima versione pubblica (Android Q), acquisire una segnalazione di bug e registrare il bug in https://source.android.com/setup/contribute/report-bugs . Se non si riceve una risposta entro i prossimi 14 giorni, il problema verrà chiuso. Grazie per la vostra comprensione.
Ultimo aggiornamento:
Questo è un bug e Google lo risolverà nel prossimo aggiornamento.
Abbiamo rinviato questo problema per la considerazione in una versione futura. Grazie per il tuo tempo per migliorare Android
Questa risposta si è trasformata in un conglomerato di idee ed è stata modificata per includere informazioni dalla discussione nei commenti.
L' androidmarket
API, sarebbe un'API personalizzata scritta dallo sviluppatore. Non è disponibile al pubblico.
Per affrontare le tue preoccupazioni nei commenti. Lo sviluppatore avrebbe utilizzato le attuali API disponibili tramite Android Developer e Google per creare un progetto che gestisca tutti questi.
Per quanto riguarda l'accesso Full Account Access
, non sono sicuro di come questi sviluppatori abbiano raggiunto questo obiettivo.
Consiglierei di utilizzare AccountManager , che fa parte di android.accounts, ha accesso alle credenziali e un metodo getUserData . Il gestore dell'account ha accesso alle password ed è in grado di creare ed eliminare account. Questo, possibilmente usato con Content Provider
Vedere Autenticazione Udinic / SyncAdapter .
Per rispondere al tuo commento:
Questo blog dovrebbe aiutarti a iniziare. Scrivi il tuo autenticatore Android .
Come funzionano effettivamente queste app, non posso dirtelo. Possono anche avere implementazioni diverse (a meno che non siano uno sforzo collaborativo dietro le quinte, sicuramente saranno diverse).
Una supposizione. Innanzitutto utilizza GoogleSignInAccount con com.google.android.gms.auth.api.signin .
Esiste una definizione per l' ambito , per determinare l'estensione delle autorizzazioni concesse all'app.
Utilizzando requestScopes () , il
public static final String PROFILE
... / Consente alla tua app web di accedere alle installazioni di app Android over-the-air.
Ad esempio :
GoogleSignInOptions gso =
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail().
.requestScopes(new Scope("https://www.googleapis.com/auth/contacts.readonly"))
.build();
Se è possibile ottenere l'accesso completo, è possibile trovare un elenco di tutte le app utilizzate dal titolare dell'account e confrontarle con quelle presenti sul dispositivo.
Package Manager recupererà un elenco di tutte le app attualmente installate sul dispositivo.
PackageInfo fornisce i dettagli sull'app.
INSTALL_REASON_USER filtrerà anche le app che sono state installate attivamente dall'utente.
Potresti voler esaminare com.google.firebase.appindexing e Log User Actions . È possibile monitorare diverse azioni .
La cronologia dell'account utente si trova su https://myactivity.google.com/myactivity .
Un collegamento utile è OAuth 2.0 Playground .
Questo repository GitHub node-google-play , utilizzando node, è aggiornato e chiamerà le API di Google Play. Così come l'archivio che è stato utilizzato come API "non ufficiale", android-market-api , per interrogare il mercato.
App 1
L' app afferma di utilizzare le seguenti autorizzazioni:
La versione 2.1.8 può accedere a:
$ Acquisti in-app
Altro
- ricevere dati da Internet
- visualizzare le connessioni di rete
- accesso completo alla rete
- utilizzare gli account sul dispositivo
- impedire al dispositivo di dormire
- leggi la configurazione del servizio Google
Degno di nota, l'app non imposta alcuna autorizzazione quando c'era un'installazione di base. Non sono stato in grado di utilizzare nessuna delle funzionalità, poiché non ho app a pagamento. Quindi, per la ricerca iniziale, non erano necessarie autorizzazioni, il che indicherebbe che l'app non aveva accesso al mio account.
Ho controllato le autorizzazioni: non ce n'erano impostate. Quindi l'unica cosa richiesta era accettare il popup, come mostrato nella tua domanda.
App 2
L'altra app a cui fai riferimento che fa la stessa cosa è più anticipata su ciò a cui si accede.
Le mie app a pagamento
AVVISO DI SICUREZZA / PRIVACY
La prima volta che esegui questa app, ti chiederà l'autorizzazione completa al tuo account Google. Questo è purtroppo l'unico modo per accedere alle informazioni richieste. Nessuna informazione personale viene memorizzata, nessuna informazione sulle tue app viene condivisa con lo sviluppatore di questa app, né condivisa con terze parti. Tutto è conservato solo sul tuo telefono.
Sono entrato nei dettagli su queste app in questo post del blog , che era per un progetto chiave di volta dell'università (nessun guadagno monetario). Sono propenso a pensare che questo sia un exploit nell'API e non lo stato in base alla progettazione di Google, poiché non ci sono chiamate API per recuperare gli acquisti di app diverse dall'app dello sviluppatore. Ipotizzo che sia un exploit zero day, nel qual caso non esiste un modo legittimo per accedere a queste informazioni.