Google setzt sich dafür ein, die Rassengerechtigkeit für schwarze Gemeinschaften zu fördern. Siehe wie.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Best Practices für die App-Sicherheit

Dieser Abschnitt enthält Empfehlungen zur Gewährleistung der Sicherheit von Apps auf Android-Geräten.

Überprüfung des Quellcodes

Die Überprüfung des Quellcodes kann eine breite Palette von Sicherheitsproblemen erkennen, einschließlich der in diesem Dokument identifizierten. Android empfiehlt nachdrücklich sowohl die manuelle als auch die automatisierte Überprüfung des Quellcodes.

  • Befolgen Sie bei der Durchführung von Überprüfungen umfassende Sicherheitsrichtlinien, um die Abdeckung sicherzustellen. Verwenden Sie relevante interne oder externe Standards, um konsistente und vollständige Überprüfungen sicherzustellen.
  • Führen Sie mit dem Android SDK einen Linter wie den Android Studio-Linter für den gesamten App-Code aus und beheben Sie alle erkannten Probleme.
  • Analysieren Sie nativen Code mit einem automatisierten Tool, das Speicherverwaltungsprobleme wie Pufferüberläufe und Fehler nacheinander erkennen kann.
  • Das Android - Build - System unterstützt viele der LLVM sanitizers, wie AddressSanitizer und UndefinedBehaviorSanitizer , die zur Laufzeitanalyse von speicherbezogene Probleme verwendet werden können. In Kombination mit Fuzzing, das in Android über libFuzzer unterstützt wird , können Desinfektionsmittel ungewöhnliche Randfälle aufdecken, die einer weiteren Untersuchung bedürfen.
  • Ein sachkundiger Sicherheitsprüfer sollte Code mit höherem Risiko überprüfen, z. B. Krypto, Zahlungsverarbeitung und PII-Verarbeitung.

Automatisiertes Testen

Automatisierte Tests können dazu beitragen, eine Vielzahl von Sicherheitsproblemen zu erkennen, und sollten regelmäßig durchgeführt werden.

  • Führen Sie während des gesamten Entwicklungsprozesses regelmäßig die neueste Version von CTS aus , um Probleme frühzeitig zu erkennen und die Zeit bis zur Korrektur zu verkürzen. Android verwendet CTS als Teil der kontinuierlichen Integration in unseren automatisierten Erstellungsprozess, der mehrmals täglich erstellt wird.
  • Automatisieren Sie die Sicherheitstests von Schnittstellen, einschließlich Tests mit fehlerhaften Eingaben (Fuzz-Tests). Das Build-System von Android unterstützt libFuzzer zum Schreiben von Fuzz-Tests.

Scannen von Sicherheitslücken

Durch das Scannen von Sicherheitslücken kann sichergestellt werden, dass vorinstallierte Apps frei von bekannten Sicherheitslücken sind. Durch die erweiterte Erkennung können Zeit und Kosten reduziert werden, um diese Sicherheitsanfälligkeiten zu beheben und Risiken für Benutzer und Geräte zu vermeiden.

  • Scannen Sie alle vorinstallierten Apps mit einem branchenweit anerkannten Tool zum Scannen von App-Schwachstellen und beheben Sie erkannte Schwachstellen.

Potenziell schädliche Anwendungen

Es ist wichtig sicherzustellen, dass die auf Ihrem Gerät vorinstallierten Apps keine potenziell schädlichen Anwendungen (PHAs) sind. Sie sind für das Verhalten aller Apps verantwortlich, die auf Ihren Geräten enthalten sind. Scannen Sie vor dem Start des Geräts alle vorinstallierten Apps auf Schwachstellen.

Weitere Informationen zu PHAs und deren Bekämpfung durch Google im Play Store finden Sie in der Entwicklerdokumentation zu Google Play Protect .

App-Installation und Berechtigungen

Übermäßige Berechtigungen für vorinstallierte Apps können ein Sicherheitsrisiko darstellen. Beschränken Sie vorinstallierte Apps auf die erforderlichen Mindestberechtigungen und stellen Sie sicher, dass sie keinen Zugriff auf unnötige Berechtigungen oder Berechtigungen haben. App-Berechtigungen werden in der Datei AndroidManifest.xml beschrieben .

  • Gewähren Sie vorinstallierten Apps keine unnötigen Berechtigungen oder Berechtigungen. Überprüfen Sie Apps mit Systemberechtigungen gründlich, da sie möglicherweise über sehr vertrauliche Berechtigungen verfügen.
  • Stellen Sie sicher, dass alle angeforderten Berechtigungen für die Funktionalität dieser bestimmten App relevant und erforderlich sind.
  • Stellen Sie sicher, dass alle vorinstallierten Apps, die die INSTALL_PACKAGES Benutzer INSTALL_PACKAGES .
  • Stellen Sie sicher, dass der Entwickler vertraglich verpflichtet ist, keine Apps als UID 0 zu installieren.
  • Bewerten Sie die im Manifest aller Apps deklarierten Berechtigungen, die über das Netzwerk des Entwicklers installiert werden sollen.
  • Stellen Sie sicher, dass der Entwickler vertraglich verpflichtet ist, alle Download-URLs von Auto-Updater- und Installer-Apps mit der Google Safe Browsing-API zu scannen, bevor Sie Apps auf dem Gerät bereitstellen .

