Start Magazin App-Rechte unter Android

App-Rechte unter Android

1396
0

Android-Apps werden von Haus aus an einer recht engen Leine gehalten. Viele Apps bitten bei der Installation jedoch darum, diese Leine über zusätzliche Rechte zu verlängern. Höchste Zeit, einen genaueren Blick auf die oftmals blind abgenickten Rechte zu werfen.

Eine Android-Apps führt wahrlich kein angenehmes Leben: Standardmäßig darf sie nur mit dem Benutzer des Smartphones/Tablets interagieren und Dinge auf den Bildschirm malen. Daten muss sie in einem eigens für sie geschaffenen Unterverzeichnis ablegen, das gleichzeitig auch noch vor den Blicken aller anderen installierten Kolleginnen geschützt ist. Mit denen darf die App zudem nur eingeschränkt und auf eine ganz bestimmte Weise kommunizieren. All diese rigiden Maßnahmen zusammen würden allerdings nur recht langweilige Apps ermöglichen.

Alles oder nichts

Die meisten Apps verlangen deshalb Zugriff auf weitere Funktionen und Informationen. So muss beispielsweise das Navi den aktuellen Standort über das eingebaute GPS-Modul abfragen und die Twitter-App ins Internet funken dürfen. Solche zusätzlichen Befugnisse muss jede App explizit bei ihrer Installation beantragen. Android erkundigt sich dann beim Benutzer des Geräts, ob er der App den Zugriff auf diese Funktionen gewähren möchte. Wer schon einmal eine App installiert hat, kennt diese Rückfragen. Dabei gilt nur Hop oder Top: Entweder man erlaubt der App den Zugriff auf die eingeforderten Systemfunktionen oder verzichtet auf eine Installation.

Ein Punkt, der erst mal fair klingt, führt bei vielen Nutzern allerdings zu mehr Verwirrung, als zu mehr Sicherheit. Denn viele Nutzer verstehen die geforderten App-Berechtigungen nicht oder ordnen diese falsch ein. So kommt es schnell dazu, dass man gedankenlos Apps mit fragwürdigen Berechtigungen installiert oder auf die Installation einer App verzichtet, obwohl diese die angeforderten Berechtigungen absolut korrekt benutzt.

Erste und wichtigste Regel ist, immer mit gesundem Menschenverstand über angefragte Berechtigungen nachzudenken. Braucht eine App wirklich SMS-Zugriff oder muss sich diese ins Internet einwählen? Dabei sollte man allerdings nicht nur die Kernfunktionen der App, sondern alle Punkte betrachten. Eine einfache Notiz-App kann durchaus die Berechtigung für den Zugriff aufs Internet benötigen (android.permission.INTERNET, siehe Tabelle), da in ihr ein Werbebanner läuft, welches die neuesten Anzeigen nachladen möchte. Auch Spielenetzwerke wie zum Beispiel Open Feint verlangen meist mehr Berechtigungen, als für das eigentliche Spiel notwendig sind. Manchmal kommt man nicht darum herum, etwas um die Ecke zu denken. Denn wer denkt schon daran, dass ein Spiel bei einem eingehenden Anruf pausieren möchte und deshalb den Anrufstatus lesen können muss?

Abbildung 1: Jede App im Android Market weist ihre Berechtigungen vor der Installation aus.
Abbildung 1: Jede App im Android Market weist ihre Berechtigungen vor der Installation aus.

Permission Blocker

Auch wenn man noch so sehr auf die Berechtigungen der Apps achtet, so kommt es doch vor, dass man nicht nur unzufrieden mit einigen ist, sondern diese am liebsten gänzlich blockieren würde. Dies geht, wie so oft beim Android-System, am einfachsten mit Root-Zugriff auf das eigene Gerät. Zu diesem Zweck finden sich mehrere Programme im Android Markt, die im Grunde alle ähnlich arbeiten. Auf Systemebene erlangen sie Zugriff auf die Datei AndroidManifest.xml, die im Programmpaket einer jeden Android-App enthalten ist. In dieser gibt der Programmierer die einzelnen Berechtigungen an und die Rechte lassen sich direkt in der Datei anpassen.

