Steckt im Telefon ein Computer, ist es durch Softwarefehler gefährdet. Schreibrechte auf dem Speicherdevice haben vor Kurzem eine Sicherheitslücke in einige Samsung-Smartphones gerissen.
Sicherheitslücken in Googles Mobilbetriebssystem Android betreffen schnell Millionen von Geräten. Zudem haben Smartphone-Benutzer meist sensible persönliche Informationen dort abgelegt, wodurch auftretende Schwachstellen weitreichende Konsequenzen haben.
Mitte Dezember 2012 beschrieb ein Mitglied des Entwicklerforums XDA Developers eine neue Sicherheitslücke in Samsung-Smartphones mit den ARM-Prozessoren Exynos 4210 und 4412. Sie erlaubt es einem Angreifer, mit Hilfe geschickt präparierter Software Rootrechte auf dem Gerät zu erlangen. Ursache ist ein Fehler in den Zugriffsrechten für die Gerätedatei »/dev/exynos-mem« .
Memory-Mappen erlaubt
Das Problem besteht darin, dass diese mit Lese- und Schreibrechten für jeden Benutzer installiert ist. Die auf »/dev/exynos« erlaubten Datei-Operationen sind in der Kerneldatei »linux/drivers/char/mem.c« spezifiziert (Listing 1). Sie ermöglichen es unter anderem, »mmap()« auf die Gerätedatei anzuwenden, um Speicherbereiche zu mappen.
Listing 1
linux/drivers/char/mem.c
01 #ifdef CONFIG_EXYNOS_MEM
02 [14] = {"exynos-mem", S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH
03 | S_IWOTH, &exynos_mem_fops},
04 #endif
Mit Ioctl-Anfragen auf das Gerät darf ein Programmierer den Reset oder Flush der L1- und L2-Caches auslösen. Daneben kann er damit auch physikalische Adressen für die »mmap()« -Aufrufe setzen. Das kann ein Angreifer für die eigentliche Attacke ausnützen. Die Funktionalität implementiert der Kernel in »linux/drivers/char/exynos-mem.c« . Wie Listing 2 zeigt, findet sich dort allerdings eine If-Abfrage, die nur den Zugriff auf Lowmem-Bereiche erlaubt.
Listing 2
linux/drivers/char/exynos-mem.c
01 /* TODO: currently lowmem is only avaiable */
02 if ((phys_to_virt(start) < (void *)PAGE_OFFSET) ||
03 (phys_to_virt(start) >= high_memory)) {
04 pr_err("[%s] invalid paddr(0x%08x)\n", __func__, start);
05 return -EINVAL;
06 }
Dank der Zugriffsmöglichkeiten per »mmap()« kann ein Angreifer einen Exploit schreiben, der Kernelspeicher in Besitz nimmt, um damit höhere Rechte auf dem Smartphone zu erlangen. Das könnte allein schon durch das Installieren einer präparierten App aus Google Play geschehen.
Ein Exploit zum Erzeugen einer Root-Shell ist ebenfalls im XDA-Entwicklerforum zu finden [1]. Dessen Code versucht »/system/bin/sh« als Root auszuführen. Hierzu greift er auf den Kernel via »/dev/exynos-mem« zu, um den Systemcall »sys_setresuid()« aufzurufen und Rootrechte zu setzen.
Mittlerweile ist auch eine erste App namens Exynos Abuse APK v1.10 im Verkehr, die diese Sicherheitslücke konkret ausnutzt und das Tool Super SU 0.99 auf dem Smartphone installiert, womit der Angreifer das Smartphone dann mit Rootrechten manipulieren darf.
Eine Lösung für das Sicherheitsproblem könnte sein, die Gerätedatei für den Speicher mit restriktiveren Berechtigungen auszustatten. Es gibt jedoch Hinweise darauf, dass manche Software, etwa die für die Smartphone-Kamera, dann nicht mehr funktioniert.
Betroffen von dieser Sicherheitslücke sind folgende Smartphones: Samsung Galaxy S2 GT-I9100, Galaxy S3 GT-I9300, Galaxy S3 LTE GT-I9305, Galaxy Note GT-N7000, Galaxy Note 2 GT-N7100, Verizon Galaxy Note 2 SCH-I605, Samsung Galaxy Note 10.1 GT-N8000 und Galaxy Note 10.1 GT-N8010. (mhu)
Infos
- “Root exploit on Exynos”: http://forum.xda-developers.com/showthread.php?p=35469999





