blog.wlami.com

Virtuelles Zuhause von Wladislaw Mitzel

Passwörter der E-Mail App werden unter Android als Klartext in SQLite gespeichert

Das hört sich zunächst einmal kritisch an. Passwörter in Klartext abzulegen klingt nicht nur unsicher, sondern kann auch kritisch sein, sofern man nicht den Zugriff auf die Datei beschränkt, die das Passwort enthält. Im Android Issue-Tracker wird gerade diskutiert, inwiefern es sich bei diesem Vorgehen wirklich um ein Sicherheitsproblem handelt. Im Folgenden möchte ich einige Interessante Ansichten aufgreifen und kommentieren.

Problemstellung

The password for email accounts is stored into the SQLite DB which in turn stores it on the phone’s file system in plain text.
Encrypting or at least transforming the password would be desirable.

Quelle: http://code.google.com/p/android/issues/detail?id=10809

An dieser Stelle stellt sich mir die Frage, ob das Unkenntlich-machen einen Sicherheitsgewinn darstellt und wie eine Verschlüsselung realisiert werden kann. Grundsätzlich ist auch die Frage: Wie geht man mit Passwörtern um?

Umgang mit Passwörtern

In den Kommentaren wird auf einen sehr interessanten Artikel der Pidgin-Entwickler verwiesen. In diesem werden vier grundsätzliche Herangehensweisen an die Problematik beschrieben:

  • Passwort hinter einem Passwort abspeichern: Erst nachdem man ein “Master-Passwort” eingegeben hat, wird die eigentliche Passwort-Datei entschlüsselt und man kommt an das gewünschte Passwort ran.

Hier muss trotzdem ein Passwort eingegeben werden. Und dies führt, sofern man ein sicheres Passwort benutzen will, zu einer schlechten User Experience. Ein Passwort mit Ziffern, Buchstaben und Sonderzeichen auf einem mobilen Gerät einzugeben macht einfach keinen Spaß.

  • Passwort verschleiern: Man kann das Passwort verschleiern, indem man beispielsweise base64 oder ähnliches anwendet. Oder mit einem festen Schlüssel ver- und entschlüsseln.

Das halte ich für bedenklich und gefährlich. Der Benutzer sieht im ersten Moment nicht immer, ob es sich bei den Daten um vertrauliche Daten handelt und wägt sich vielleicht in Sicherheit, während der Dateien mit vertraulichem Inhalt an jemand anders weitergibt.

  • Passwort in Klartext ablegen und den Zugriff beschränken: Man legt das zu speichernde Passwort in Klartext ab. Es muss aber dafür gesorgt werden, dass der Zugriff auf diese sensiblen Daten eingeschränkt wird. Das kann beispielsweise mit Berechtigungen im Dateisystem geschehen.

Dies ist der Weg, den die Google-Entwickler derzeit bei der E-Mail App gewählt haben. Für mich hört sich das am “wenigsten schlimm” an. Zwar liegt das Passwort in Klartext vor, allerdings ist sich der Benutzer dann evtl. bewusst, dass es sich um sensible Informationen handelt. Gleichzeitig werden die Daten an einem Ort abgelegt, der nur durch die E-Mail App zugreifbar ist.

  • Keine Passwörter speichern: Es werden schlicht und ergreifend keine Passwörter abgelegt.

Das ist zwar der sicherste Weg, hier stellt aber die Passwort-Eingabe, ebenfalls wie in Punkt 1, ein Problem für die User Experience dar.

 Gibt es hier überhaupt ein Problem?

