Start Magazin Dem Android-Log auf die Finger geschaut

Dem Android-Log auf die Finger geschaut

Log-Dateien sind eine wichtige Informationsquelle bei der Entwicklung von Apps und Programmen. Nur manchmal ist ein ausführliches Log des Guten zu viel. LogMan logcat Prüfung klopft das Android-Log auf sensible Informationen ab.

Momentan vergeht kaum ein Tag, an dem nicht irgendeine Meldung zu Sicherheitslücken von Software in den Medien erscheint. Manch einer wird sich sicher sagen: Ich bin ja nicht betroffen! Aber, stimmt das wirklich? Muss man nicht gerade in der heutigen Zeit, wo leistungsfähige Smartphones immer mehr Verbreitung finden, eigentlich um so genauer hinsehen? In einen dieser Bereiche, der sich im Allgemeinen bei Android-Smartphones im Hintergrund abspielt, möchten wir ein wenig Licht bringen.

Jeder Softwareentwickler kennt es und weiß darum: So gut wie keine Software ist vollkommen fehlerfrei und Fehler sind in aller Regel sehr versteckt und schwer zu finden. Um eben solche Fehler zu entdecken, gibt es Logdateien, in welche der Softwareentwickler an kritischen Stellen, während der Entwicklung oder gar im produktiven Einsatz der Software, Einträge machen kann, die ihm helfen etwaige Fehler zu finden.

Nun ist es so, dass bei aller Qualitätskontrolle und bei aller gebotenen Umsicht des oder der Softwareentwickler, auch nach Auslieferung einer Software noch Fehler im Programm enthalten sind. Gerade bei verteilten Anwendungen, wie es zum Beispiel bei Smartphones der Fall ist, kann der Softwareentwickler in der Regel nicht mal schnell auf den Bildschirm des Benutzers schauen. Die Vielzahl der unterschiedlichen, am Markt befindlichen Geräte, mit den einhergehenden Unterschieden in Hard- und Software, erhöhen darüber hinaus noch das Risiko von Fehlern. Gerade unter Android ist das ja ein an anderen Stellen oft diskutiertes Thema.

Der Android-Softwareentwickler bedient sich nun eines der wenigen Hilfsmittel, die ihm zur Verfügung stehen, um auch nach der Auslieferung seiner Anwendung im Fehlerfall an Informationen zu gelangen. An kritischen Stellen der App generiert er einen Logcat-Eintrag. Und ab hier beginnt nun das Damokles Schwert sich über dem Kopf des Benutzers bemerkbar zu machen.

Logcat

Das Logcat der Android-Smartphones ist ein sogenannter System-Logger, der zu jeder Zeit im Android-OS aktiv ist. Jede App und jeder Prozess, der auf dem Smartphone läuft, hat die Möglichkeit verschiedene Arten von Meldungen in dieses Log hineinzuschreiben. Für das Schreiben von Meldungen in das Logcat, ist unter Android keine besondere Berechtigung erforderlich.

Normalerweise sind die dort zu lesenden Meldungen sehr technisch und für den Benutzer meist auch nicht von Belang. Sie tragen auch in keiner Weise zur Funktion einer App bei, sie dienen im Normalfall nur den Entwicklern von Apps, um Fehler – die während des Betriebes auftreten – besser analysieren zu können. Mit Anwendungen wie aLogcat [1] schauen Sie selber dem System bei seiner Arbeit zu, doch was bedeuten die ganzen Ausgaben?

Abbildung 2: aLogcat zeigt Ihnen das gerade auflaufende Log Ihres Androiden an. Filter helfen dabei die Übersicht zu bewahren.
Abbildung 2: aLogcat zeigt Ihnen das gerade auflaufende Log Ihres Androiden an. Filter helfen dabei die Übersicht zu bewahren.

Abbildung 2: aLogcat zeigt Ihnen das gerade auflaufende Log Ihres Androiden an. Filter helfen dabei die Übersicht zu bewahren.
Abbildung 2: aLogcat zeigt Ihnen das gerade auflaufende Log Ihres Androiden an. Filter helfen dabei die Übersicht zu bewahren.

