/Android O führt einen Seccomp-Filter ein

Android O führt einen Seccomp-Filter ein


Das im Linux-Kernel verankerte Secure-Computing-Konzept soll einige Systemaufrufe blocken und damit Schadsoftware das Leben schwerer machen. Es ist allerdings zumindest in seiner ersten Ausprägung recht großzügig ausgelegt.

Das Android-Entwickler-Team hat angekündigt, dass Android O einen Seccomp-Filter an Bord haben wird. Er sitzt im Systemprozess Zygote und ist damit fester Bestand aller Android-Anwendungen. Daher hat das Team wohl besonders darauf geachtet, dass vorhandene Apps weiterhin laufen. Der Seccomp-Filter erlaubt alle Systemaufrufe, die über die C-Laufzeitumgebung Bionic erfolgen und in bionic/libc/SYSCALLS.TXT definiert sind, Syscalls zum Booten von Android und solche, die von beliebten Android-Apps verwendet werden. Ob Letzteres zutrifft, bestimmt Googles Full App Compatibility Suite.

Der Filter nimmt sich also recht großzügig aus, blockt aber wohl bestimmte Systemaufrufe, die bereits bei einigen Angriff zum Einsatz kamen. Der Blogbeitrag listet als Beispiel swapon/swapoff. Insgesamt sperrt er jedoch lediglich 17 von 271 der ARM64- und 70 von 364 in ARM-Syscalls.

Seccomp steht für Secure Computing und ist eine Sicherheitserweiterung des Linux-Kernels, die für einzelne Threads die erlaubten Systemaufrufe einschränkt. Sobald der so überwachte Thread versucht, einen anderen Syscall abzusetzen, beendet ihn das System. Ursprünglich war vorgesehen, dass Threads lediglich über zuvor geöffnete Datei-Handles lesen und schreiben und sich selbst über exit beziehungsweise sigreturn beenden dürfen. Später kam jedoch die Option hinzu, Systemaufrufe über einen Broker abzusetzen, der sie mit einer Liste erlaubter Funktionen vergleicht.

Entwickler sollten ihre Anwendungen mit Android O testen und dabei auf Abstürze aufgrund von unerlaubten Systemaufrufen achten. Im Log finden sie den Verweis auf Seccomp:

Cause: seccomp prevented call to disallowed system call (XYZ)

Um zu erkennen, ob tatsächlich Seccomp für das unerwartete Beenden der App verantwortlich ist, lässt sich im Debugger die Policy folgendermaßen deaktivieren:

adb shell setenforce 0 && adb stop && adb start

Weitere Details und Hinweise für Entwickler lassen sich dem Android-Developers-Blog entnehmen.


(rme)