Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
rtx-cve-2023-45779 — Codice proof-of-concept per la vulnerabilità di riutilizzo delle chiavi APEX di Android | Kitploit
Strumenti/GitHubGitHub/metaredteam/rtx-cve-2023-45779
Sicurezza AndroidAnalisi delle VulnerabilitàExploitAnalisi di BinariSicurezza della Supply ChainSviluppo Payload
GitHubmetaredteam/rtx-cve-2023-45779

rtx-cve-2023-45779

Codice proof-of-concept per la vulnerabilità di riutilizzo delle chiavi APEX di Android

Vedi Repository
10982 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

Questo repository è fornito COSÌ COM'È per accompagnare una divulgazione di vulnerabilità di Meta Red Team X. Non è un progetto ufficiale di Meta e non sarà supportato come tale.

Un insieme di script e artefatti che dimostrano l'individuazione e lo sfruttamento di dispositivi Android che includono APEX firmati con chiavi di test di AOSP. Vedi il nostro post del blog "Firme mancanti: come diversi marchi hanno dimenticato di proteggere un componente chiave di Android" per tutti i dettagli del problema.

File

  • apex-checker/: Un insieme di script Bash per salvare i digest delle chiavi di test note e controllare APEX in massa per firme provenienti da queste chiavi.
  • apex-forger/: Wrapper leggeri attorno agli strumenti apexer e deapexer di AOSP che rendono facile decomprimere, modificare e ricomprimere un APEX. Come apktool per gli APEX.
  • vndk-libt/: Codice sorgente di una libreria che abbiamo aggiunto a un APEX vulnerabile per dimostrare che possiamo eseguire codice. Tutto ciò che fa è stampare la riga di comando di ogni processo che la carica su logcat.

Esecuzione dell'exploit

  1. Clonare un albero sorgente AOSP recente (circa Android 13), envsetup+lunch, ed eseguire m apexer deapexer apksigner per compilare gli strumenti necessari.
  2. Aggiornare envsetup.sh (quello qui presente, non quello in AOSP) per far puntare $AOSP e $ANDROID_HOST_OUT alle posizioni appropriate.
  3. Ottenere un qualsiasi dispositivo Android. Aggiornarlo e abilitare ADB.
  4. Eseguire adb shell getprop ro.build.version.sdk e adb shell getprop ro.vndk.version.
  5. Se i due valori corrispondono, adb pull /system/apex/com.android.vndk.current.apex vndk.apex. In caso contrario, adb pull /system_ext/apex/com.android.vndk.v<NN>.apex vndk.apex, dove <NN> è ro.vndk.version.
  6. Verificare se l'APEX è vulnerabile con apex-checker/check.sh vndk.apex. Se l'output non inizia con "OI" (a indicare che sia la firma esterna che quella interna provengono da chiavi di test), questo PoC non può essere usato (anche se questo non garantisce che il dispositivo sia sicuro, poiché altri APEX potrebbero essere ancora vulnerabili).

Chiavi di test note ad apex-checker

Gli hash in apex-checker/apk-keys.txt e apex-checker/avb-keys.txt corrispondono alle chiavi di test esterne e interne per i seguenti APEX. Nota che esistono anche varianti -goog di questi due elenchi, che sono state create da Google dopo la nostra segnalazione iniziale. Questi elenchi sono in generale più completi, ma non sappiamo esattamente quali chiavi contengano.

  • 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
Scarica lo strumento
  • Decomprimere l'APEX con apex-forger/unpack.sh vndk.apex vndk.
  • Provare a patchare libutils.so nell'APEX estratto per caricare la nostra libt.so iniettata: git apply --directory=vndk vndk-libt/libutils-v31.patch. Se non funziona (ad es. versione VNDK diversa), usare un editor esadecimale per cambiare manualmente libc.so in libt.so nel DT_NEEDED appropriato di vndk/payload/lib64/libutils.so.
  • Compilare libt.so eseguendo ndk-build dentro vndk-libt/. Copiare vndk-libt/libs/arm64-v8a/libt.so in vndk/payload/lib64/libt.so.
  • Estrarre canned_fs_config da apex_build_info.bp. Non esiste uno strumento per farlo facilmente: la soluzione più vicina è protoc --decode_raw <vndk/apex_build_info.bp seguita dalla de-escape manuale del campo #3. Mettere canned_fs_config in vndk/.
  • Aggiungere una riga a canned_fs_config, come tutte le altre, per /lib64/libt.so.
  • Scaricare le chiavi di test per la versione VNDK appropriata da qui.
  • Ricomprimere l'APEX con apex-forger/repack.sh vndk com.android.vndk.v<NN>.{pem,pubkey,pk8,x509.pem}.
  • Eseguire adb install vndk/forged.apex.
  • Eseguire adb reboot && adb logcat -s RTXPoC:D.
  • Osservare numerosi messaggi di log RTXPoC, ciascuno da un processo in cui possiamo eseguire codice.