
Proof-of-Concept-Exploit für CVE-2019-2215, eine Use-After-Free-Sicherheitslücke im Android-Binder-Treiber, die auf verwundbaren Geräten eine lokale Privilegienausweitung ermöglicht.
Das folgende Problem besteht im android-msm-wahoo-4.4-pie-Zweig von https://android.googlesource.com/kernel/msm (und möglicherweise anderen):
Es gibt einen Use-After-Free des wait-Mitglieds in der binder_thread-Struktur im Binder-Treiber unter /drivers/android/binder.c.
Wie im Upstream-Commit beschrieben: „binder_poll() gibt die waitqueue thread->wait zurück, auf die für Arbeit geschlafen werden kann. Wenn ein Thread, der epoll verwendet, explizit mit BINDER_THREAD_EXIT beendet wird, wird die waitqueue freigegeben, aber niemals aus der entsprechenden epoll-Datenstruktur entfernt. Wenn der Prozess anschließend beendet wird, versucht der epoll-Bereinigungscode, auf die Waitlist zuzugreifen, was zu einem Use-After-Free führt.“
Der folgende Proof-of-Concept zeigt den UAF-Absturz in einem Kernel-Build mit KASAN (aus dem ursprünglichen Upstream-Bugreport unter https://lore.kernel.org/lkml/[email protected]/): #include <fcntl.h> #include <sys/epoll.h> #include <sys/ioctl.h> #include <unistd.h>
#define BINDER_THREAD_EXIT 0x40046208ul
int main()
{
int fd, epfd;
struct epoll_event event = { .events = EPOLLIN };
fd = open("/dev/binder0", O_RDONLY);
epfd = epoll_create(1000);
epoll_ctl(epfd, EPOLL_CTL_ADD, fd, &event);
ioctl(fd, BINDER_THREAD_EXIT, NULL);
}
Dieses Problem wurde im Dezember 2017 im 4.14 LTS-Kernel [1], AOSP android 3.18-Kernel [2], AOSP android 4.4-Kernel [3] und AOSP android 4.9-Kernel [4] behoben, aber das Pixel 2 mit dem neuesten Sicherheitsbulletin ist basierend auf der Quellcode-Überprüfung immer noch anfällig.
Andere Geräte, die basierend auf der Quellcode-Überprüfung anfällig erscheinen, sind (sofern nicht anders angegeben, bezogen auf 8.x-Versionen):
Wir haben Hinweise, dass dieser Fehler in freier Wildbahn ausgenutzt wird. Daher unterliegt dieser Fehler einer 7-tägigen Offenlegungsfrist. Nach Ablauf von 7 Tagen oder nachdem ein Patch breit verfügbar gemacht wurde (je nachdem, was früher eintritt), wird der Fehlerbericht für die Öffentlichkeit sichtbar.
Bestätigt, dass dieser Proof-of-Concept auf Pixel 2 mit Build walleye_kasan-userdebug 10 QP1A.191105.0035899767 funktioniert und einen KASAN-Absturz verursacht. Proof-of-Concept-C-Code und new.out angehängt. KASAN-Konsolenausgabe angehängt.
Ich habe technische Informationen von TAG und externen Parteien über einen Android-Exploit erhalten, der der NSO-Gruppe zugeschrieben wird. Diese Details enthielten Fakten über den Fehler und die Exploit-Methodik, einschließlich, aber nicht beschränkt auf:
Anhand dieser Details habe ich festgestellt, dass der verwendete Fehler mit ziemlicher Sicherheit der in diesem Bericht ist, da ich andere potenzielle Kandidaten durch den Vergleich von Patches ausgeschlossen habe. Eine detailliertere Erklärung dieses Fehlers und der Methodik zu seiner Identifizierung werde ich in einem zukünftigen Blogbeitrag schreiben, wenn ich Zeit finde.
Wir haben derzeit kein Beispiel des Exploits. Ohne Beispiele konnten wir weder den Zeitplan noch die Nutzlast bestätigen.
Der Fehler ist eine lokale Privilegieneskalationsschwachstelle, die eine vollständige Kompromittierung eines anfälligen Geräts ermöglicht. Wenn der Exploit über das Web ausgeliefert wird, muss er nur mit einem Renderer-Exploit kombiniert werden, da diese Schwachstelle durch die Sandbox zugänglich ist.
Ich habe einen lokalen Exploit-Proof-of-Concept beigefügt, um zu demonstrieren, wie dieser Fehler verwendet werden kann, um willkürliches Kernel-Lesen/Schreiben zu erreichen, wenn er lokal ausgeführt wird. Es erfordert nur die Ausführung von nicht vertrauenswürdigem App-Code, um CVE-2019-2215 auszunutzen. Ich habe auch einen Screenshot (success.png) des POC beigefügt, der auf einem Pixel 2 läuft, auf dem Android 10 mit Sicherheitspatch-Level September 2019 läuft (google/walleye/walleye:10/QP1A.190711.020/5800535:user/release-keys).
Stellungnahme des Anbieters von Android:
"Diese Problem wird unter Android als hoher Schweregrad eingestuft und erfordert für eine potenzielle Ausnutzung die Installation einer bösartigen Anwendung. Andere Vektoren, wie z. B. über den Webbrowser, erfordern die Verkettung mit einem zusätzlichen Exploit. Wir haben Android-Partner benachrichtigt, und der Patch ist im Android Common Kernel verfügbar. Pixel 3 und 3a-Geräte sind nicht anfällig, während Pixel 1 und 2-Geräte im Rahmen des Oktober-Updates Updates für dieses Problem erhalten werden."