Die Passwörter werden also in Klartext in die Datenbank geschrieben. Diese Datenbank wird innerhalb einer Datei gespeichert, die im Dateisystem unter /data/data/* liegt. Dieser Ort wird durch Android geschützt. So besagt das Android-SDK:

Any data stored by an application will be assigned that application’s user ID, and not normally accessible to other packages.

Quelle: http://developer.android.com/guide/topics/security/security.html

Dies ist das Default-Verhalten von Android und kann, falls gewünscht, umgangen werden. Ich gehe davon aus, dass die Entwickler der E-Mail App die Restriktionen allerdings beibehalten haben, wodurch der Zugriff auf die Datenbank nicht möglich ist.

Um dem auf den Grund zu gehen, habe ich es selbst mal ausprobiert: Ich habe mein Desire HD im USB-Debugging Modus an meinen Computer angeschlossen und wollte auf das Dateisystem zugreifen. Es war mir allerdings nicht möglich auf das Verzeichnis /data zuzugreifen.

Dazu muss man erwähnen, dass ich mein Gerät nicht gerootet habe. Somit können alle Sicherheitsmechanismen von Android greifen und die Daten bleiben geschützt. Bei einem gerooteten Gerät besteht nämlich die Möglichkeit die Daten in /data/data zu lesen oder auch zu verändern, da die Dateisystem-Berechtigungen für den root-User nicht greifen. In diesem Fall kann man also auf das Klartext-Passwort zugreifen.

An dieser Stelle kommen wir zum ursprünglichen Problem:

Bringt eine Verschleierung des Passworts etwas? Nein! Denn wenn der Angreifer erstmal die SQLite Datenbank hat, kann er auch die Verschleierung umgehen. Das Verschlüsseln mit einem festen Wert oder das Encoding mit base64 etc. ist Augenwischerei.

Wir verschlüsseln die Datenbank mit einem Passwort! Das kann ein Mehr an Sicherheit bringen. Voraussetzung ist jedoch ein starkes Passwort, da man mit aktuellen Grafikkarten kurze und leichte Passwörter innerhalb absehbarer Zeit knacken kann. Sichere Passwörter lassen sich mit einem Smartphone aber alles andere als leicht eingeben! Somit leidet die User Experience.

Zusammenfassung

Die E-Mail App speichert die Zugangsdaten zu den Postfächern in Klartext in der eigenen SQLite Datenbank. Diese Datenbank ist bei nicht-gerooteten Geräten durch Android geschützt. Es ist also, sofern nicht eine Sicherheitslücke in Android ausgenutzt wird, für eine böse App nicht möglich eure E-Mail Zugangsdaten zu lesen. Hat man jedoch ein gerootetes Gerät, stellt dies ein Sicherheitsrisiko dar.

Falls ihr Euch jetzt in Sicherheit glaubt, da Euer Gerät über ein “geschütztes” Android verfügt, möchte ich euch auf folgendes hinweisen: Was passiert, wenn das Smartphone gestohlen wird und der Dieb es rootet? Er hat dann vollen Zugriff auf die gespeicherten Daten.

In diesem Sinne: lasst Euch nicht beklauen!

 

2 Kommentare

Von: Dennis um 11:28:43 am 04.08.2011

Ein sehr interessanter Beitrag mit vielen Informationen, die mir zumindest nicht bekannt waren. Aber da kann man wirklich nur hoffen, dass einem das Smartphone nicht geklaut wird, um vielleicht absolute Sicherheit dafür zu haben, dass die Passwörter auch weiterhin geschützt bleiben.

Von: Wini um 20:56:50 am 25.07.2012

Merci für den sehr informativen Artikel!
Ich stehe jetzt aktuell vor der Frage, ob ich auf meinem Android-Smartphone mein eMail-Konto mit gespeichertem PW einrichten soll oder nicht. Da ich nicht glaube das sich an der Speicherung im Klartext etwas getan hat, ich aber Android 4.0.3 mit verschlüsselter SD-Card verwende, frage ich mich, ob man das Mail-Programm nicht einfach dazu bekommt, die Daten auf der SD-Card abzuspeichern?! Oder vielleicht einfach einen neuen Mail-Client herunterladen? Die Grundannahme ist jetzt, dass mein PW wie auch der Algo "sicher" sind.
Sehr sinnvoll wäre es bereits, wenn mit der SD-Card-Encryption auch die wichtigen PW-Daten bzw. diese SQL-Datenbank verschlüsselt werden würden. Ist dazu irgendetwas bekannt?!

Kommentieren

Dieses Blog verwendet statische Kommentare. Kommentare werden also per Mail an mich geschickt und erscheinen anschließend im Blog. Eure E-Mail-Adresse wird nicht veröffentlicht.

Kommentar schreiben