Android-GPU-Sicherheitshärtung: Angriffsfläche mit SELinux reduzieren
Google und Arm stärken die Sicherheit von Mali-GPUs in Android-Geräten durch SELinux-basierte IOCTL-Restriktionen. Erfahren Sie, wie die Angriffsfläche minimiert wird.
Android-GPU-Sicherheitshärtung: Eine gemeinsame Initiative zur Reduzierung der Angriffsfläche
Das Android Security and Privacy Team von Google hat in Zusammenarbeit mit Arm neue Sicherheitsmaßnahmen zur Härtung der Mali-GPU implementiert – einer Komponente, die in Milliarden von Android-Geräten weltweit eingesetzt wird. Ziel der Initiative ist es, die Angriffsfläche des GPU-Treibers zu verringern, indem der Zugriff auf risikoreiche IOCTLs (Input/Output Controls) mithilfe von SELinux (Security-Enhanced Linux)-Richtlinien eingeschränkt wird.
Warum GPU-Sicherheit entscheidend ist
GPUs sind aufgrund ihrer Komplexität und ihres privilegierten Systemzugriffs zu einem bevorzugten Ziel für Angreifer geworden. Seit 2021 zielen die meisten Exploits, die auf Android-Kernel-Treiber basieren, auf GPUs ab – insbesondere auf die Schnittstelle zwischen dem User-Mode Driver (UMD) und dem Kernel-Mode Driver (KMD). Böswillige Eingaben können Schwachstellen in dieser Schnittstelle ausnutzen, was zu Speicherbeschädigungen (Memory Corruption) und Systemkompromittierungen führt.
Technischer Ansatz: Einschränkung von GPU-IOCTLs mit SELinux
Das Android Red Team und Arm haben die Mali-GPU-IOCTLs in drei Kategorien eingeteilt:
- Unprivilegierte IOCTLs – Für den normalen Betrieb erforderlich, zugänglich für alle Anwendungen.
- Instrumentierungs-IOCTLs – Werden für Debugging und Profiling verwendet, eingeschränkt auf
shell- oderdebuggable-Anwendungen. - Eingeschränkte IOCTLs – Veraltet oder nur für die Entwicklung, in Produktionsumgebungen blockiert.
Um diese Einschränkungen durchzusetzen, hat Google einen stufenweisen SELinux-Richtlinien-Rollout implementiert, um Störungen zu minimieren:
- Opt-In-Richtlinie – Zunächst auf ausgewählte System-Apps getestet, unter Verwendung eines neuen
gpu_harden-SELinux-Attributs. - Opt-Out-Richtlinie – Standardmäßig angewendete Härtung, wobei Entwickler Einschränkungen umgehen können durch:
- Geräte mit Root-Zugriff
android:debuggable="true"im App-Manifest- Permanente SELinux-Richtlinienausnahmen
Implementierungsleitfaden für OEMs und Entwickler
Google hat einen Schritt-für-Schritt-Leitfaden für Partner bereitgestellt, um ähnliche Härtungsmaßnahmen zu übernehmen:
1. Nutzung des plattformweiten Härtungsmakros
Ein neues Makro in system/sepolicy/public/te_macros ermöglicht gerätespezifisches IOCTL-Filtering:
- Erlaubt unprivilegierte IOCTLs für alle Anwendungen (
appdomain). - Beschränkt Instrumentierungs-IOCTLs auf Debugging-Tools (
shell,runas_app). - Blockiert veraltete IOCTLs basierend auf der Ziel-SDK-Version.
2. Definition gerätespezifischer IOCTL-Listen
OEMs müssen eine ioctl_macros-Datei im SELinux-Richtlinienverzeichnis ihres Geräts erstellen und die IOCTLs kategorisieren (z. B. mali_production_ioctls, mali_instrumentation_ioctls).
Beispiel:
define(`unpriv_gpu_ioctls', `0x0000, 0x0001, 0x0002')
define(`restricted_ioctls', `0x1110, 0x1111, 0x1112')
define(`instrumentation_gpu_ioctls', `0x2220, 0x2221, 0x2222')
Die offizielle IOCTL-Kategorisierung von Arm ist in ihrer r54p2-GPU-Dokumentation verfügbar.
3. Anwendung der Richtlinie auf das GPU-Gerät
Erstellen Sie eine gpu.te-Datei im SELinux-Richtlinienverzeichnis des Geräts und rufen Sie das Plattformmakro mit den definierten IOCTL-Listen auf.
4. Testen, Verfeinern und Durchsetzen
Folgen Sie den Best Practices für iterative SELinux-Richtlinienentwicklung und prüfen Sie Ablehnungsprotokolle (Denial Logs), um sicherzustellen, dass keine legitimen Anwendungen beeinträchtigt werden.
Auswirkungen und zukünftige Perspektiven
Diese Härtungsmaßnahme reduziert die Angriffsfläche von Mali-GPUs und schützt Nutzer vor bekannten und unbekannten Schwachstellen. Durch die Unerreichbarkeit von Schwachstellen bietet dieser Ansatz langfristige Sicherheitsvorteile. Google fordert OEMs auf, diese Maßnahmen zu übernehmen, um die GPU-Sicherheit im gesamten Android-Ökosystem zu stärken.
Offizielle Dokumentation
Danksagungen
Besonderer Dank gilt Jeffrey Vander Stoep für seine Beiträge zu dieser Initiative.