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

Sicherheitsverbessertes Linux in Android

Als Teil des Android- Sicherheitsmodells verwendet Android Security-Enhanced Linux (SELinux), um die obligatorische Zugriffskontrolle (MAC) für alle Prozesse zu erzwingen, auch für Prozesse, die mit Root- / Superuser-Berechtigungen (Linux-Funktionen) ausgeführt werden. Viele Unternehmen und Organisationen haben zur SELinux-Implementierung von Android beigetragen. Mit SELinux kann Android Systemdienste besser schützen und einschränken, den Zugriff auf Anwendungsdaten und Systemprotokolle steuern, die Auswirkungen schädlicher Software verringern und Benutzer vor potenziellen Codefehlern auf Mobilgeräten schützen.

SELinux arbeitet nach dem Prinzip der Standardverweigerung: Alles, was nicht ausdrücklich erlaubt ist, wird abgelehnt. SELinux kann in zwei globalen Modi betrieben werden:

  • Zulassungsmodus , in dem Berechtigungsverweigerungen protokolliert, aber nicht erzwungen werden.
  • Erzwingungsmodus , in dem Berechtigungsverweigerungen sowohl protokolliert als auch erzwungen werden.

Android enthält SELinux im Durchsetzungsmodus und eine entsprechende Sicherheitsrichtlinie, die standardmäßig in AOSP funktioniert. Im Erzwingungsmodus werden unzulässige Aktionen verhindert und alle versuchten Verstöße werden vom Kernel in dmesg und logcat . Bei der Entwicklung sollten Sie diese Fehler verwenden, um Ihre Software- und SELinux-Richtlinien zu verfeinern, bevor Sie sie erzwingen. Weitere Informationen finden Sie unter Implementieren von SELinux .

SELinux unterstützt auch einen domänenfreien Modus, in dem bestimmte Domänen (Prozesse) zulässig gemacht werden können, während der Rest des Systems in den globalen Durchsetzungsmodus versetzt wird. Eine Domäne ist einfach eine Bezeichnung, die einen Prozess oder eine Reihe von Prozessen in der Sicherheitsrichtlinie identifiziert, wobei alle mit derselben Domäne gekennzeichneten Prozesse von der Sicherheitsrichtlinie identisch behandelt werden. Der zulässige Modus pro Domäne ermöglicht die schrittweise Anwendung von SELinux auf einen immer größeren Teil der System- und Richtlinienentwicklung für neue Dienste (während der Rest des Systems weiterhin durchgesetzt wird).

Hintergrund

Das Android-Sicherheitsmodell basiert teilweise auf dem Konzept von Anwendungssandboxen . Jede Anwendung wird in einer eigenen Sandbox ausgeführt. Vor Android 4.3 wurden diese Sandboxen durch die Erstellung einer eindeutigen Linux-UID für jede Anwendung zum Zeitpunkt der Installation definiert. Android 4.3 und höher verwendet SELinux, um die Grenzen der Sandbox für Android-Anwendungen weiter zu definieren.

In Android 5.0 und höher wird SELinux vollständig durchgesetzt, wobei auf der zulässigen Version von Android 4.3 und der teilweisen Durchsetzung von Android 4.4 aufgebaut wird. Mit dieser Änderung verschoben Android von Durchsetzung auf eine begrenzte Anzahl von entscheidender Domänen ( installd , netd , vold und zygote ) , um alles (mehr als 60 Domains). Speziell:

  • In Android 5.x und höher befindet sich alles im Durchsetzungsmodus.
  • In der init Domäne sollten keine anderen Prozesse als init werden.
  • Jede generische Ablehnung (für ein block_device , socket_device , default_service ) gibt an, dass das Gerät eine spezielle Domäne benötigt.

Android 6.0 hat das System gehärtet, indem es die Zulässigkeit unserer Richtlinien verringert hat, um eine bessere Isolation zwischen Benutzern, IOCTL-Filterung, eine geringere Bedrohung durch exponierte Dienste, eine weitere Verschärfung der SELinux-Domänen und einen extrem eingeschränkten /proc Zugriff zu ermöglichen.

Android 7.0 hat die SELinux-Konfiguration aktualisiert, um die Anwendungssandbox weiter zu sperren und die Angriffsfläche zu reduzieren. Diese Version zerlegte auch den monolithischen Mediaserver-Stack in kleinere Prozesse, um den Umfang ihrer Berechtigungen zu verringern. Weitere Informationen finden Sie unter Schützen von Android mit mehr Linux-Kernel-Schutzmechanismen und Härten des Medienstapels .

Android 8.0 hat SELinux für die Verwendung mit Treble aktualisiert, wodurch der Code des untergeordneten Anbieters vom Android-Systemframework getrennt wird. In dieser Version wurde die SELinux-Richtlinie aktualisiert, damit Gerätehersteller und SOC-Anbieter ihre Teile der Richtlinie aktualisieren, ihre Images ( vendor.img , boot.img usw.) boot.img und diese Images dann unabhängig von der Plattform aktualisieren können oder umgekehrt.

Auf dem Gerät kann zwar eine höhere / neuere Plattformversion (Framework) ausgeführt werden, der umgekehrte Fall wird jedoch nicht unterstützt. Die Hersteller-Images ( vendor.img/odm.img ) dürfen keine neuere Version als die Plattform ( system.img ) haben. Eine neuere Plattformversion kann daher zu SELinux-Kompatibilitätsproblemen führen, da die Plattform-SELinux-Richtlinie eine neuere Version aufweist als die SELinux-Teile der Richtlinie des Anbieters. Das Android 8.0-Modell bietet eine Methode, um die Kompatibilität beizubehalten und unnötige gleichzeitige OTAs zu vermeiden.

Zusätzliche Ressourcen

Hilfe zum Erstellen nützlicher SELinux-Richtlinien finden Sie in den folgenden Ressourcen: