Kann eine Android-App ihre angegebenen Berechtigungen umgehen?

Ich habe eine APK von einer Drittanbieterquelle heruntergeladen (nicht von Google Play). Meine Frage ist, ob diese Android-App, obwohl angegeben, dass sie nur auf meinen USB-Speicher zugreifen kann, auch andere Dinge tun kann (z. B. IMEI lesen), ohne dies explizit anzugeben? Im Wesentlichen frage ich mich, ob das Android-System dies tatsächlich verhindert oder ob es nur etwas ist, was der Entwickler in seinem Manifest angibt.

Ist Ihr Telefon/Tablet gerootet?
@MeerBorg nein ist es nicht

Antworten (2)

Wie Meer Borg in seiner Antwort richtig feststellt : Wenn eine App installiert wird, liest der Paketmanager ihre Manifestund notiert die angeforderten Berechtigungen in Dateien, die das Android-System steuert ( /data/system/packages.xml, /system/etc/permissions/*.xml(eine Datei pro App)). Zusätzlich gibt es für jede Berechtigung eine bestimmte Benutzergruppe , die der App 1 zugeordnet wird . Jedes Mal, wenn die App versucht, auf eine Funktion zuzugreifen, die eine Berechtigung erfordert, wird dies überprüft: Wenn die Berechtigung in der erklärt wurde Manifest, wird der Zugriff gewährt – andernfalls wird er verweigert. Beachten Sie jedoch, dass dies eine vereinfachte Beschreibung ist

Während dies die allgemeine Regel ist, gibt es für einige Dinge Möglichkeiten, die Berechtigungen zu umgehen. Wenn eine App zB etwas ins Internet schicken möchte, könnte sie dies auch tun, indem sie einen "Intent" aufruft und den Browser auffordert, eine bestimmte Seite (wie zB ) zu öffnen http://bad.server/collector.php?info1=some_info&info2=more_info. Dies würde jedoch vom Benutzer nicht unbemerkt bleiben, da sich der Browser im Vordergrund öffnen und diese Aktion anzeigen würde. Wenn also eine App von dieser Funktion Gebrauch machen würde, wäre der Aufschrei (normalerweise) zu hören.

Wenn ein Entwickler wirklich „schlechte Dinge“ tun will, könnte er auch einen anderen Weg gehen: eine App mit allen erforderlichen Berechtigungen haben und eine zweite mit fast keinen. Wenn der Benutzer beide Apps installiert hat, könnte die zweite die erste App (mit großen Berechtigungen) aufrufen, um „Dinge“ zu verarbeiten, die sie selbst (aufgrund fehlender Berechtigungen) nicht ausführen kann – auf die gleiche Weise wie oben für den Zugriff auf das Internet beschrieben. Beachten Sie, dass dieses Prinzip auch für Addons und "Inter-App-Kommunikation" im positiven Sinne verwendet wird

TL;DR:

Eine App ist auf die Berechtigungen beschränkt, die sie anfordert, und kann nicht direkt auf andere "Dinge" zugreifen. Der "indirekte" Zugriff würde nicht unbemerkt bleiben.

PS:

Dies ist nur eine abstrakte und vereinfachte Darstellung. Ich bin nicht in der Android-Entwicklung tätig, daher haben einige Entwickler möglicherweise ein besseres Verständnis und korrigieren mich oder ergänzen das oben Gesagte.


1 Beispiel (beachten Sie die Liste "Gruppen"):

shell@android:/ $ id
uid=2000(shell) gid=2000(shell) groups=1003(graphics),1004(input),1007(log),1009(mount),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats)

Der idBefehl (ohne Parameter) zeigt Informationen über den "aktuellen Benutzer". In diesem Fall habe ich verwendet adb shell, also ist der Benutzer die "Shell-App" (eher die integrierte Unix-Shell ). Die Liste der Gruppen zeigt, welche Berechtigungen die Shell hat, also kann sie zB die SD-Karte lesen und schreiben, auf Bluetooth und das Internet zugreifen (und einiges mehr).

Jede Anwendung, die Sie installieren, enthält eine Datei namens manifest.xml, die vorschreibt, worauf die Anwendung zugreifen darf. Wenn Sie eine App installieren, überprüft sie diese Datei und zeigt Ihnen, welche Berechtigungen zum Installieren dieser Anwendung erforderlich sind.

Es sei denn, Ihr Telefon ist gerootet und verwendet einen Exploit. Oder Sie packen diese Datei und ihre Manifestdatei neu, um weitere Berechtigungen hinzuzufügen ... sie greift nur wie angegeben auf den USB-Speicher zu. Das Android-System verhindert jeden anderen Zugriff und der Code, der versucht, auf diese anderen Berechtigungen zuzugreifen, gibt aus Programmsicht einfach einen Fehler zurück.

Aber ich glaube, dass sogar der Zugriff auf den USB-Speicher ein Problem darstellt, da er auf alle anderen Dateien zugreifen kann, die andere Programme mit dem USB-Speicher erstellen, nicht auf das gesamte Dateisystem, sondern nur auf einen Teil davon, der als "USB-Speicher" definiert ist. Da die App jedoch nicht auf das Internet zugreift, bleibt alles, worauf die App zugreift, auf Ihrem Gerät.