Problem został rozwiązany. Exploit został zamknięty.
Będziemy zamykać ten błąd, ponieważ jesteśmy zalogowani w wersji zapoznawczej Androida. Jeśli problem jest nadal istotny i można go odtworzyć w najnowszej publicznej wersji (Android Q), zapisz raport o błędzie i zaloguj się na stronie https://source.android.com/setup/contribute/report-bugs . Jeśli nie otrzymamy odpowiedzi w ciągu najbliższych 14 dni, sprawa zostanie zamknięta. Dziękuję za zrozumienie.
Najnowsza aktualizacja:
To jest błąd i Google zajmie się nim w następnej aktualizacji.
Odłożyliśmy ten problem do rozważenia w przyszłej wersji. Dziękujemy za poświęcony czas na ulepszanie Androida
Ta odpowiedź przekształciła się w konglomerat pomysłów i została zredagowana tak, aby zawierała informacje z dyskusji w komentarzach.
Interfejs androidmarket
API byłby dostosowanym interfejsem API napisanym przez programistę. Nie jest dostępny publicznie.
Aby odpowiedzieć na Twoje obawy w komentarzach. Deweloper wykorzystałby obecny interfejs API dostępny w Android Developer i Google, aby stworzyć projekt, który zarządza wszystkimi tymi elementami.
Jeśli chodzi o dostęp Full Account Access
, nie jestem pewien, jak dokładnie ci programiści to osiągnęli.
Polecam użycie AccountManagera , który jest częścią android.accounts, ma dostęp do poświadczeń i metody getUserData . Menedżer konta ma dostęp do haseł i jest w stanie tworzyć i usuwać konta. To prawdopodobnie używane z dostawcą treści
Zobacz Uwierzytelnianie Udinic / SyncAdapter .
Aby odpowiedzieć na Twój komentarz:
Ten blog powinien pomóc Ci zacząć. Napisz swój własny Android Authenticator .
Jak te aplikacje faktycznie działają, nie mogę ci powiedzieć. Mogą również mieć różne implementacje (chyba że są wspólnym wysiłkiem za kulisami, z pewnością będą inne).
Jedno przypuszczenie. Najpierw użyj GoogleSignInAccount z com.google.android.gms.auth.api.signin .
Istnieje definicja zakresu , aby określić zakres uprawnień, które aplikacja jest przyznawana.
Korzystanie requestScopes () ,
public static final String PROFILE
... / Umożliwia aplikacji internetowej dostęp do bezprzewodowych instalacji aplikacji na Androida.
Na przykład :
GoogleSignInOptions gso =
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail().
.requestScopes(new Scope("https://www.googleapis.com/auth/contacts.readonly"))
.build();
Jeśli można uzyskać pełny dostęp, można znaleźć listę wszystkich aplikacji używanych przez właściciela konta i porównać ją z tym, co jest na urządzeniu.
Menedżer pakietów pobierze listę wszystkich aplikacji aktualnie zainstalowanych na urządzeniu.
PackageInfo zawiera szczegółowe informacje o aplikacji.
INSTALL_REASON_USER odfiltruje również aplikacje, które zostały aktywnie zainstalowane przez użytkownika.
Warto przyjrzeć się com.google.firebase.appindexing i rejestrować działania użytkownika . Można śledzić różne działania .
Historia kont użytkowników znajduje się pod adresem https://myactivity.google.com/myactivity .
Pomocnym łączem jest OAuth 2.0 Playground .
Ten węzeł repozytorium github -google-play , używający węzła, jest aktualny i będzie wywoływał interfejsy API Google Play. Podobnie jak archiwum, które było używane jako „nieoficjalny” interfejs API, android-market-api , do wysyłania zapytań o rynek.
Aplikacja 1
Aplikacja twierdzi wykorzystać następujące uprawnienia:
Wersja 2.1.8 ma dostęp do:
$ zakupów w aplikacji
Inny
- odbierać dane z Internetu
- przeglądać połączenia sieciowe
- pełny dostęp do sieci
- korzystać z kont na urządzeniu
- zapobiec zasypianiu urządzenia
- przeczytaj konfigurację usług Google
Warto zauważyć, że aplikacja nie ustawia żadnych uprawnień, gdy była podstawowa instalacja. Nie mogłem skorzystać z żadnej funkcji, ponieważ nie mam płatnych aplikacji. Więc dla początkowego wyszukiwania - nie były potrzebne żadne uprawnienia, co wskazywałoby, że aplikacja nie miała dostępu do mojego konta.
Sprawdziłem uprawnienia - nie były ustawione. Więc jedyną wymaganą rzeczą było zaakceptowanie wyskakującego okienka wyświetlanego w pytaniu.
Aplikacja 2
Druga aplikacja, do której się odnosisz, robi to samo, jest bardziej otwarta na temat tego, do czego uzyskujesz dostęp.
Moje płatne aplikacje
INFORMACJA O BEZPIECZEŃSTWIE / PRYWATNOŚCI
Przy pierwszym uruchomieniu tej aplikacji poprosi ona o pełne pozwolenie na dostęp do Twojego konta Google. Jest to niestety jedyny sposób uzyskania dostępu do wymaganych informacji. Żadne dane osobowe nie są przechowywane, żadne informacje o twoich aplikacjach nie są udostępniane twórcom tej aplikacji ani udostępniane osobom trzecim. Wszystko jest przechowywane tylko w Twoim telefonie.
Omówiłem szczegółowo te aplikacje w tym poście na blogu , który dotyczył projektu zwieńczenia uniwersytetu (bez zysku finansowego). Jestem skłonny sądzić, że jest to exploit w API, a nie stan z założenia przez Google, ponieważ nie ma wywołań API w celu pobrania zakupów aplikacji innych niż własna aplikacja programisty. Stawiam hipotezę, że jest to exploit typu zero day, w którym to przypadku nie ma legalnego sposobu uzyskania dostępu do tych informacji.