Man kann das Logcat theoretisch mit einer Überwachungskamera auf einer Autobahn vergleichen. Diese Kameras zeichnen einen gewissen Zeitraum lang alle Fahrzeuge auf, welche die Kamera passieren. Dabei werden eben die Dinge aufgezeichnet, die ein Auto von sich preisgibt, Kennzeichen, Farbe, Typ des Fahrzeugs, Anzahl der Fenster usw.

Schreibt nun ein Fahrzeugbesitzer auf sein Autodach mit weißer Farbe: "Mein Name ist Franz Müller", so wäre das in etwa vergleichbar mit einer Programmzeile wie zum Beispiel der Code-Zeile Log.i("Name des Besitzers:", "Mein Name ist Franz Müller"); der eben diesen Satz in das Logcat schreiben würde.

Loglevel

Das System kennt vier sogenannten LogLevel: Debug, Error, Info, Warn. Im Normalfall entscheidet der Entwickler selber, ob und was er mit welchem dieser Loglevel in das Logcat schreibt. Der Loglevel "Debug" bspw. enthält üblicherweise nur Ausgaben, die dem Entwickler während der Entwicklung Informationen darüber liefern, ob sich sein Applikations-Code so verhält, wie er es sich gedacht hat. Der Loglevel "Error" dagegen sollte nur dann verwendet werden, wenn wirklich ein Fehler im Programmablauf passiert.

Mit dem Loglevel "Warn" werden Meldungen klassifiziert, die zwar nicht unbedingt positiv sind, aber den Ablauf der Applikation im Normalfall nicht weiter stören. Der Loglevel "Info" letztendlich wird in der Regel verwendet, um Dinge zu informativen Zwecken im Logfile auszugeben, die möglicherweise auch anderen von Nutzen sein könnten. Zum Beispiel wäre die Information über die Dauer eines Downloads ein passender Eintrag in diese Kategorie.

Größe

Die Größe eines Logs ist beschränkt, kann aber auf verschiedenen Geräten variieren. Auf dem Samsung Galaxy Note etwa, ist das Logcat etwa 800 KByte groß. Auf anderen Geräten kann das um Einiges kleiner sein, je nach Hersteller und Speicher im Gerät sind unterschiedliche Speichergrößen möglich, laut Google beträgt die Standardgröße 64 KByte.

Als Anhaltspunkt gilt: In den etwa 800 KByte Logcat des Samsung Galaxy Note befinden sich etwa 7900 Logzeilen, wobei die maximale Länge einer Logzeile auf etwa vier KByte begrenzt ist. Mit der Android Debug Bridge (adb), aus dem Android-SDK [2], können Sie für Ihr Handy direkt auslesen, wie viel Speicher das System dem log zur Verfügung stellt.

$ adb logcat -g
/dev/log/main: ring buffer is 64Kb (63Kb consumed), max
entry is 4096b, max payload is 4076b
/dev/log/system: ring buffer is 64Kb (63Kb consumed), max
entry is 4096b, max payload is 4076b

Die Größenbeschränkung des Logcat ist insofern interessant, als dass Ereignisse oder Logzeilen irgendwann wieder aus dem Logcat verschwinden. Wenn man beispielsweise um genau 0:00 Uhr eine App startet, die sagen wir mal 40 Zeilen ins Logcat schreibt und danach nichts mehr am Smartphone macht, sind die Chancen, dass diese 40 Zeilen um 0:30 Uhr noch im Logcat enthalten sind relativ hoch.

Wurden in der Zwischenzeit jedoch mehrere Apps gestartet, die allesamt relativ viel ins Logcat schreiben oder das Betriebssystem veranlassen so etwas zu tun, dann kann es gut sein, dass die gesuchten Zeilen um 0:30 schon längst wieder im sich selbst überschreibenden Speicher (Ringpuffer) überschrieben wurden.

Inhalte

Im Grunde kann jede App, die vom Benutzer aufgerufen wird oder im Hintergrund läuft, auf das Logcat zugreifen. Darüber hinaus schreiben aber auch Systemprozesse in das Logcat hinein. Um dieses besser trennen zu können, ist das Logcat in eine zeitlich orientierte Zusammenfassung mindestens zweier Log-Kategorien aufgetrennt.

Nach main loggen sämtliche Apps und Anwendungsprozesse ihre Meldungen. Im Falle eines Galaxy Note stehen hier 512 KByte Speicher zur Verfügung. system ist – wie der Name schon vermuten lässt – Systemprozesse vorbehalten, das Note loggt hier nur 256 KByte mit. Die restlichen 30 KByte bestehen aus möglicherweise noch hinzugefügten Zeitangaben der jeweiligen Logs.

Gefahren

Das Logcat selber ist nicht gefährlich: Lediglich dann, wenn unachtsame Softwareentwickler oder Hersteller Informationen ins Logcat schreiben, die dort nichts verloren haben, kann der Datenschutz oder gar die Sicherheit Ihres Handys verletzt werden.

Gefährlich deswegen, weil dieses Logcat mit einer einzigen Berechtigung (READ_LOGS) durch wirklich jede App ausgelesen werden kann und diese Berechtigung bei vielen Anwendern auch kaum Beachtung findet. Wenn nun also eine solche App das Log ausliest und im Log zufällig gerade die Telefonnummer und die IMEI des aktuellen Benutzers enthalten sind, dann besteht durchaus die Möglichkeit, dass private Daten absichtlich, oder unabsichtlich in falsche Hände geraten.

Gefährlich auch deswegen, weil viele Hersteller sogenannte "Bloatware" auf den ausgelieferten Smartphones installieren, die vom Anwender nicht gelöscht werden kann. Wie die Erfahrung gezeigt hat, gibt es dabei genügend Software-Hersteller, die es mit der Privatsphäre ihrer Kunden nicht so genau nehmen.

Abbildung 3: Dass die Beta-Version einer App auf das Logcat zugreifen möchte ist verständlich, aber muss das auch eine fertige App?
Abbildung 3: Dass die Beta-Version einer App auf das Logcat zugreifen möchte ist verständlich, aber muss das auch eine fertige App?

Absichtlich meint hier, dass nicht jede App per se gute Absichten haben muss! Es gibt genug Malware – also böswillig entwickelte Apps – die sich teilweise die Finger nach so mancher im Logcat aufscheinender Information abschleckt. Mit unabsichtlich ist gemeint, wenn man in gutem Glauben ein Logcat an den Entwickler einer App oder einen Hersteller übermittelt, ohne zu ahnen, welche sensitiven Informationen man da unter Umständen weitergibt. Damit sollen nun keineswegs pauschal Softwareentwickler der böswilligen Nutzung von sensitiven, an sie übermittelten Informationen, beschuldigt werden. Vielmehr soll dies ein Aufruf an alle Android-Entwickler sein, genau hinzuschauen, welche Informationen unter Umständen ins Logcat gelangen und ob davon sensitive Informationen betroffen sein könnten.

Sensible Daten

Grundsätzlich gibt es auf jedem Android-Smartphone zahlreiche Daten und Informationen, die von Haus aus als sensibel zu betrachten sind. Hierzu zählen Dinge wie:

  • IMEI: Eine ID welche weltweit eindeutig ist und das Smartphone wiedererkennbar und verfolgbar macht.
  • IMSI: Eine ID welche als eindeutige ID im Netz der Telefonbetreiber verwendet wird und zur Identifizierung dient.
  • SIM-Seriennummer: Die Seriennummer der SIM-Karte.
  • Telefonnummer (MSISDN): Wer gibt schon gerne seine Handynummer raus.
  • Email-Adressen: Schon lange werden Email-Adressen zu Spamzwecken gesucht und verwendet.