App-Signatur

App-Signaturen spielen eine wichtige Rolle für die Gerätesicherheit und werden für Berechtigungsprüfungen und Software-Updates verwendet. Bei der Auswahl eines Schlüssels zum Signieren von Apps ist zu berücksichtigen, ob eine App nur auf einem einzelnen Gerät oder auf mehreren Geräten gemeinsam verfügbar ist.

  • Stellen Sie sicher, dass Apps nicht mit einem öffentlich bekannten Schlüssel wie dem AOSP-Entwicklerschlüssel signiert sind.
  • Stellen Sie sicher, dass die zum Signieren von Apps verwendeten Schlüssel auf eine Weise verwaltet werden, die den branchenüblichen Praktiken für den Umgang mit vertraulichen Schlüsseln entspricht, einschließlich eines Hardware-Sicherheitsmoduls (HSM), das einen eingeschränkten, überprüfbaren Zugriff bietet.
  • Stellen Sie sicher, dass Apps nicht mit dem Plattformschlüssel signiert sind. Auf diese Weise erhält eine App Zugriff auf Plattformsignaturberechtigungen, die sehr leistungsfähig sind und nur von Komponenten des Betriebssystems verwendet werden dürfen. System-Apps sollten privilegierte Berechtigungen verwenden.
  • Stellen Sie sicher, dass Apps mit demselben Paketnamen nicht mit unterschiedlichen Schlüsseln signiert sind. Dies tritt häufig beim Erstellen einer App für verschiedene Geräte auf, insbesondere bei Verwendung des Plattformschlüssels. Wenn die App geräteunabhängig ist, verwenden Sie auf allen Geräten denselben Schlüssel. Wenn die App gerätespezifisch ist, erstellen Sie eindeutige Paketnamen pro Gerät und Schlüssel.

Apps und Prozesse isolieren

Das Android- Sandbox-Modell bietet zusätzliche Sicherheit für Apps und Prozesse, wenn es richtig verwendet wird.

Wurzelprozesse isolieren

Root-Prozesse sind das häufigste Ziel von Eskalationsangriffen auf Berechtigungen. Durch die Reduzierung der Anzahl der Root-Prozesse wird das Risiko einer Eskalation von Berechtigungen verringert.

  • Stellen Sie sicher, dass auf den Geräten der minimal erforderliche Code als Root ausgeführt wird. Verwenden Sie nach Möglichkeit einen regulären Android-Prozess anstelle eines Root-Prozesses. Wenn ein Prozess als Root auf einem Gerät ausgeführt werden muss, dokumentieren Sie den Prozess in einer AOSP-Funktionsanforderung, damit er öffentlich überprüft werden kann.
  • Wenn möglich, sollte der Root-Code von nicht vertrauenswürdigen Daten isoliert und über Interprozesskommunikation (IPC) abgerufen werden. Reduzieren Sie beispielsweise die Root-Funktionalität auf einen kleinen Dienst, auf den über Binder zugegriffen werden kann, und stellen Sie den Dienst mit Signaturberechtigung einer App mit geringen oder keinen Berechtigungen zur Verarbeitung des Netzwerkverkehrs zur Verfügung.
  • Root-Prozesse dürfen einen Netzwerk-Socket nicht abhören.
  • Root-Prozesse dürfen keine allgemeine Laufzeit enthalten (z. B. eine Java-VM).

System-Apps isolieren

Im Allgemeinen sollten vorinstallierte Apps nicht mit der UID (Shared System Unique Identifier) ​​ausgeführt werden. Wenn eine App die gemeinsam genutzte UID des Systems oder eines anderen privilegierten Dienstes (z. B. Telefon) verwenden muss, sollte die App keine Dienste, Rundfunkempfänger oder Inhaltsanbieter exportieren, auf die von Benutzern installierte Apps von Drittanbietern zugreifen können .

  • Stellen Sie sicher, dass auf den Geräten der minimal erforderliche Code als System ausgeführt wird. Verwenden Sie nach Möglichkeit einen Android-Prozess mit einer eigenen UID, anstatt die System-UID wiederzuverwenden.
  • Wenn möglich, sollte der Systemcode von nicht vertrauenswürdigen Daten isoliert werden und IPC nur anderen vertrauenswürdigen Prozessen aussetzen.
  • Systemprozesse dürfen einen Netzwerk-Socket nicht abhören. Dies ist eine CTS-Anforderung.

Prozesse isolieren

Die Android Application Sandbox bietet Apps die Erwartung, von anderen Prozessen auf dem System isoliert zu sein, einschließlich Root-Prozessen und Debuggern. Sofern das Debuggen nicht speziell von der App und dem Benutzer aktiviert wird, sollte keine App diese Erwartung verletzen.

  • Stellen Sie sicher, dass Root-Prozesse nicht auf Daten in einzelnen App-Datenordnern zugreifen, es sei denn, Sie verwenden eine dokumentierte Android-Debugging-Methode.
  • Stellen Sie sicher, dass Root-Prozesse nicht auf den Speicher von Apps zugreifen, es sei denn, Sie verwenden eine dokumentierte Android-Debugging-Methode.
  • Stellen Sie sicher, dass die Geräte keine App enthalten, die auf Daten oder Speicher anderer Apps oder Prozesse zugreift.