
LG Root Exploit
Exploit de raíz para LG
Autor: [email protected]
Agradecimientos especiales: Juggie, por señalar un binario extraño en una actualización (spritebud), que me llevó a encontrar esta vulnerabilidad.
Tema: Condición de carrera en el software de respaldo de Sprite Software, instalado por el OEM en dispositivos Android de LG.
ID de CVE: CVE-2013-3685
Efecto: Vulnerabilidad explotada localmente con una interacción mínima del usuario del dispositivo que resulta en la ejecución de código como usuario root. Bajo circunstancias específicas, es posible explotar esta vulnerabilidad sin que el usuario del dispositivo lo sepa.
Productos: "Backup" "spritebud"
Vendedores: Sprite Software LG Electronics Posiblemente otros vendedores
Versiones afectadas: spritebud 1.3.24 backup 2.5.4105 Probablemente también otras versiones
Dispositivos afectados (sujeto a la configuración 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 (Desconocido) 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 Posiblemente también otros dispositivos.
Información del producto:
"Backup" y "spritebud" son un sistema de respaldo/restauración de configuración y aplicaciones escrito por Sprite Software e implementado en los smartphones Android de LG. "Backup" es la aplicación de interfaz para el usuario final, y "spritebud" es el servicio que realiza las funciones de respaldo y restauración.
Detalles:
El demonio "spritebud" es iniciado por los scripts de init y se ejecuta como usuario root. Escuchando en un socket de Unix, el demonio acepta instrucciones de la aplicación "Backup". Usando un respaldo manipulado, podemos escribir, cambiar permisos y cambiar la propiedad de cualquier archivo, dado que "spritebud" se ejecuta bajo el usuario root.
El respaldo manipulado contiene datos de restauración para nuestra aplicación de explotación, "com.cunninglogic.lgpwn". Los datos incluyen un archivo dummy de 50mb (a) utilizado para ampliar nuestra ventana de explotación, el binario su (b), un script (c) para instalar su, y un archivo de texto (d) que contiene la ruta a nuestro script. Todos los archivos pertenecen a la aplicación y tienen permisos de escritura/lectura/ejecución para todos. Todos los archivos se restauran en orden alfabético. El respaldo completo, después de comprimir, tiene aproximadamente 2mb. La estructura de este respaldo es la siguiente:
drwxrwxrwx u0_a114 u0_a114 2013-05-28 20:13 files
./files:
Antes de la restauración, nuestra aplicación de explotación se ejecuta, observa el proceso y espera. Durante la restauración, el demonio spritebud primero crea el directorio files, luego establece sus permisos y propietario. A continuación, descomprime y restaura el archivo "a", nuestro archivo dummy de 50mb. Durante la restauración de "a", nuestra aplicación de explotación tiene tiempo de enlazar simbólicamente "d", nuestro archivo de texto que contiene la ruta completa a nuestro script (c), a /sys/kernel/uevent_helper. Cuando se restaura el archivo "d", nuestra ruta se escribe en uevent_helper. Cuando ocurre un evento hotplug (que ocurre cada pocos segundos), la ruta contenida en uevent_helper es ejecutada por el kernel y nuestro script (c) se ejecuta e instala el binario su (b).