Le problème est résolu. L'exploit a été clos.
Nous allons fermer ce bogue en raison de la connexion dans une version préliminaire d'Android. Si le problème est toujours pertinent et reproductible dans la dernière version publique (Android Q), veuillez capturer un rapport de bogue et consigner le bogue sur https://source.android.com/setup/contribute/report-bugs . Si aucune réponse n'est reçue dans les 14 prochains jours, ce problème sera résolu. Merci de votre compréhension.
Dernière mise à jour:
Il s'agit d'un bug et Google le corrigera dans la prochaine mise à jour.
Nous avons reporté ce problème pour examen dans une prochaine version. Merci pour votre temps pour améliorer Android
Cette réponse s'est transformée en un conglomérat d'idées et a été modifiée pour inclure les informations issues de la discussion dans les commentaires.
L' androidmarket
API serait une API personnalisée écrite par le développeur. Il n'est pas accessible au public.
Pour répondre à vos préoccupations dans les commentaires. Le développeur aurait utilisé les API actuelles disponibles via Android Developer et Google pour créer un projet qui gère tout cela.
En ce qui concerne l'accès Full Account Access
, je ne sais pas exactement comment ces développeurs ont réalisé cela.
Je recommanderais d'utiliser AccountManager , qui fait partie de android.accounts, a accès aux informations d'identification et à une méthode getUserData . Le gestionnaire de compte a accès aux mots de passe et est capable de créer et de supprimer des comptes. Ceci, éventuellement utilisé avec le fournisseur de contenu
Voir Authentification Udinic / SyncAdapter .
Pour répondre à votre commentaire:
Ce blog devrait vous aider à démarrer. Écrivez votre propre authentificateur Android .
Comment fonctionnent ces applications, je ne peux pas vous le dire. Ils peuvent également avoir des implémentations différentes (à moins qu'il ne s'agisse d'un effort de collaboration en coulisse, ils seront très certainement différents).
Une supposition. Utilisez d'abord GoogleSignInAccount avec com.google.android.gms.auth.api.signin .
Il existe une définition de l' étendue , pour déterminer l'étendue des autorisations accordées à l'application.
En utilisant requestScopes () , le
public static final String PROFILE
... / Il permet à votre application Web d'accéder aux installations d'applications Android en direct.
Par exemple :
GoogleSignInOptions gso =
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail().
.requestScopes(new Scope("https://www.googleapis.com/auth/contacts.readonly"))
.build();
Si un accès complet peut être obtenu, une liste de toutes les applications utilisées par le titulaire du compte peut être trouvée et comparée à ce qui se trouve sur l'appareil.
Package Manager récupérera une liste de toutes les applications actuellement installées sur l'appareil.
PackageInfo fournit les détails sur l'application.
INSTALL_REASON_USER filtrera également les applications qui ont été activement installées par l'utilisateur.
Vous pouvez consulter com.google.firebase.appindexing et enregistrer les actions des utilisateurs . Différentes actions peuvent être suivies.
L'historique du compte des utilisateurs se trouve à l' adresse https://myactivity.google.com/myactivity .
Un lien utile est le terrain de jeu OAuth 2.0 .
Ce github repo node-google-play , utilisant node, est à jour et appellera les API Google Play. De même que l'archive qui a été utilisée comme une API "non officielle", android-market-api , pour interroger le marché.
Appli 1
L' application prétend utiliser les autorisations suivantes:
La version 2.1.8 peut accéder à:
$ Achats intégrés
Autre
- recevoir des données d'Internet
- afficher les connexions réseau
- accès réseau complet
- utiliser des comptes sur l'appareil
- empêcher l'appareil de dormir
- lire la configuration du service Google
Il convient de noter que l'application ne définit aucune autorisation lorsqu'il y a une installation de base. Je n'ai pu utiliser aucune des fonctionnalités, car je n'ai aucune application payante. Donc, pour la recherche initiale, aucune autorisation n'était nécessaire, ce qui indiquerait que l'application n'avait pas accès à mon compte.
J'ai vérifié les autorisations - il n'y en avait pas. Donc, la seule chose requise était d'accepter la fenêtre contextuelle, comme indiqué dans votre question.
App 2
L'autre application à laquelle vous faites référence qui fait la même chose est plus directe sur ce qui est accédé.
Mes applications payantes
AVIS DE SÉCURITÉ / CONFIDENTIALITÉ
La première fois que vous exécutez cette application, elle vous demandera l'autorisation complète de votre compte Google. C'est malheureusement le seul moyen d'accéder aux informations requises. Aucune information personnelle n'est stockée, aucune information sur vos applications n'est partagée avec le développeur de cette application, ni partagée avec des tiers. Tout est conservé sur votre téléphone uniquement.
Je suis entré dans les détails de ces applications dans cet article de blog , qui était pour un projet universitaire (pas de gain monétaire). J'ai tendance à penser qu'il s'agit d'un exploit dans l'API et non d'un statut par conception de Google, car il n'y a pas d'appels d'API pour récupérer des achats d'applications autres que la propre application du développeur. Je suppose que c'est un exploit zero day, auquel cas il n'y a pas de moyen légitime d'accéder à ces informations.