Zu diesem Zweck kann man neben Apps wie Permissions Denied [1], den recht beliebten und kostenlos verfügbaren LBE Privacy Guard [2] nutzen. Dieses Programm hat den entscheidenden Vorteil, dass es im Grunde eine Sammlung von vielen sicherheitsrelevanten Tools ist und unter anderem Apps ihre Rechte entziehen kann. Hier kann man nicht nur für jede App einzeln festlegen, was sie darf und was nicht, sondern kann dies auf Wunsch auch jederzeit wieder ändern bzw. rückgängig machen. Das Programm speichert zudem die vorgenommenen Änderungen und prüft bei jedem Start einer App, ob diese noch den eigenen Richtlinien entsprechen.

Abbildung 2: Der LBE Privacy Guard gilt als Schweizer Taschenmesser für die Sicherheit unter Android.
Abbildung 2: Der LBE Privacy Guard gilt als Schweizer Taschenmesser für die Sicherheit unter Android.

Vor dem Einsatz solcher Berechtigungsblocker sollte man sich natürlich darüber bewusst sein, dass jede Änderung ein Programm komplett außer Gefecht setzen kann, zudem benötigt man zum Blockieren auf dem Gerät Root-Rechte. Wer elementare Funktionen blockt, riskiert zudem immer etwas Systemstabilität. Um sich überhaupt erst mal einen Überblick zu verschaffen, was sämtliche installierten Apps an Berechtigungen benötigen und bei welchen Hand angelegt werden soll, empfiehlt es sich einen Permission-Checker über das Android-Gerät laufen zu lassen. Viele Anti-Malware-Apps bringen eine solche Funktionalität mit.

Notlösung APK Edit

Es ist jedoch auch ohne Root-Rechte möglich, die Rechte eine App zu beschränken. Die aus dem Google Play Store bezogene Datei ist eigentlich gar kein Programm, sondern ein komprimiertes ZIP-Archiv. Es besitzt die Endung .apk und enthält neben der ausführbaren Anwendung noch ein paar weitere Dateien. Eine davon trägt immer den Namen AndroidManifest.xml. Sie enthält das sogenannte Manifest, eine Liste mit Informationen rund um die App. Darin finden sich neben der Versionsnummer auch die von ihr benötigten Rechte. Indem man nun das Archiv auseinandernimmt und die unerwünschten Rechte in der AndroidManifest.xml ausradiert, kann man gezielt den Zugriff der App auf einzelne Systemfunktionen verhindern.

Dazu muss man zunächst die .apk-Datei der App auf den eigenen PC transferieren. Sofern man beim Einkauf beziehungsweise Download der App dieses Archiv nicht schon direkt erhalten hat, kann man es mit einer App wie dem AppMonster [3] oder AppSaver [4] auf eine eingesteckte SD-Speicherkarte sichern und dann auf den PC übertragen. Aktuelle Android-Versionen beherrschen das Verschieben auf die SD-Karte von Haus aus.

In die .apk-Datei schaut unter Windows das Programm APK Edit [5]. Bevor man das Werkzeug installieren kann, benötigt man noch Java und das .NET Framework mindestens in Version 3.5. Letzteres sollte auf aktuellen Windows-Versionen bereits installiert sein. Mit APK Edit öffnet man die .apk-Datei, wechselt dann zum Register Details und klickt auf Browse. Im neuen Fenster führt man einen Rechtsklick auf die Datei AndroidManifest.xml aus und wählt aus dem Kontextmenü Bearbeiten.

Abbildung 3: : Mit APK Edit manipuliert man unter Windows komfortabel die .apk-Datei einer App.
Abbildung 3: : Mit APK Edit manipuliert man unter Windows komfortabel die .apk-Datei einer App.

Wer unter Linux oder Mac OS X arbeitet, muss das .apk-Archiv umständlich in einem Terminal-Fenster mit dem Werkzeug Apktool [6] entpacken. Um es einsetzen zu können, benötigt man das Java Development Kit, das man unter Linux schnell über den eigenen Paketmanager hinzuholt. Anschließend angelt man sich von der Apktool-Homepage sowohl das apktool1.4.1.tar.bz2-Paket, als auch das für das eigene Betriebssystem gedachte apktool-install...-Archiv. Beide entpackt man und kopiert dann die drei herausgepurzelten Dateien als Benutzer root respektive Administrator in das Verzeichnis /usr/local/bin. Jetzt kann man das .apk-Archiv in einem Terminal-Fenster mit dem Befehl:

