
Android-Kernel-Exploit für CVE-2019-2215, ein Use-After-Free im Binder-Treiber, der eine Rechteausweitung auf Root durch Speicherkorruption und Cred-Patching auf verwundbaren ARM64-Geräten ermöglicht.
CVE-2019-2215 — Android Binder Use-After-Free Privilege Escalation Beschreibung
Der Exploit für die Schwachstelle CVE-2019-2215 — Use-After-Free im Binder-Treiber des Android-Kernels. Ermöglicht die Erhöhung von Berechtigungen auf Root-Level auf verwundbaren Geräten. Schwachstelle
CVE-2019-2215 — Use-After-Free in binder_thread bei der Arbeit mit epoll. Der Fehler entsteht durch eine fehlerhafte Verarbeitung der Warteschlange in binder_poll(), was zu einer Möglichkeit der Überschreibung des Kernel-Speichers führt. Funktionsweise
Pointer-Leak (leakTaskStruct) Ein Race-Condition zwischen epoll und binder führt zum Lesen des Pointers auf task_struct des aktuellen Prozesses über writev/pipe.
Überschreibung von addr_limit (clobberAddrLimit) Derselbe Race-Condition wird verwendet, um 0xFFFFFFFFFFFFFFFE in das addr_limit-Feld der task_struct zu schreiben, was den Zugriff auf den gesamten Kernel-Speicher öffnet.
Patchen von cred (patchCred) Über eine Pipe (kernel_fd) wird die cred-Struktur des aktuellen Prozesses gelesen und überschrieben:
Deaktivieren von SELinux (disableSELinuxEnforcing) Über nsproxy wird die Basisadresse des Kernels berechnet und das Flag selinux_enforcing auf null gesetzt.
Starten einer Shell mit Root-Rechten: system("/bin/sh")
Anforderungen
Gerät mit einer verwundbaren Android-Version (vor dem Patch vom Oktober 2019)
Architektur ARM64
Vorhandensein von /dev/binder
Bei der Kompilierung müssen Kernel-Symbole angegeben werden:
Symbole können aus /proc/kallsyms auf dem Zielsystem bezogen werden.