Das Ausführen von Code im "Kernel-Space" bedeutet, dass es im Ring-0-Space ausgeführt wird. Mit anderen Worten, es ist die strikte Definition von „totaler Kontrolle“.
Die einzige Ausnahme wäre, wenn Sie einen Hypervisor ausführen. In einem solchen Fall würde Ihnen das Ausführen von Code in Ring 0 des virtualisierten Betriebssystems "nur" die volle Kontrolle über das virtualisierte Gerät geben, nicht den Hypervisor (der angeblich in Ring -1 läuft), auf dem es läuft. Sie würden einen separaten Escape-Exploit benötigen, um dorthin zu gelangen.
Würde das einem Angreifer die vollständige Kontrolle über das Telefon geben? Könnten sie beispielsweise einen Keylogger oder andere Malware installieren?
Das ist möglich. Da alle Berechtigungsprüfungen (d. h. Dateizugriff, Zugriff auf die Tastatur ...) innerhalb des Kernels durchgeführt werden, könnte Code, der innerhalb des Kernels ausgeführt wird, die erforderlichen Aktionen einfach direkt aufrufen, ohne diese Prüfungen auszuführen.
Würde es einem kompromittierten Gerät ermöglichen, auf die gleiche Weise einen OTA-Angriff auf andere Geräte durchzuführen (und zu einem Wurm zu werden)?
Es ist möglich, dass einige Aktionen Kernel-Zugriff benötigen, wie die Fähigkeit, manipulierte Netzwerkpakete zu erstellen, die verwendet werden können, um ein anderes Gerät zu kompromittieren. Das bedeutet aber nicht, dass Sie für solche Angriffe immer Kernel-Zugriff benötigen, d.h. Root-Zugriff reicht normalerweise aus und manchmal kann dies sogar ein normaler Benutzerprozess tun, je nach genauem Angriff.
Werden diese Bedenken durch andere Sicherheitsfunktionen wie SELinux, dm-verity usw. gemildert?
Sobald der Angreifer Zugriff auf den Kernel hat, helfen diese Techniken nicht weiter. Aber sie könnten helfen, damit der Angreifer keinen Kernel-Zugriff bekommt. Aber ob sie helfen oder nicht, hängt vom genauen Angriffsvektor ab. Sie helfen beispielsweise nicht im Fall der kürzlich aufgetretenen Schwachstelle im Broadcom-Netzwerktreiber, die durch bestimmte Netzwerkpakete ausgelöst werden könnte.