apktool d app.apk out

entpacken, wobei app.apk durch den Dateinamen der App zu ersetzen ist. Der Inhalt des Archivs landet im neuen Verzeichnis out.

Egal mit welchem Werkzeug man an die AndroidManifest.xml gelangt, ihr Inhalt ist ziemlich kryptisch (Abbildung 4). Wichtig sind alle Zeilen, die mit <uses-permission ... beginnen. Jede von ihnen bittet Android um eine bestimmte Systemfunktion. Steht in ihr beispielsweise die Zeile <uses-permission android:name="android.permission.INTERNET" /> möchte die App irgendwann ins Internet gehen. Wichtig ist der Begriff in den Großbuchstaben, die restlichen Zeichen weisen Android nur daraufhin, dass es sich um den Antrag auf ein Zugriffsrecht handelt.

Abbildung 4: : Die Zeilen mit <users-permission ... zeigen die verlangten Rechte an. Diese App möchte unter anderem ins Internet gehen (wie die hervorgehobene Zeile beweist).
Abbildung 4: : Die Zeilen mit <users-permission … zeigen die verlangten Rechte an. Diese App möchte unter anderem ins Internet gehen (wie die hervorgehobene Zeile beweist).

Nicht immer sind die Berechtigungen so naheliegend beziehungsweise einfach zu lesen. Mit jeder Android-Version kommen zudem neue hinzu. Eine Aufstellung aller Rechte findet man in der Entwicklerdokumentation, die wichtigsten nennt die Tabelle "Rechte im Überblick".

Möchte man nun der App ein Recht entziehen, löscht man einfach die zugehörige Zeile und speichert die Änderungen ab. Dabei muss man insbesondere unter Windows darauf achten, dass der Editor die Textdatei in der Zeichencodierung UTF-8 speichert.

In APK Edit klickt man danach auf OK, was wiederum die .apk-Datei aktualisiert. Anschließend kann man die App wie gewohnt (erneut) installieren.

Wer das Apktool einsetzt, muss die App zunächst wieder verpacken. Dazu ruft man im out-Verzeichnis (in dem die AndroidManifest.xml liegt) den Befehl:

sudo apktool b

auf. Das System fragt dabei nach dem Passwort eines Administrators beziehungsweise des Benutzers root. Im Unterverzeichnis dist liegt jetzt eine neue .apk-Datei. Die muss man noch signieren:

sudo keytool -genkey -v -keystore release.keystore -alias alias_name -keyalg RSA -validity 10000
sudo jarsigner -verbose -keystore release.keystore app.apk alias_name

app.apk ersetzt man dabei durch den Dateinamen des .apk-Archivs, das man abschließend wieder auf dem Smartphone oder Tablet installieren kann.

Die nachträgliche Manipulation und der Rechteentzug führen allerdings oftmals dazu, dass die App nicht wie gewohnt funktioniert oder sogar regelmäßig abstürzt. Man sollte daher zumindest eine Kopie der originalen .apk-Datei aufbewahren. Obendrein verstößt man insbesondere bei kommerziellen Apps gegen die Lizenzbedingungen.

Fazit

Bevor man eine App installiert, sollte man unbedingt die eingeforderten Rechte kontrollieren. Kann man die nicht nachvollziehen, hilft möglicherweise ein klärender Blick auf die Seiten des App-Entwicklers, im Zweifel sollte man ihn per E-Mail direkt kontaktieren. Bleiben zu viele Fragen offen, greifen Sie besser zu einer anderen App mit ähnlichem Funktionsumfang.

Ein maßregelnder Eingriff in die .apk-Datei lohnt nur in Sonderfällen. Meist handelt man sich damit unerwünschte Nebeneffekte und Abstürze ein. Nur wer sich wirklich damit auskennt, sollte seinem Gerät einen Root-Zugriff spendieren oder gar ein CustomROM einspielen. Zu groß ist das Risiko, dass man unbemerkt Teile des Systems zerstört, neue Sicherheitslücken aufreißt oder sich Schadprogramme einfängt.

