Samsung-Smartphones: Android-Root-Exploit

Sicherheitslücken in Googles Mobilbetriebssystem Android können Millionen von Geräten betreffen. Zudem haben Smartphone-Benutzer oftmals sensible persönliche Informationen dort abgelegt, wodurch auftretende Schwachstellen weitreichende Konsequenzen haben können.

Mitte Dezember 2012 wurde eine neue Sicherheitslücke in Samsung Smartphones mit den ARM-Prozessoren Exynos 4210 und 4412 entdeckt. Angreifer können mittels spezieller Programme Root-Rechte auf solchen Geräten erlangen. Ursache für dieses Problem ist ein Fehler in den Zugriffsrechten auf die Gerätedatei “/dev/exynos-mem”. Problematisch ist hier, dass diese mit Lese- und Schreibrechten für jeden Benutzer installiert ist. Genutzt wird “/dev/exynos-mem” von mindestens drei Bibliotheken: “/system/lib/hw/camera.smdk4x12.so”, “/system/lib/hw/gralloc.smdk4x12.so” und “/system/lib/libhdmi.so”. Von der Geräte-Datei macht also beispielsweise die Kamera-Applikation des Smartphones Gebrauch.

Die auf “/dev/exynos*” erlaubten Datei-Operationen sind in der Kernel-Datei “linux/drivers/char/mem.c” spezifiziert:

static const struct file_operations exynos_mem_fops = { .open = exynos_mem_open, .release = exynos_mem_release, .unlocked_ioctl = exynos_mem_ioctl, .mmap = exynos_mem_mmap,
}

Unter anderem ist es also möglich, “mmap()” auf die Geräte-Datei anzuwenden, um Speicherbereiche zu mappen. Die Rechte fürden Zugriff auf die Datei sind in der gleichen Source-Datei spezifiziert:

#ifdef CONFIG_EXYNOS_MEM [14] = {"exynos-mem", S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH, &exynos_mem_fops},
#endif

Ioctl-Anfragen auf “/dev/exynos-mem” erlauben es, die L1- und L2-Caches zu resetten und zu flushen. Weiter lassen sich damit auch physikalische Adressen für “mmap”-Aufrufen setzen. Die “mmap”-Operationen lassen such für eine Attacke ausnutzen. Die folgende Funktionalität ist im Kernel in “linux/drivers/char/exynos-mem.c” implementiert, wobei dort via If-Abfrage eine Limitierung auf “lowmem”-Speicherbereiche eingebaut ist:

/* TODO: currently lowmem is only avaiable */
if ((phys_to_virt(start) < (void *)PAGE_OFFSET) || (phys_to_virt(start) >= high_memory)) { pr_err("[%s] invalid paddr(0x%08x)\n", __func__, start); return -EINVAL;
}

Dabei ist “PAGE_OFFSET” in der Dokumentation unter “Documentation/arm/memory.txt” wie folgt beschrieben:

Start End Use
--------------------------------------------------------------------------
PAGE_OFFSET high_memory-1 Kernel direct-mapped RAM region. This maps the platforms RAM, and typically maps all platform RAM in a 1:1 relationship.

Durch diese “mmap”-Zugriffsmöglichkeit kann ein Angreifer einen Exploit schreiben, um höhere Rechte auf dem Smartphone zu erlangen. Ein Exploit zum Erzeugen einer Root-Shell wurde im XDA-Entwicklerforum veröffentlicht.

Dessen Code versucht, “/system/bin/sh” als Root auszuführen. Hierzu greift er via “/dev/exynos-mem” auf den Kernel zu, um den System Call “sys_setresuid” aufzurufen und Root-Rechte zu setzen. Mittlerweile ist auch eine erste App namens ExynosAbuse APK v1.10 erschienen, die diese Sicherheitslücke konkret ausnutzt, um SuperSU 0.99 auf dem Smartphone zu installieren, womit der Angreifer dann mit Root-Rechten das Smartphone manipulieren kann.

Betroffen von dieser Sicherheitslücke sind folgende Smartphones: Samsung Galaxy S2 GT-I9100, Samsung Galaxy S3 GT-I9300, Samsung Galaxy S3 LTE GT-I9305 ,Samsung Galaxy Note GT-N7000, Samsung Galaxy Note 2 GT-N7100, Verizon Galaxy Note 2 SCH-I605 (locked bootloaders), Samsung Galaxy Note 10.1 GT-N8000 und Samsung Galaxy Note 10.1 GT-N8010.

E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben