Vorwort
In der Vergangenheit bin ich auf einige Anwendungen gestoßen, bei denen Logcat vertrauliche Informationen druckt, darunter unter anderem Kontokennwörter, Cookie-Anmeldeinformationen oder einige vertrauliche geheime Schlüssel. Das Folgende ist eine objektive Aufzeichnung der Gefahren.
verwandte Informationen
1. logcat
Logcat ist ein vom Android-System bereitgestelltes Protokollierungstool. Es hilft Entwicklern, Probleme in Anwendungen wie Abstürze, Speicherverluste und Leistungsprobleme zu diagnostizieren. logcat erfasst Protokollereignisse, indem es sich den Kernelpuffer des Android-Systems und die Protokollausgabe der Anwendung ansieht.
Technisch gesehen wird Logcat über einen Hintergrunddienst namens LogcatService implementiert. Wenn eine Anwendung auf einem Gerät ausgeführt wird, generiert sie Protokollnachrichten und sendet diese an den Logger des Systems . Diese Nachrichten enthalten ereignisbezogene Details wie Ereignistyp, Zeitstempel, Prozess-ID und Tags.
Logcat kann Protokollinformationen nach verschiedenen Filtern filtern und anzeigen. Sie können die Logcat-Ausgabe mit dem Befehlszeilentool oder dem Logcat-Fenster von Android Studio anzeigen. Diese Tools bieten verschiedene Filteroptionen, z. B. das Filtern von Protokollnachrichten nach Tag, Ebene, Prozess-ID usw.
2. Systemlogger
Alle Anwendungen können Logcat verwenden, um Protokollinformationen aufzuzeichnen und darauf zuzugreifen. Allerdings kann jede Anwendung nur auf ihre eigenen Protokollinformationen zugreifen und nicht auf die Protokollinformationen anderer Anwendungen, da das Android-System den Sicherheitsmechanismus des Linux-Kernels nutzt, um die Zugriffsberechtigungen von Anwendungen einzuschränken.
Im Android-System wird jede Anwendung in einem unabhängigen Prozess ausgeführt und jeder Prozess verfügt über einen eigenen Protokollpuffer. Anwendungen können von Android bereitgestellte Klassen verwenden, Log
um Protokollinformationen in ihren eigenen Protokollpuffer zu schreiben.
3. ADB-Logcat
Durch Eingabe des Befehls in der Befehlszeile adb logcat
können die Protokollinformationen aller Anwendungen angezeigt werden, da dieser Befehl das Tool Android Debug Bridge (ADB) verwendet, das einen privilegierten Modus bietet, der Ihnen den Zugriff auf alle Daten und Dateien auf dem Gerät, einschließlich anderer Anwendungen, ermöglicht. Programmprotokollinformationen.
4. SELinux
Der Sicherheitsmechanismus des Android-Systems hängt eng mit dem Sicherheitsmodul SELinux (Security-Enhanced Linux) zusammen. SELinux ist ein auf dem Linux-Kernel basierendes Mandatory Access Control (MAC)-System, das eine fein abgestufte Kontrolle und Beschränkungen des Zugriffs auf Systemressourcen (wie Dateien, Prozesse und Netzwerke) durchführen und so die Systemsicherheit und -stabilität verbessern kann.
Im Android-System ist das SELinux-Sicherheitsmodul standardmäßig aktiviert und SELinux-Richtlinien werden zum Steuern und Verwalten von Anwendungsberechtigungen verwendet. Jeder Anwendung wird eine eindeutige SELinux-Domäne zugewiesen, um Isolation und Sicherheit zwischen Anwendungen zu erreichen. Eine Anwendung kann nur auf Ressourcen innerhalb ihrer eigenen SELinux-Domäne zugreifen und nicht auf andere Anwendungen und Systemressourcen.
5.READ_LOGS
READ_LOGS
Es handelt sich um eine Systemberechtigung im Android-System, die es Anwendungen ermöglicht, Systemprotokollinformationen zu lesen.
In Android 4.1 und höher verfügt Google READ_LOGS
über eingeschränkte Berechtigungen, und nur root
Benutzer und Systemanwendungen mit Berechtigungen können diese Berechtigung erhalten. Dadurch soll die Sicherheit des Systems weiter verbessert und verhindert werden, dass bösartige Anwendungen vertrauliche Informationen abrufen und Sicherheitsprobleme verursachen.
Wenn Sie ein Entwickler sind, der READ_LOGS
die Berechtigung zum Debuggen und Debuggen Ihrer Anwendung benötigt, können Sie AndroidManifest.xml
den Dateien Ihrer Anwendung den folgenden Code hinzufügen:
<uses-permission android:name="android.permission.READ_LOGS" />
READ_LOGS
Es ist jedoch wichtig zu beachten, dass eine Ausnahme ausgelöst wird, wenn die Anwendung zur Laufzeit Berechtigungen anfordert, wenn die Anwendung nicht über ein vom System signiertes Zertifikat verfügt SecurityException
.
6. Systemsignaturzertifikat
Das systemsignierte Zertifikat wird vom Entwickler oder Gerätehersteller des Android-Systems ausgestellt und dient zum Signieren und Autorisieren von Systemanwendungen. Dieses Zertifikat wird normalerweise vom Gerätehersteller oder ROM-Entwickler gehalten.
Spezifische Schritte
- Generieren Sie öffentliche und private Schlüssel
- Öffentlichen Schlüssel exportieren
assets
Betten Sie den öffentlichen Schlüssel in den Android-Quellcode ein (er kann beispielsweise im Verzeichnis oder Verzeichnis der Anwendung abgelegtres/raw
und dann durch den Code gelesen werden).
19.00 Uhr Stipendium
pm grant
ist ein Android-Systembefehl, der zum Erteilen anwendungsspezifischer Berechtigungen verwendet wird. Dieser Befehl muss auf einem Gerät mit Root-Berechtigungen ausgeführt werden.
Durch Ausführen pm grant
des Befehls können Sie die Berechtigungen der angegebenen Anwendung auf „Zulassen“ oder „Verweigern“ festlegen.
Zum Beispiel
pm grant com.example android.permission.READ_LOGS
pm grant
Es ist wichtig zu beachten, dass Sie zwar Befehle verwenden können, um App- READ_LOGS
Berechtigungen zu erteilen, in Android 4.1 und höher jedoch nur systemsignierte Apps diese Berechtigung anfordern und erhalten können. Wenn Ihre Anwendung daher nicht über ein vom System signiertes Zertifikat verfügt, kann sie die Systemprotokollinformationen nicht lesen, selbst wenn Sie ihr über den Befehl die Berechtigung pm grant
erteilen .READ_LOGS
8. /system/bin/logcat
chmod 04755 /system/bin/logcat
logcat
Wird verwendet, um die Berechtigungen des Systemprotokolltools zu ändern , sodass normale Anwendungen auch Systemprotokollinformationen lesen können. Dieser Befehl muss auf einem Gerät mit Root-Berechtigungen ausgeführt werden.
Nachwort
In diesem Artikel werden die Gefahren des Verlusts vertraulicher Logcat-Informationen detailliert beschrieben. Es ist ersichtlich, dass in der aktuellen Android-Umgebung das Risiko von Remote-Angriffen tatsächlich relativ gering ist. Die meisten Logcat-Lecks können durch Vorgänge auf Systemebene oder physische Angriffe ausgenutzt werden, es bestehen jedoch immer noch bestimmte Risiken, und es wird empfohlen, diese zu beheben.