Rechte im Überblick

Meldung bei Installation Interner/Formaler Name Bedeutung
Ungefährer (netzwerkbasierter) Standort ACCESS_COARSE_LOCATION Die App erfährt den ungefähren Standort des Geräts. Dazu ermittelt Android anhand der Position der umgebenden Funkmasten, wo sich das Smartphone beziehungsweise Tablet befindet. Steht diese Information nicht zur Verfügung, wertet Android Informationen über die anfunkbaren WLANs aus. Diese groben Standortinformationen nutzen unter anderem Apps zur Restaurantsuche, andere blenden wiederum lokale Werbung ein.
Genauer (GPS-) Standort ACCESS_FINE_LOCATION Die App erhält die exakten Standortdaten vom eingebauten GPS-Modul. Diese Information nutzen beispielsweise Apps zum Geocaching. Foto-Apps speichern die Daten häufig als Metainformation in den geschossenen Bildern.
Netzwerkstatus anzeigen ACCESS_NETWORK_STATE Die App darf Informationen über die zugänglichen Netzwerke abfragen.
WLAN-Status anzeigen ACCESS_WIFI_STATE Die App darf Informationen über alle derzeit verfügbaren, drahtlosen Netzwerke einholen.
Bluetooth-Verbindungen herstellen BLUETOOTH Die App darf über Bluetooth mit anderen, bereits verbundenen Geräten sprechen.
Bluetooth-Verwaltung BLUETOOTH_ADMIN In diesem Fall kann die App nicht nur mit anderen Geräten über Bluetooth kommunizieren, sie darf auch andere Bluetooth-Geräte suchen und neue Verbindungen zu diesen Geräten herstellen – beides sogar heimlich.
Telefonnummern direkt anrufen CALL_PHONE Die App kann das Telefon benutzen und eine beliebige Nummer wählen, ohne dass es der Benutzer merkt beziehungsweise sieht. Diese Möglichkeit nutzen einige Schad-Apps aus, um teuere Telefondienste anzurufen.
Alle Telefonnummern direkt anrufen CALL_PRIVILEGED Die App darf (heimlich) jede beliebige Telefonnummer wählen, darunter auch Notrufnummern.
Bilder und Videos aufnehmen CAMERA Die App darf die eingebaute Kamera nutzen. Dies benötigen neben Foto-Apps auch beispielsweise auch Lese-Apps für Barcodes. Schadsoftware könnte allerdings auch regelmäßig Bilder schießen und so persönliche Daten ausspähen.
UI-Einstellungen ändern CHANGE_CONFIGURATION Die App darf die Grundeinstellungen des Mobiltelefons verändern und beispielsweise eine andere Sprache oder Schriftgröße wählen.
Anwendungen löschen DELETE_PACKAGES Die App darf andere Apps deinstallieren. Dieses Recht fordern vor allem Dateimanager, andere Apps brauchen es nicht.
Gerät/Tablet ein- oder ausschalten DEVICE_POWER Die App darf in die Energiesparfunktionen eingreifen und das Gerät ein- und ausschalten. Dieses Recht sollte normalerweise für eine App tabu sein.
Bekannte Konten suchen GET_ACCOUNTS Die App darf sich eine Liste mit allen auf dem Gerät gespeicherten Benutzerkonten holen.
Tasten und Steuerungstasten drücken INJECT_EVENTS Mit diesem Recht ausgestattete Apps dürfen selbst Benutzer spielen und eigenmächtig Tastatureingaben absetzen. Dies kann etwa für Behinderte nützlich sein, die so wiederkehrende Eingabefelder automatisch ausfüllen lassen können. Auf der anderen Seite kann eine bösartige App damit auch eigenmächtig das Empfängerkonto in einer Banküberweisung ändern oder eine kostenpflichtige Telefonnummer eintippen.
Anwendungen direkt installieren INSTALL_PACKAGES Die App darf andere Apps (genauer gesagt .apk-Pakete) installieren. Dieses Recht fordern vor allem Dateimanager.
Uneingeschränkter Internetzugriff INTERNET Die App darf auf das Internet und alle anderen derzeit verfügbaren Netzwerke zugreifen. Auf diesem Weg laden viele Apps Werbung und Spiele weitere Level nach.
Kontoliste verwalten MANAGE_ACCOUNTS Die App darf alle auf dem Gerät gespeicherten Benutzerkonten verwalten und ändern.
Externen Speicher formatieren MOUNT_FORMAT_FILESYSTEMS Die App darf die eingesteckte SD-Speicherkarte formatieren, also komplett löschen. Es gibt normalerweise keinen Grund, dieses Recht zu erteilen.
Dateisysteme bereitstellen oder Bereitstellung aufheben MOUNT_UNMOUNT_FILESYSTEMS Die App darf die eingesteckte SD-Speicherkarte aushängen, also zum sicheren Entfernen vorbereiten. Eigentlich sollte keine App dieses Recht erhalten. Eine Ausnahme bilden lediglich Apps zur Verwaltung der Speicherkarten.
Kontaktdaten lesen, SMS oder MMS lesen und Kalendereinträge lesen READ_CONTACTS, READ_SMS und READ_CALENDAR Die die App darf die Kontakte (READ_CONTACTS), alle gespeicherten SMS (READ_SMS) und die Termine aus dem Kalender (READ_CALENDAR) lesen – jedoch nicht manipulieren.
Telefonstatus lesen und identifizieren READ_PHONE_STATE Die App kann prüfen, ob und wenn ja mit welcher Telefonnummer der Benutzer gerade verbunden ist. Diese Information benötigen beispielsweise Medienplayer und Spiele, um sich bei einem eingehenden Anruf in den Hintergrund zu verkrümeln oder zumindest den Ton abzudrehen. Andererseits kann man eine App auch spionieren, mit wem man telefoniert hat.
Audio aufnehmen RECORD_AUDIO Die App darf das gerade durch das Gerät laufende Tonmaterial, sowie alle Telefonanrufe aufnehmen. Damit lässt sich sowohl eine Diktiergeräte-App erstellen, als auch ein Schadprogramm, das alle Gespräche abhört.
Kurznachrichten senden SEND_SMS Die App darf ohne Zutun des Benutzers SMS verschicken – auch an kostenpflichtige Dienste. Ähnliche wie CALL_PHONE nutzen das Schad-Apps aus, um im Hintergrund massenhaft kostspielige SMS zu senden. Umgekehrt laufen über diesen Dienst aber auch In-App-Käufe, über die man beispielsweise in Spielen weitere Level nachkauft. SMS-Apps brauchen dieses Recht natürlich ebenfalls.
Bevorzugte Einstellungen festlegen SET_PREFERRED_APPLICATIONS Die App darf die Grundeinstellungen des Geräts verändern und so beispielsweise einen anderen Standard-Webbrowser wählen.
Authentifizierungsinformationen eines Kontos verwenden USE_CREDENTIALS Die App darf im System gespeicherten Benutzerkonten verwenden, um sich bei den entsprechenden Diensten anzumelden. Man muss also beispielsweise die Facebook-App nur starten und kann dann direkt losschreiben. Andererseits erhält eine App auf diese Weise auch Zugriff und Einblick in sensible und persönliche Daten. Eine Schad-App könnte sogar eigenmächtig die Dienste nutzen und beispielsweise auf Facebook Werbemüll auf die Pinnwand schreiben. Die Anmeldung bei den Diensten übernimmt übrigens Android, die App selbst bekommt also das Passwort nicht zu sehen.
Kontaktdaten schreiben, SMS oder MMS bearbeiten, Kalendereinträge hinzufügen oder ändern und E-Mails an Gäste senden WRITE_CONTACTS, WRITE_SMS, WRITE_CALENDAR Eine App darf Kontakte, SMS und Termine verändern beziehungsweise neu anlegen. Das ist beispielsweise notwendig, wenn eine App automatisch einen neuen Termin im Kalender eintragen soll. Allerdings darf die App dort dann auch Daten löschen.
SD-Karten-Inhalt ändern/löschen WRITE_EXTERNAL_STORAGE Die App kann auf die eingesteckte SD-Speicherkarte zugreifen und dort Dateien sowohl anlegen, als auch löschen.
Allgemeine Systemeinstellungen ändern WRITE_SETTINGS Die App darf die Telefoneinstellungen verändern.