Darüber hinaus können alle diese Daten natürlich auch miteinander in Verbindung gebracht werden. In Zeiten von Cloud-Computing ist das längst keine Hexerei mehr. Wenn dann womöglich von einer böswilligen App öfters die Positionsdaten des Benutzers klammheimlich auf dem Umweg über das Logcat ausgelesen werden und im Hintergrund, für den Benutzer unsichtbar an einen Server übermittelt werden, so entsteht ein Bewegungsprofil dieser Person.

Oder man wundert sich, warum man von einen Tag auf den anderen plötzlich unerwünschte Werbeanrufe aus Übersee bekommt, weil mit einem einzigen Aufruf einer vermeintlich harmlosen App, die lediglich die Berechtigung "READ_LOGS" und "INTERNET" benötigen, derartig sensible Daten an Dritte übermittelt werden können. Keine angenehme Vorstellung, dass solche Daten in Hände von Dritten gelangen, die damit nicht immer gutes im Sinn haben.

Kontrolle ist besser

Wie können Sie nun überprüfen, ob im Logcat Ihres Handys auch wirklich keine sensitive Informationen enthalten sind? Hierfür gibt es beispielsweise die App LogMan logcat Prüfung [3]. Diese kleine kostenlose App überprüft schnell und unkompliziert, ob IMEI, IMSI, SIM-Seriennummer, Telefonnummer, E-Mail-Adressen oder auch GPS-Daten im Logcat auftauchen.

Abbildung 4: Die Bedienung der LogMan logcat Prüfung ist einfach. App starten und das Log auf Auffälligkeiten prüfen lassen.
Abbildung 4: Die Bedienung der LogMan logcat Prüfung ist einfach. App starten und das Log auf Auffälligkeiten prüfen lassen.

Abbildung 5: Im Idealfall sollte Nichts beanstandet werden. In dem Fall haben die Entwickler, der von Ihnen genutzten Apps sauber gearbeitet.
Abbildung 5: Im Idealfall sollte Nichts beanstandet werden. In dem Fall haben die Entwickler, der von Ihnen genutzten Apps sauber gearbeitet.

Abbildung 6: Ein typischer Logcat Fund mit sensiblen Daten. Selbst die Google-Mail-App schreibt Adressen im Klartext in das Log.
Abbildung 6: Ein typischer Logcat Fund mit sensiblen Daten. Selbst die Google-Mail-App schreibt Adressen im Klartext in das Log.

Die Bedienung der Software ist eigentlich selbsterklärend und soll hier nicht weiter thematisiert werden. Abbildung 6 zeigt Ihnen als Beispiel den Fund von vertraulichen Daten wie IMEI und Email-Adressen im Logcat. Eventuell lohnt sich hier eine Anfrage beim Autor der Software, ob die Daten wirklich im Log auftauchen müssen.

Absichern

Man sollte generell alle Berechtigungen, die eine App anfordert, genau hinterfragen. Ein Android-Entwickler, der sich Gedanken um die Sicherheit seiner Benutzer macht, wird in der Regel schon im Market die angeforderten Berechtigungen erklären. Wenn Hinweise fehlen warum eine App Rechte einfordert, die sich nicht aus der Funktion der App erklären lassen, dann zögern Sie nicht den Entwickler anzusprechen. Im Google Play Store finden direkt eine E-Mail-Adresse des Entwicklers.

Ein weiteres Indiz sind die von anderen Benutzern abgegebenen Kommentare zu der jeweiligen App, ebenso wie die Anzahl der bereits erfolgten Downloads der Software. Ebenfalls sollte man es nach Möglichkeit vermeiden, Apps aus anderen Quellen als dem Google Play Store oder ähnlich vertrauenswürdigen Quellen zu installieren. Nur hier können Sie sich relativ sicher sein, dass die Apps vor der Publizierung geprüft wurden. Im Google Play Store scannt etwa der Dienst "Bouncer" regelmäßig alle eingestellten Apps auf auffällige Verhaltensweisen und Missbrauch.

Kommentiere den Artikel

Please enter your comment!
Please enter your name here