
LG Root Exploit
Exploit di root per LG
Autore: [email protected]
Ringraziamenti speciali: Juggie, per aver segnalato un binario insolito in un aggiornamento (spritebud), che mi ha portato a scoprire questa vulnerabilità.
Oggetto: Race condition nel software di backup di Sprite Software, installato dall'OEM sui dispositivi Android LG.
ID CVE: CVE-2013-3685
Effetto: Vulnerabilità sfruttata localmente con una minima interazione dell'utente del dispositivo, che consente di eseguire codice come utente root. In circostanze specifiche, è possibile sfruttare questa vulnerabilità all'insaputa dell'utente del dispositivo.
Prodotti: "Backup" "spritebud"
Fornitori: Sprite Software LG Electronics Potenzialmente altri fornitori
Versioni interessate: spritebud 1.3.24 backup 2.5.4105 Probabilmente anche altre versioni
Dispositivi interessati (soggetti alla configurazione del firmware): 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 Potenzialmente anche altri dispositivi.
Informazioni sul prodotto:
"Backup" e "spritebud" sono un sistema di backup/ripristino di impostazioni e applicazioni scritto da Sprite Software e distribuito sugli smartphone Android LG. "Backup" è l'app front-end per l'utente finale, mentre "spritebud" è il servizio che esegue le funzioni di backup e ripristino.
Dettagli:
Il demone "spritebud" viene avviato dagli script di init e gira come utente root. In ascolto su un socket unix, il demone accetta istruzioni dall'app "Backup". Utilizzando un backup appositamente creato, possiamo scrivere, modificare i permessi e cambiare il proprietario di qualsiasi file, dato che "spritebud" gira con l'utente root.
Il backup appositamente creato contiene i dati di ripristino per la nostra applicazione di exploit, "com.cunninglogic.lgpwn". I dati includono un file fittizio da 50mb (a) usato per aumentare la nostra finestra di exploit, il binario su (b), uno script (c) per installare su, e un file di testo (d) contenente il percorso del nostro script. Tutti i file sono di proprietà dell'applicazione e sono scrivibili/leggibili/eseguibili da tutti. Tutti i file vengono ripristinati in ordine alfabetico. L'intero backup, dopo la compressione, è di circa 2mb. La struttura di questo backup è la seguente:
drwxrwxrwx u0_a114 u0_a114 2013-05-28 20:13 files
./files:
Prima del ripristino, la nostra app di exploit viene eseguita, osserva il processo e attende. Durante il ripristino, il demone spritebud crea prima la directory files, poi ne imposta permessi e proprietario. Successivamente decomprime e ripristina il file "a", il nostro file fittizio da 50mb. Durante il ripristino di "a", la nostra applicazione di exploit ha il tempo di creare un symlink di "d", il nostro file di testo contenente il percorso completo del nostro script (c), verso /sys/kernel/uevent_helper. Al ripristino del file "d", il nostro percorso viene scritto in uevent_helper. Quando si verifica un evento hotplug (che avviene ogni pochi secondi), il percorso contenuto in uevent_helper viene eseguito dal kernel e il nostro script (c) viene eseguito e installa il binario su (b).