
LG Root Exploit
LG-Root-Exploit
Autor: [email protected]
Besonderer Dank: Juggie, für den Hinweis auf eine ungewöhnliche Binärdatei in einem Update (spritebud), die mich zu dieser Sicherheitslücke geführt hat.
Thema: Race Condition in der Backup-Software von Sprite Software, die vom OEM auf LG-Android-Geräten installiert wird.
CVE-ID: CVE-2013-3685
Auswirkung: Lokal ausgenutzte Sicherheitslücke mit minimaler Benutzerinteraktion auf dem Gerät, die zur Ausführung von Code als Root-Benutzer führt. Unter bestimmten Umständen ist es möglich, diese Sicherheitslücke auszunutzen, ohne dass der Gerätebenutzer davon erfährt.
Produkte: "Backup" "spritebud"
Anbieter: Sprite Software LG Electronics Möglicherweise weitere Anbieter
Betroffene Versionen: spritebud 1.3.24 backup 2.5.4105 Wahrscheinlich auch weitere Versionen
Betroffene Geräte (abhängig von der Firmware-Konfiguration): LG-E971 LG Optimus G LG-E973 LG Optimus G LG-E975 LG Optimus G LG-E975K LG Optimus G LG-E975T LG Optimus G LG-E976 LG Optimus G LG-E977 LG Optimus G LG-F100K LG Optimus Vu LG-F100L LG Optimus Vu LG-F100S LG Optimus Vu LG-F120K LG Optimus Vu LG-F120L LG Optimus LTE Tag LG-F120S LG Optimus LTE Tag LG-F160K LG Optimus LTE 2 LG-F160L LG Optimus LTE 2 LG-F160LV LG Optimus LTE 2 LG-F160S LG Optimus LTE 2 LG-F180K LG Optimus G LG-F180L LG Optimus G LG-F180S LG Optimus G LG-F200K LG Optimus Vu 2 LG-F200L LG Optimus Vu 2 LG-F200S LG Optimus Vu 2 LG-F240K LG Optimus G Pro LG-F240L LG Optimus G Pro LG-F240S LG Optimus G Pro LG-F260K LG Optimus LTE 3 LG-F260L LG Optimus LTE 3 LG-F260S LG Optimus LTE 3 LG-L21 LG Optimus G LG-LG870 LG (Unknown) LG-LS860 LG Mach LG-LS970 LG Optimus G LG-P760 LG Optimus L9 LG-P769 LG Optimus L9 LG-P780 LG Optimus L7 LG-P875 LG Optimus F5 LG-P875h LG Optimus F5 LG-P880 LG Optimus 4X HD LG-P940 LG Prada LG-SU540 LG Prada 3.0 LG-SU870 LG Optimus 3D Cube LG-US780 LG Lollipop Möglicherweise auch weitere Geräte.
Produktinformationen:
"Backup" und "spritebud" sind ein von Sprite Software entwickeltes Sicherungs-/Wiederherstellungssystem für Einstellungen und Anwendungen, das auf LG-Android-Smartphones eingesetzt wird. "Backup" ist die Endbenutzer-App, und "spritebud" ist der Dienst, der die Sicherungs- und Wiederherstellungsfunktionen ausführt.
Details:
Der "spritebud"-Daemon wird von den Init-Skripten gestartet und läuft als Root-Benutzer. Der Daemon lauscht auf einem Unix-Socket und nimmt Anweisungen von der "Backup"-App entgegen. Mit einem manipulierten Backup können wir jede Datei beschreiben, ihre Berechtigungen ändern und den Besitzer ändern, da "spritebud" als Root-Benutzer läuft.
Das manipulierte Backup enthält Wiederherstellungsdaten für unsere Exploit-Anwendung "com.cunninglogic.lgpwn". Die Daten umfassen eine 50-MB-Dummy-Datei (a), die unser Exploit-Fenster vergrößert, die su-Binärdatei (b), ein Skript (c) zur Installation von su und eine Textdatei (d) mit dem Pfad zu unserem Skript. Alle Dateien gehören der Anwendung und sind für alle Nutzer schreib-, les- und ausführbar. Alle Dateien werden in alphabetischer Reihenfolge wiederhergestellt. Das gesamte Backup ist nach der Komprimierung etwa 2 MB groß. Die Struktur dieses Backups ist wie folgt:
drwxrwxrwx u0_a114 u0_a114 2013-05-28 20:13 files
./files:
Vor der Wiederherstellung läuft unsere Exploit-App, beobachtet den Prozess und wartet. Während der Wiederherstellung erstellt der spritebud-Daemon zuerst das Verzeichnis "files" und setzt dann dessen Berechtigungen und Besitzer. Als Nächstes dekomprimiert er die Datei "a", unsere 50-MB-Dummy-Datei, und stellt sie wieder her. Während der Wiederherstellung von "a" hat unsere Exploit-Anwendung Zeit, "d" – unsere Textdatei mit dem vollständigen Pfad zu unserem Skript (c) – auf /sys/kernel/uevent_helper zu verlinken. Nach der Wiederherstellung der Datei "d" wird unser Pfad in uevent_helper geschrieben. Wenn ein Hotplug-Ereignis auftritt (was alle paar Sekunden geschieht), wird der in uevent_helper enthaltene Pfad vom Kernel ausgeführt, und unser Skript (c) wird ausgeführt und installiert die su-Binärdatei (b).