- Seit Android 11 schränkt Google Abfragen zwischen Apps ein, doch viele Apps konnten allein über Deklarationen in der
AndroidManifest.xml die Liste installierter Apps einsehen.
- Die Package-Visibility-Richtlinie verlangt, dass Apps nur solche Apps sehen dürfen, die für ihre Kernfunktion nötig sind. Einzelne Paketdeklarationen und der
ACTION_MAIN-Filter wurden jedoch wie ein Umgehungsweg genutzt.
- Swiggy deklarierte 154 Apps, Zepto 165, KreditBee 860 und Moneyview 944 Apps und konnte so prüfen, ob bestimmte Apps auf dem Gerät eines Nutzers installiert waren.
- Von 47 stichprobenartig betrachteten indischen Apps nutzten 31 den
ACTION_MAIN Intent-Filter. Damit lassen sich auch ohne QUERY_ALL_PACKAGES die meisten installierten Apps mit Benutzeroberfläche sehen.
- Daten zu installierten Apps und die Berechtigung
READ_SMS können zu Profiling, Preisdifferenzierung sowie Kredit- und Eignungsentscheidungen führen, während Nutzer kaum erkennen können, wann eine App was liest.
Lücken in Androids App-Visibility-Richtlinie
- Früher konnten Apps unter Android ohne gesonderte Berechtigung sehen, welche anderen Apps auf dem Smartphone eines Nutzers installiert waren.
- Google führte ab Android 11 die Package-Visibility-Richtlinie ein, um diesen Zugriff einzuschränken.
- Apps sollten andere installierte Apps nur sehen können, wenn dies für ihre Kernfunktion unerlässlich ist.
- Entwickler müssen die Apps, die sie prüfen wollen, in der
AndroidManifest.xml angeben, der obligatorischen Konfigurationsdatei jeder Android-App.
- Für konkrete Anwendungsfälle wie Dateimanager, Browser und Antiviren-Apps ist die Berechtigung
QUERY_ALL_PACKAGES ausnahmsweise erlaubt.
- Fälle wie das Anzeigen von UPI-Zahlungs-Apps oder das Erkennen von App-Klon- und Multi-Account-Apps können legitime Gründe für App-Abfragen sein.
- Viele der untersuchten Manifeste enthielten ebenfalls App-Abfragen für Zahlungs-, Sicherheits- und Betrugserkennungszwecke.
Umfangreiche App-Abfragen bei Swiggy und Zepto
- Swiggy listete in seinem Manifest 154 Paketnamen auf und konnte dadurch prüfen, ob diese Apps auf einem Smartphone vorhanden waren.
- Die Liste umfasste Apps wie Xbox, PlayStation, Naukri und Upstox.
- Die Kategorien waren sehr breit gefächert, was stark auf eine mögliche Datenerhebung zum Profiling von Nutzern und zur Erstellung von Verhaltensprofilen hindeutet.
- Google betrachtet die Liste installierter Apps als personenbezogene und sensible Nutzerdaten.
- Zepto registrierte in seinem Manifest 165 Apps, die auf dem Gerät geprüft werden sollten.
- Darunter waren beliebte Apps aus mehreren Kategorien, etwa Netflix, Bumble und Binance.
- Es gab Berichte, wonach Zepto iOS- und Android-Nutzern unterschiedliche Preise anzeigte, und einige Kunden berichteten von Preisunterschieden zwischen Android-Smartphones.
- Nutzer können im Play Store beim Installieren einer App nicht sehen, welche App-Abfrageliste im Manifest dieser App enthalten ist.
Abfrageumfang von Lieferfahrer-Apps und Privatkredit-Apps
- Die Apps für Lieferfahrer von Swiggy und Zepto hatten andere App-Abfragelisten als die Verbraucher-Apps.
- Beide Apps enthielten Einträge, mit denen sich prüfen ließ, für welche anderen Unternehmen ein Fahrer arbeitet.
- Swiggy prüfte sogar Privatkredit-Apps, persönliche Finanz-Apps sowie Spiele-Apps wie Ludo King und Carrom Pool.
- Die räuberischen Praktiken indischer Privatkredit-Apps sind dokumentiert, und vor einigen Jahren wurden bei einem großen Durchgreifen Tausende solcher Apps aus dem Play Store entfernt.
- KreditBee gehört zu den führenden Privatkredit-Apps im Play Store, hat mehr als 50 Millionen Downloads und prüfte im Manifest 860 Apps.
- Darunter waren auch Einträge wie Tamil Calendar, Odia Calendar, Qibla Direction Finder, Tempel-Apps und Astrologie-Apps.
- Als Beispiele tauchen außerdem die Heirats-App
Jodii for Diploma, +2,10 below für Menschen ohne Highschool-Abschluss und die App für den Handel mit Kühen und Büffeln 소와 버팔로 사고팔기 Animall auf; beide wurden mehr als 10 Millionen Mal heruntergeladen.
- Moneyview ist ebenfalls eine Privatkredit-App mit mehr als 50 Millionen Downloads und enthielt 944 Apps in seinem Manifest.
- Die Play-Store-Richtlinie schränkt die Nutzung von
QUERY_ALL_PACKAGES durch Privatkredit-Apps ausdrücklich ein, doch KreditBee und Moneyview umgehen diese Beschränkung, indem sie die gewünschten Apps einzeln im Manifest auflisten.
App-Listen ohne QUERY_ALL_PACKAGES einsehen
- Unter den untersuchten Apps war Cred der einzige Fall, der die Hochrisiko- und sensible Berechtigung
QUERY_ALL_PACKAGES im Manifest enthielt.
- Der Play Store erlaubt eine „vorübergehende Ausnahme“ für diese Berechtigung bei Apps, deren überprüfbarer Kernzweck darin besteht, Finanztransaktionen im Zusammenhang mit regulierten Finanzprodukten zu ermöglichen.
- In den Manifesten von PhonePe oder PayTM aus derselben Branche fehlte diese Berechtigung.
- Cred bietet auch Privatkredite an und scheint nach der Privatkredit-Richtlinie des Play Store nicht unter diese Ausnahme zu fallen.
- Einige App-Manifeste enthielten einen
ACTION_MAIN Intent-Filter wie den folgenden:
<queries>
[...]
<intent>
<action android:name="android.intent.action.MAIN" />
</intent>
[...]
</queries>
- Der
ACTION_MAIN-Filter bietet Sichtbarkeit für die meisten installierten Apps mit Benutzeroberfläche und ermöglichte es, auch ohne die Berechtigung QUERY_ALL_PACKAGES die App-Liste eines Smartphones zu sehen.
- Beim Abfragen installierter Apps mit einer einfachen Android-App, die dieselbe Einstellung enthielt, wurde die vollständige App-Liste des Smartphones zurückgegeben.
- Von 47 stichprobenartig analysierten indischen Apps nutzten 31 diesen Filter, also etwa zwei von drei.
- Apps, die ihn nutzten: Astrotalk, Axis Mobile, Bajaj Finserv, BookMyShow, Cars24, Cure.fit, Fibe, Groww, Housing, Instamart, Ixigo, JioHotstar, KreditBee, KukuTV, LazyPay, Ludo King, Meesho, MoneyTap, Moneyview, Navi, NoBroker, Nykaa, Ola, PhonePe, PhysicsWallah, Slice, Spinny, Swiggy, Swiggy Delivery, Tata Neu, Zomato
- Apps, die ihn nicht nutzten: Airtel Thanks, Blinkit, Byju’s, MyGate, Dream11, Flipkart, HDFC Mobile, Healthify, INDmoney, MyJio, Paytm, PaisaBazaar, ShareChat, Unacademy, Vedantu, Zepto
- Swiggy hatte ebenfalls einen
ACTION_MAIN-Filter, listete seine App-Abfragen aber zusätzlich explizit auf, wodurch ein Teil seiner Datenerhebungspraxis sichtbar wurde.
- Die gelesenen Manifest-Dateien sind unter android-manifest-files veröffentlicht; die meisten wurden am 18. oder 19. März heruntergeladen.
- Diese Einstellung war nicht auf Apps indischer Unternehmen beschränkt.
- Facebook, Instagram, Snapchat, Subway Surfers und Truecaller hatten dieselbe Einstellung.
- Amazon, Spotify, X, Discord und WhatsApp hatten sie nicht.
Sensibilität von Daten zu installierten Apps und SMS-Berechtigungen
- Daten zu installierten Apps sind sensible personenbezogene Daten.
- 2022 berichtete Vice kurz nach der Nachricht, Roe v. Wade könne aufgehoben werden, dass ein Datenmarktplatz namens Narrative Daten von Nutzern verkaufte, die Perioden-Tracking-Apps heruntergeladen hatten.
- Neben Abfragen installierter Apps können die Manifeste von Apps auch umfangreiche Berechtigungen enthalten, die über den nötigen Umfang hinauszugehen scheinen.
- Zepto fordert die Berechtigung
READ_SMS an.
- Nutzer können sie verweigern, doch für die Anmeldung bei Zepto Postpaid ist sie erforderlich.
- Wird die Berechtigung erteilt, umfasst die Prüfung auch zahlreiche TRAI-Absender-IDs von Banken sowie SMS von Blinkit, Swiggy, Bigbasket und Flipkart.
- Offenbar werden Bank-SMS gelesen, um die Eignung für den Postpaid-Tarif zu prüfen, doch die App kann sie auch lesen, wenn Nutzer diese Funktion nicht auswählen.
- Nachdem Nutzer einer App eine Berechtigung wie
READ_SMS erteilt haben, können sie nicht sehen, wann und worauf die App zugreift.
- Android-Installationsinformationen können von App-Entwicklern und Datenbrokern für Profiling, den Abgleich mit Daten aus Werbenetzwerken oder Preisgestaltung genutzt werden.
1 Kommentare
Meinungen auf Hacker News
Die ACTION_MAIN-Lücke wurde früher schon einmal behandelt: https://commonsware.com/blog/2020/04/05/android-r-package-vi...
Google versucht nicht, das zu patchen. Ich frage mich, was passieren würde, wenn man das als Rechte-Bypass beim Android VDP einreicht.
Es gibt auch eine SO-Frage des Autors zu diesem Bypass: https://stackoverflow.com/q/79527331
Ab diesem Zeitpunkt würde schon der Ablauf, bei dem Android fragt, ob ein gerade erhaltenes beliebiges Spiel als Standard-Launcher festgelegt werden soll, für eine verdächtige App zu einer ziemlich riskanten Interaktion. Nutzer könnten abspringen und sie melden, oder unerfahrene Nutzer könnten sie als Standard-Launcher auswählen, ihren Homescreen beschädigen und sie im Play Store melden. Wenn man tatsächlich als Launcher-artige App veröffentlichen will, kämen wohl auch automatisierte Tests und zusätzliche Anforderungen hinzu, was für Entwickler eine Belastung wäre.
Es fällt schwer zu glauben, dass Google-Ingenieure diese weithin genutzte Lücke nicht kennen, aber mich würde interessieren, ob es eine Quelle dafür gibt, dass Google eine Korrektur abgelehnt hat.
Ich verstehe immer noch überhaupt nicht, warum native „Apps“ nötig sind. Ich habe bisher keine „App“ gesehen, für die eine Website oder Web-App nicht ausgereicht hätte, und die meisten wären als Web-App wahrscheinlich besser gewesen.
Der einzige Vorteil einer „App“ scheint zu sein, dass Entwickler auf persönliche Daten zugreifen können, die sie eigentlich nicht brauchen.
Es gibt auch den Vorteil, im „App Store“ gelistet werden zu können, aber der App Store ist ein unnötiges Konzept, das Apple/Google geschaffen haben, um einen großen Anteil der Verkäufe einzubehalten.
Webbrowser bieten ordentliches Sandboxing, erheben keine „Einreichungs“-Gebühren und sind für jeden auf jedem Smartphone zugänglich.
In der Praxis sind die meisten mobilen Web-Apps miserabel. Die User Experience kommt nicht annähernd an native Apps heran. Ich mag nicht, dass Text ausgewählt wird, ich mag nicht, dass auf jeder Seite Pull-to-Refresh aktiv ist, und ich mag nicht, dass ein Wisch nach links zur vorherigen Seite führt.
Man kann sicher Wege finden, diese Probleme zu umgehen, aber die neue Silk-Bibliothek (https://silkhq.co/) scheint der erste Fall zu sein, der einer nativen Erfahrung sehr nahekommt. Allein die Tatsache, dass es eine kostenpflichtige Bibliothek ist, zeigt aber, wie wenig trivial dieses Problem ist.
Es gibt vieles, was native Apps können, Browser aber nur schlecht oder gar nicht: etwa aufwendige Video-/Audiobearbeitung, Zugriff auf viel RAM, Nutzung von GPU-Compute oder hardwarenahe Aufgaben – dafür reicht der Browser allein noch nicht aus.
Das heißt nicht, dass die Umsetzung von Apple und Google tatsächlich gut ist, aber ich sehe keine Zukunft, in der wir nur noch Web-Apps nutzen. Aus demselben Grund werde ich meinen echten Computer auf absehbare Zeit nicht durch ein Chromebook ersetzen.
Trotzdem sind Apps weiterhin gut, wenn sie auf dem Gerät offline funktionieren und meine Daten nicht auf Dienste verteilen, die ich nicht kontrolliere. Ich will auch nicht überall von einer Internetverbindung abhängig sein.
Ich mag Offline-Apps wie OsmAnd/Organic Maps, die mir im Wald oder in den Bergen den Weg zeigen, und ich mag Apps, die Daten teilen, indem sie sich direkt mit meinem lokalen Gerät verbinden statt mit Servern Dritter.
Wenn möglich, sollten alle Apps offline-first entwickelt werden und nur dann Internet verlangen, wenn es nötig ist. Eine App, die ohne Internet nicht funktionieren kann, reicht als Web-App aus und muss nicht auf meinem Gerät sein.
Ich frage mich, wann du zuletzt im mobilen Web einen Flug gebucht hast. Ich weiß auch nicht, wie man mit dem Bildschirmplatz umgehen soll, den der Browser einnimmt. Apps können Authentifizierung cachen und per FaceID erledigen; dass man sich jedes Mal einloggen muss, ist ebenfalls ein Problem.
Deshalb mag ich Hacker News
Gestern habe ich diesen Artikel entdeckt und im Android-Board von Reddit gepostet: https://old.reddit.com/r/Android/comments/1jmwg4w/everyone_k...
0 Upvotes, und die Kommentare waren voll mit Reaktionen, bei denen man nicht wusste, ob es depressive Leute oder Bots waren
Hier ist es im Bereich Platz 2, und die meisten Kommentare sind interessant
Es gibt viele tote Subreddits, aber r/android gehört fast zu den schlimmsten davon
Außerdem wirken themenbezogene Subreddits im Allgemeinen so, als würden sie von Leuten moderiert, die ein Interesse an dem jeweiligen Thema haben, was der Community schadet. Ich hatte einen Beitrag gepostet, der ausführlich erklärte, unter welcher proprietären Lizenz Metas Llama steht und was diese Lizenz genau bedeutet, aber die Moderatoren von r/LocalLlama haben ihn ohne Begründung manuell gelöscht und auch nicht geantwortet, als ich fragte, warum er gelöscht wurde, um die Regeln besser zu verstehen
Seit beim letzten „Reddit purge“ viele Community-Moderatoren durch Reddit-Mitarbeiter ersetzt wurden, habe ich den Eindruck, dass große Teile der Plattform gewissermaßen an Unternehmen verkauft wurden, damit diese ihren eigenen Bereich direkt moderieren
Wenn man unter dem Titel auf den „past“-Link klickt, gibt es einen Thread von vor zwei Tagen, der komplett tot ist
Hacker News versteht das Konzept konstruktiver Kritik
Der Kern ist die Stelle: „Über allgemeine Kategorien hinaus prüfen sie sogar Dinge wie Tamil Calendar, Odia Calendar, Qibla Direction Finder, Mandir-Apps und Astrologie-Apps. Sie wissen, was sie tun“
Diese Kredit-App profiliert Menschen anhand von ethnischer/regionaler Identität (Tamil, Odia) und Religion (Qibla Direction Finder für Muslime, Mandir-Apps für Hindus)
Die Android-App von HSBC UK schaut sich die installierten Apps an und verweigert den Start, wenn Apps mit bestimmten Berechtigungen vorhanden sind. Zum Beispiel darf es keinen alternativen Launcher geben, und inzwischen verweigert sie den Start sogar dann, wenn auch nur eine App außerhalb des Google-App-Stores installiert wurde
Ich hatte mich hier schon früher darüber beschwert, habe am Ende aber ein Hardware-Sicherheitsgerät angefordert und nutze stattdessen die Website
Ich frage mich, ob sie wenigstens sagen, dass diese Daten nicht an das Unternehmen übertragen werden
Die Antwort auf die Frage „Warum ist es für Swiggys Kernfunktion notwendig zu wissen, ob auf meinem Telefon die Xbox- oder Playstation-App installiert ist? Wie hilft es bei der Lieferung von Lebensmitteln zu mir nach Hause, zu wissen, ob ich Naukri oder Upstox installiert habe?“ lautet: zum Fingerprinting
Bei Banking-Apps ist es genauso: Wenn man Betrüger ist, ist es äußerst nützlich, vorab zu wissen, welche Bank das Ziel nutzt
Besonders wenn sich das mit einer Telefonnummer verknüpfen lässt, dürfte es ziemlich viele Gruppen geben, die solche Informationen haben wollen
Bei der Stelle „Für sehr spezifische Anwendungsfälle wie Dateimanager, Browser und Antiviren-Apps gewährt Google Ausnahmen für die Berechtigung QUERY_ALL_PACKAGES, sodass sie alle installierten Apps sehen können“ verstehe ich nicht, warum ein Browser installierte Apps auflisten muss
Warum?!
Man kann also Googles Produktmanagement dafür verantwortlich machen
Obsidian verlangt zum Beispiel Zugriff auf das gesamte Dateisystem, obwohl es eigentlich ausreichen würde, auf die Dateien zuzugreifen, die der Nutzer zur Ansicht freigibt
Das ist eine sehr nützliche Funktion, und ich fände es schade, wenn sie verschwände
„Alle kennen jede App auf deinem Smartphone“ bezieht sich auf Android-Smartphones. Auf dem iPhone gibt es diese Datenschutzlücke nicht.
https://blog.verichains.io/p/technical-analysis-improper-use...
Nutzt man unter Android den heute üblichen Arbeitsprofil-Ansatz, sind nur die Apps innerhalb des Arbeitsprofils sichtbar.
Einer der größten Anreize, eine App zu bauen, besteht darin, alle möglichen Daten von Nutzern abzugreifen. Man muss sich nur ansehen, wie viele Apps Zugriff auf Kontakte verlangen und wie viele davon für ihre eigentliche Funktion tatsächlich Kontakte brauchen. Deshalb überrascht es mich immer noch ein wenig, dass viele Leute von solchen Entdeckungen überrascht sind.
Früher konnte man versuchen, über ein eigenes URI-Schema mit einer App zu kommunizieren; wenn das gelang, wusste man, dass die App installiert war. Twitter nutzte das für Fingerprinting.
Heute muss eine App spezielle Intents annehmen und die Liste der Apps angeben, die sie dafür verwenden will.
Kürzlich wurden deren LLM-Funktionen stark aktualisiert, daher habe ich die App installiert, um sie mir anzusehen. Solange die App installiert war, erschien jedes Mal, wenn ich die mobile Website ansah, ein großes Banner, das mich zur App schicken wollte, und es ließ sich weder mit einem Adblocker noch mit einem Störfaktor-Blocker entfernen. Nachdem ich die App wieder gelöscht hatte, verschwand es.
Warum ist das so? Ich frage mich, woher die mobile Website weiß, ob die App installiert ist. Wenn die App nicht installiert ist, kann ich alle Aufforderungen zur App-Nutzung mit Content-/Störfaktor-Blockern unterbinden; ich verstehe nicht, warum das nicht geht, sobald sie installiert ist.
Es erfordert Root, aber mit einem LSPosed[1]-Modul wie XPrivacyLua[2] kann man das blockieren oder vortäuschen. Ich habe auch von dem proprietären AppOps[3] gehört, es aber nicht ausprobiert.
[1]: https://lsposed.org
[2]: https://github.com/M66B/XPrivacyLua / https://github.com/0bbedCode/XPL-EX
[3]: https://appops.rikka.app
Interessanterweise wird XPrivacyLua nicht mehr unterstützt, und die Pro-Begleit-App soll von Google aus dem Play Store entfernt werden, weil sie die Berechtigung QUERY_ALL_PACKAGES verwendet.
[0]: https://github.com/M66B/NetGuard
[1]: https://xdaforums.com/t/closed-app-xposed-6-0-xprivacylua-an...
Ich frage mich, ob Windows-Apps, insbesondere solche, die nicht aus dem MS Store installiert wurden, die Titel aller geöffneten Fenster aufzählen können. Wie schwierig wäre es für eine App, allein anhand der Titel den gesamten Web-Traffic zu überwachen?
Ernst gemeinte Frage. ChatGPT stimmt einfach allem zu und ist dabei nicht sehr hilfreich; ich bräuchte jemanden, der erklären kann, warum das in der Praxis nicht realistisch ist.
Für genau diesen Zweck gibt es die Funktionen EnumWindows() und EnumChildWindows().
Als Beispiele für diese Funktion kann man sich das Utility „Windows Modifier v2.00“ und Microsofts Spy++ (SPYXX.EXE) ansehen. Als ich es früher zum ersten Mal heruntergeladen habe, gab es viele Seiten dazu; dass man heute selbst bei Suche nach dem exakten Namen kaum noch etwas findet, fühlt sich wie ein Zeichen dafür an, wie gut das Internet vergessen kann.
Die Lösung für nicht vertrauenswürdige Apps ist, sie gar nicht zu verwenden oder sie in einer VM auszuführen.
Zumindest unter Windows und den meisten traditionellen *nix-Systemen, insbesondere X11, trifft das zu.
In dieser Hinsicht hat Android eine Sache richtig gemacht: Standardmäßig läuft jede Anwendung als ein anderer Benutzer. Das heißt, sie haben unterschiedliche Home-Ordner und können andere Apps nicht sehen.
Trotzdem verfolgen Tools wie ManicTime oder ActivityWatch den Browser-Verlauf über Fenstertitel, wenn kein Browser-Plugin installiert ist.
https://www.manictime.com/
https://activitywatch.net/
Insbesondere gilt: „UAC ist [immer noch] keine Sicherheitsbarriere.“ Wenn man bestätigt oder ein Passwort eingibt, um einen Prozess zu erhöhen, erhöht man faktisch den gesamten Desktop und alles, was darauf läuft, gleich mit.