Android-Basics: Über Android, Apps und die Rechte
Was Apps dürfen, wie sie miteinander sicher kommunizieren und was das für Benutzer bedeutet. Zwei Entwickler erklären, wie Android in Sachen Rechte und Co funktioniert – Einsteiger-Level! Android Apps laufen per Definition in einer sogenannten Sandbox. Das bedeutet an sich nicht mehr, als dass die eine App die Daten und Funktionalität der anderen nicht ohne Weiteres beeinflussen und auslesen kann. Apps laufen also, inklusive ihrer Daten, in einem eigenen geschützten Bereich auf dem Gerät. In diesen Bereich kann niemand hinein aber die App auch nicht einfach so hinaus.
[werbung]
Malware und andere Schädlinge
Trotz dieser Sandbox gibt es Schadsoftware, welche euch und eurem Gerät schaden kann oder versucht eure Daten zu stehlen und sie an Dritte weiterzugeben. Als erstes muss man unterscheiden, über was für Bedrohungen man redet. Malware an sich ist Software mit unerwünschtem “Funktionsumfang”, welche potentiell Schaden anrichten kann. Jedoch muss Malware nicht das System austricksen oder auf Sicherheitslücken zurückgreifen um dies zu tun.
Zur Verdeutlichung hier ein kleines Beispiel:
Eine Anwendung, welche auf Andoid läuft, kann sich jede Berechtigung geben lassen welche das System erlaubt und dann auf die entsprechenden Schnittstellen zugreifen. Bei der Installation wird der User gefragt ob er der App diese Berechtigungen erteilen will. Ob dies nun ein gutes oder schlechtes System ist, soll Teil einer anderen Diskussion sein.
Fakt ist, Anwendungen können einen großen Funktionsumfang abdecken ohne per se Schadsoftware sein zu müssen. Eine SMS App zum Beispiel kann es dem User erlauben SMS so zu verschicken wie er sich das vorstellt. Eine andere Anwendung mit der gleichen Berechtigung SMS zu verschicken kann jedoch ungewollt SMS verschicken und damit Kosten verursachen. Das ist an sich kein konzeptioneller Fehler des Systems, sondern einfach nur eine erlaubte Art des Zugriffs.
Eine App, welche also ungewollt, aber völlig legitim, Funktionen ausführt, die dem User nicht gefallen, kann als Malware bezeichnet werden. Dies hat aber nichts mit einem Virus, Hacking oder sonst was zu tun, sondern es handelt sich um eine ganz normale App.
Daten “Teilen”
Viele Apps bieten die Möglichkeit, gewisse Teile ihrer Daten zu teilen. Meist gibt es einen Menüpunkt mit dem Titel “Teilen”, “Senden” oder auf Englisch “Share”. Die Galerie zum Beispiel erlaubt es euch Bilder zu teilen. Benutzt ihr diese Funktion, dann öffnet sich ein Dialog zur Auswahl aller auf eurem Gerät befindlichen Apps, die in diesem Fall mit einem Bild umgehen können. Zum Beispiel könnte hier die Facebook App auftauchen um das Bild dort zu teilen oder auch Dropbox um das Bild dorthin hochzuladen.
Welche Apps in diesem Dialog auftauchen hängt davon ab welche Apps ihr installiert habt und was ihr versucht zu teilen. Nicht jede App kann mit jedem Inhalt umgehen. Welche App mit welchem Inhalt umgehen kann muss der Entwickler der jeweiligen App spezifizieren. Diese Information gibt eine App dann bei Installation an Android weiter und wenn sich nun der Teilen-Dialog für zum Beispiel einfachem Text öffnet, zeigt Android alle Apps an, für die die Entwickler spezifiziert haben, dass sie einfachen Text aufnehmen können um ihn zu teilen.
Bei diesem Vorgang kommunizieren die beiden beteiligten Apps nicht direkt miteinander und müssen auch nichts voneinander wissen, denn die gesamte Übergabe übernimmt Android selbst. Dies ist wohl die sicherste Möglichkeit um Daten von einer App in die andere zu bekommen. Dafür ist deshalb auch kein spezielles Recht nötig.
Rechte
Da wären wir auch schon bei einem sehr heiklen Thema, den Rechten. Wie bereits beschrieben darf eine App ja ihre schützende Sandbox auch nicht verlassen es sei denn, sie hat ein Recht dazu. Jedesmal wenn eine App eine Resource oder Funktionalität außerhalb ihrer Sandbox benutzen will, zum Beispiel wenn die App auf das Internet zugreifen will, muss sie dafür das Recht haben.
Diese Rechte muss der Entwickler einzeln anfordern und sie werden dem Benutzer auch alle bei der Installation aufgelistet, damit dieser genau weiß, was welche App darf. Will eine App also auf das Internet zugreifen, Daten auf die SD-Karte schreiben oder diese lesen, auf Kontakte zugreifen, Einstellungen ändern oder sonst etwas tun, dass sich nicht in ihrer Sandbox abspielt, muss sie das entsprechende Recht zugewiesen haben.
Benutzern rate ich immer dazu die Rechte von Apps genau zu lesen und mit der Funktionalität zu vergleichen. Also zu überprüfen, ob die Rechte der App für das zu gebrauchen sind, was die App tun soll. Das ist manchmal nicht ganz einfach. Denn Internet wird zum Beispiel bereits benötigt sobald eine App Werbung bereitstellt, denn diese wird ja aus dem Internet bezogen. Aber wenn eine Audiorecorder-App “Kontakte lesen” und “Internet Zugriff” benötigt, klingt das verdächtig.
Diese beiden Rechte ermöglichen es der App, sofern sie eben wirklich Schadsoftware ist, eure Kontaktdaten an Dritte im Internet weitergeben. Also Berechtigungen immer genau lesen und den gesunden Menschenverstand entscheiden lassen. Ich als Entwickler höre ja ständig Fragen nach dem Sinn einzelner Rechte in meinen Apps und versuche sie zu erklären.
Gut fände ich, wenn ich diese Beschreibung der Rechte zu meinen Apps nicht nur in die Beschreibung sondern vielleicht direkt zu den Rechten dazuschreiben könnte, damit der Nutzer auf einen Blick sieht was ich mit welchem Recht vorhabe. Wenn diese Erklärungen schlüssig sind, wäre das eine wichtige Info für Benutzer, die auch zu mehr Transparenz und somit auch zu mehr Vertrauen führen würde.
Meine Daten
Es gibt verschiedene Orte im Speicher des Gerätes, an denen Apps ihre Daten ablegen können. Bei Linux kann man als “normaler” Nutzer nicht auf alle Daten zugreifen. Dafür braucht man Administratorrechte, welche als Root-Rechte bezeichnet werden. Ordner die also als “normaler” User nicht lesbar sind, können als User mit Root-Rechten gelesen und verändert werden.
Android bietet dem Entwickler die Möglichkeit seine Daten im privaten oder im öffentlichen Speicher abzulegen. Als normaler User kann man auf den privaten Speicher nicht zugreifen und auch keine andere Anwendung hat das Recht oder die Möglichkeit dazu. Als User mit Root-Rechten kann man jedoch grundsätzlich alles machen und es gibt kein Bit mehr auf dem Gerät, auf welches man kein Zugriff mehr hat.
Des Weiteren können Apps, mit entsprechender Berechtigung, Daten auf beliebige Orte im internen Speicher (oder auf der externen SD-Karte) ablegen. Diese Daten wiederum können auch von anderen Apps mit der entsprechenden Berechtigung zum Lesen und Schreiben dieses Speichers gelesen bzw. verändert werden.
Zudem können sich Apps dazu entscheiden, Daten öffentlich für andere Apps zur Verfügung zu stellen, wie es zum Beispiel Android selber mit den Mediadaten macht. Das System scannt also den Datenträger und trägt alle gefundenen Medien in eine Liste ein. Nun kann jede Anwendung auf diese öffentliche Datenbank zugreifen und lesen. Schreiben muss nicht erlaubt sein, kann jedoch. Das ist wieder eine Frage, wie diese öffentliche Datenbank geschrieben wurde und was der Entwickler zulassen will.
Natürlich können Apps ihre Daten auch zum Beispiel auf den Servern eines Dienstbetreibers speichern. Dropbox ist hier so ein Beispiel, aber auch hier seht ihr das am entsprechenden Recht, denn damit Apps ihre Daten von eurem Gerät aus woanders hin transportieren können, müssen sie raus aus der Sandbox – zum Beispiel via Internet, NFC, Bluetooth oder ähnlichem.
Andere Apps nutzen
Oft ist es gar nicht nötig, dass eine App alles selbst können muss. Will ich in meiner App ein Foto aufnehmen so kann ich doch einfach eine bestehende Kamera-App am Gerät nutzen. Das Selbe gilt zum Beispiel für auch für Anrufe oder den Versand von SMS. Warum sollte ich einen Dialer implementieren wenn ich einfach den bestehenden mit einer Nummer meiner Wahl füttern kann und ihn dann einfach aus meiner App heraus öffne. Auf “Anrufen” muss der Benutzer aber dann noch selbst drücken.
Das hat gleich mehrere Vorteile. Erstens braucht meine App so nicht so viele Rechte für all diese Funktionen und zweitens kann der Nutzer zum Beispiel für Fotos seine bevorzugte Kamera App nutzen, der er auch vertraut. Technisch funktioniert das hier ähnlich wie mit dem Teilen von Daten. In meiner App sage ich, vereinfacht gesagt, dem Betriebssystem, dass ich gerne eine Kamera App öffnen möchte und wenn diese dann ein Foto gemacht hat, hätte ich gerne dieses Foto in meiner App. Wieder sprechen hier die beiden beteiligten Apps nicht direkt miteinander und auch die Datenübergabe läuft über das Betriebssystem. Meine App hat also keinen Einfluss auf die andere, die mir hier eine Funktion bereitstellt. Ich bekomme nur das Ergebnis, um damit in meiner App weiter zu arbeiten.
Die Auswahl welche Apps dem Benutzer angezeigt werden, um beispielsweise ein Foto zu machen, hängt wieder davon ab, welche Apps am Gerät verfügbar sind und sich beim Betriebssystem als Kamera-App registriert haben. Damit sich eine App für eine bestimmte Funktionalität am Betriebssystem registrieren kann, muss wieder der Entwickler die Apps dementsprechend kennzeichnen und eine entsprechende Schnittstelle für die Kommunikation mit seiner App mitliefern. Diese Schnittstelle kann nur Android selbst bei solchen Datenübergaben nutzen.
Fazit
Android bringt viele Möglichkeiten mit um Apps sicher zu machen und zu verhindern, dass Daten in falsche Hände geraten. Sorglos darf man deshalb aber trotzdem nicht mit seinem Gerät umgehen. Denn es liegt zu einem großen Teil einfach noch immer in der Hand des Entwicklers, wie gut oder schlecht er diese Möglichkeiten nutzt.Gerade bei der Installation von Apps ist darauf zu achten, was diese dürfen und ob die angeforderten Rechte verdächtig aussehen.
Manchmal sind aber auch nicht per se als Malware anzusehende Apps ganz ohne schlechte Absicht ein Sicherheitsrisiko, wenn sie sensible Daten außerhalb ihrer Sandbox ablegen wo diese dann ungeschützt von anderen Apps gelesen werden können. Ihr solltet also darauf achten, dass die Apps auf eurem Gerät von Entwicklern stammen die sich um eure Sicherheit sorgen. Lest die Kommentare zu den Apps, achtet auf Bewertungen und wenn ihr euch bei einer App nicht sicher seid, sucht lieber nach einer bekannteren Alternative mit der schon viele Nutzer Erfahrungen haben und diese mit euch im Play Store teilen.
Über die Autoren
Bruno Hautzenberger
Ich bin 26 Jahre alt und seit fast 8 Jahren hauptberuflich Software Entwickler, unter anderem auch am mobilen Sektor tätig. Für Android entwickle ich nebenher in meiner Freizeit auch seit langem kleine Apps und Tools, welche ihr alle im Play Store findet.
2012 gründete ich mit dem Journalisten Georg Holzer zusammen das Netzkulturprojekt pingeb.org.
Außerdem blogge ich über Softwareentwicklung, Mobility, Everything Google und hier und da auch über Gaming und Fotografie. Außerdem findet ihr mich auch auf Twitter (@salendron) und Google+.
Michael Panzer
Ich bin 28 Jahre alt und schreibe seit ca. 3 Jahren für Android Apps. Ich habe Technische Redaktion studiert und arbeite seit ein paar Monaten hauptberuflich als Software-Entwickler für Android. Man kann mich bei Google+ finden und anschreiben.
Sehr guter Beitrag! Auch wenn ich das schon wusste finde ich es sehr Informativ.
Musste ich ausnahmsweise mal mit meinen Facebook-Freunden teilen.
Die allgemeinen Appberechtigungen sind meiner Meinung nach der größte Nachteil von Android und dementsprechend der größte Vorteil von ios. Warum kann mich Android nicht fragen, ob ich einer App eine bestimmte Berechtigung erteilen will. Entweder muss man alle Berechtigungen erteilen oder die App lässt sich nicht installieren. Das Konzept von ios gefällt mir da deutlich besser.
@Tim: Und paranoide Benutzer verweigern dann alles, sodass die App gar nicht mehr richtig funktionieren kann… und dann beschweren sie sich…
Naja, bei ios funktioniert es ja auch. Wenn man etwas machen möchte, wofür man noch keine Berechtigung erteilt hat öffnet sich ein kleines Popup. Dann kann man die Berechtigung immer noch erteilen.
@Tim Android hat 145 einzelne Berechtigungen. Da jedes mal einen Dialog aufzumachen würde die User extrem nerven.
Zudem zeigt dir iOs ja nicht für jeden Zugriff auf etwas einen Dialog an, sondern nur bei paar wenigen Sachen. Den Rest kann jede App grundsätzlich benutzen
@Tim … wurde genau das nicht mi 4.4 möglich gemacht?…dachte da was gelesen zu haben
Das stimmt natürlich, aber gerade bei den kritischen Berechtigungen wie Kontakte, Standort und Fotos werde ich gefragt, was mich zum Beispiel die Facebook App mit einem viel besseren Gefühl nutzen lässt.
Aber vielleicht wird ja der Permissions Manager in Android bald offiziell freigeschaltet.
@Tim: Apple hat da aber auch erst Nachgezogen, als mehrere Anwendungen ohne das Wissen des Kunden das Telefonbuch geklaut hatten.
Ich glaube zu dem Thema haben beide Systeme noch einiges auf der Todo-Liste. Hier gibt es an sich noch viel Verbesserungspotenzial.
ich finde AppGuard von SRT genial! Diese App ermöglicht genau das: man kann einer anderen App einzelne Rechte entziehen. AppGuard listet auf, welche Berechtigungen unbedingt nötig sind und welche man entfernen kann. Außerdem kann man unter Netzwerkverbindungen gezielt einzelne Hosts erlauben oder blockieren.
Sehr guter Beitrag. Werde ihn auf jedendall teilen. Ausserdem könnte ich das für meine Hausaufgaben-App verwenden. 🙂
Sehr guter Artikel, sehr informativ und sind einfach Basics die man wissen sollte. Jeder der ein Smartphone hat sollte sich damit auseinandersetzen!
Wenn ich der Meinung bin, dass eine App eine bestimmte Berechtigung nicht haben sollte, dann installiere ich sie nicht. Fertig. Sie dann aber doch zu installieren, weil sie toll ist, aber sich dann darüber aufzuregen, dass sie so viele Daten von einen will ist irgendwie… paranoid.
Ich finde das in Ordnung. Ich werde beim Installieren darauf hingewiesen welche Berechtigungen diese App benötigt und kann entweder zustimmen und sie downloaden oder ich lehne ab und suche mir eine Alternative.
Aber ständig genervt werden, wenn eine App was zum ersten Mal machen will ob sie das machen darf… Das will doch wirklich keiner. Außer eben der von den Medien aufgeklärte Datenschutz-Bürger.
@tseeling: Und welche Rechte beansprucht AppGuard für sich? Wahrscheinlich einige, sonst könnte sie ja den anderen Apps nicht Berechtigungen entziehen.
Es gibt unter Android verschiedene Möglichkeiten, bestimmten Apps ausgewählte Berechtigungen zu entziehen. Einige wurden ja schon genannt. Und seit Android 4.3 geht das auch ohne zusätzliche Apps vom System direkt:
http://stadt-bremerhaven.de/android-4-3-enthaelt-versteckte-option-fuer-app-berechtigungen/
Wenn ich das alles lese, kann ich nur voller Stolz auf mein Blackberry Z10 schauen 🙂 denn dort kann ich direkt nach dem Download eines Apps die Berechtigungen einschränken wie ich mag.
@Benny: Ein ziemlich großer Teil der Apps hat nicht unmittelbar einsehbare Berechtigungen. Ich finde da auch die derzeitige Lösung von iOS besser. Man bekommt die Anfrage meist zu einem Zeitpunkt, zu dem sie durch den Kontext selbsterklärend ist. Finde ich einfach angenehmer als mich bei der Installation durch die Berechtigungsliste zu wälzen, insbesondere wie angesprochen, da ich bei nicht unmittelbar einzusehenden Berechtigungen bei Android auf eine Erläuterung in der Beschreibung hoffen muss. Insbesondere aber ist es angenehm ab Werk die Möglichkeit zu haben unerwünschte Berechtigungen einfach nicht zu gewähren.
Verstehe ich das richtig, dass bei Android 4.4 Berechtigungen entzogen werden können? Das wäre zwar ein Fortschritt aber immernoch die falsche Reihenfolge, Da es nur versierte Nutzer benutzen werden. Nur wenn es per Design von jedem genutzt wird, erwarte ich Auswirkungen auf das Design von Apps. Dazu kommt, dass etwa „SD-Karte“ unter Android zu generisch ist. Es ist ein gewaltiger Unterschied, ob ein Programm z.B. Grafikdateien auf die SD-Karte auslagern will oder ob es auf die gesamte SD-Karte zugreifen will.