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
cve-2022-46395-qemu — Laboratorio basato su QEMU per riprodurre la condizione di race condition CVE-2022-46395 nel driver GPU Arm Mali r36p0. Include PoC, script di build e packaging initramfs per ricerca locale di vulnerabilità e test di regressione. | Kitploit
Strumenti/GitHubGitHub/gao-zuin/cve-2022-46395-qemu
Analisi delle VulnerabilitàExploitFuzzingApprendimento e FormazioneBinary ExploitationLab e Pratica
GitHubgao-zuin/cve-2022-46395-qemu

cve-2022-46395-qemu

Laboratorio basato su QEMU per riprodurre la condizione di race condition CVE-2022-46395 nel driver GPU Arm Mali r36p0. Include PoC, script di build e packaging initramfs per ricerca locale di vulnerabilità e test di regressione.

Vedi Repository
23 mesi faNon ancora revisionato

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

CVE-2022-46395 Laboratorio QEMU r36p0

Questo repository contiene un laboratorio QEMU/no-Mali per riprodurre la condizione di trigger portabile di CVE-2022-46395 contro la linea di driver Arm Mali r36p0.

Il laboratorio è destinato alla ricerca locale di vulnerabilità e ai test di regressione. Non include il payload di escalation dei privilegi specifico per Pixel dell'exploit originale. In modalità LAB_QEMU, il PoC si ferma dopo aver dimostrato che la finestra di race condition soft-event/user-buffer è stata raggiunta.

Struttura del Repository

  • poc/: PoC di CVE-2022-46395 adattato per QEMU. Le chiamate di logging Android e delle proprietà sono sostituite, e la patch del kernel Pixel è disabilitata sotto LAB_QEMU.
  • src/google-gpu-raviole-android13/: sorgente del modulo GPU Google Pixel da android.googlesource.com/kernel/google-modules/gpu, ramo android-gs-raviole-5.10-android13. Il file incluso identifica il driver come .
mali_kbase/Kbuild
r36p0-01eac0
  • scripts/: script di build, packaging initramfs, avvio QEMU e helper per la riproduzione one-shot.
  • docs/: note di analisi locali e rapporti di riproduzione.
  • logs/: log di evidenza selezionati da esecuzioni locali riuscite.
  • I binari generati, gli archivi initramfs, i file oggetto e la maggior parte dei log di runtime sono ignorati da Git. Ricostruiscili localmente con gli script sottostanti.

    Requisiti dell'Host

    Gli script sono stati utilizzati su una VM Linux con:

    • bash, make, gcc, file, cpio, gzip, modinfo
    • busybox a /bin/busybox
    • qemu-system-x86_64
    • un albero del kernel Linux 5.10 x86_64 KASAN preparato in grado di compilare moduli esterni

    Per impostazione predefinita, gli script si aspettano l'albero del kernel e l'immagine di avvio in:

    root@kitploit:~
    ../build/linux-5.10-kasan
    ../build/linux-5.10-kasan/arch/x86/boot/bzImage
    

    È possibile sovrascrivere questi percorsi con KDIR e KERNEL_IMAGE.

    Riprodurre

    Clona il repository e entraci:

    root@kitploit:~
    git clone https://github.com/Gao-Zuin/cve-2022-46395-qemu.git
    cd cve-2022-46395-qemu
    

    Eseguire l'intero flusso di build/pacchettizzazione/avvio:

    root@kitploit:~
    MAX_ATTEMPTS=2000 ./scripts/reproduce.sh
    

    Se il tuo kernel KASAN non si trova nella directory predefinita ../build:

    root@kitploit:~
    KDIR=/path/to/linux-5.10-kasan \
    KERNEL_IMAGE=/path/to/linux-5.10-kasan/arch/x86/boot/bzImage \
    MAX_ATTEMPTS=2000 \
    ./scripts/reproduce.sh
    

    L'esecuzione locale riuscita ha utilizzato questa temporizzazione:

    root@kitploit:~
    MAX_ATTEMPTS=2000 UNMAP_OFFSET_NS=-800000 ./scripts/reproduce.sh
    

    Per un logging più dettagliato dei tentativi:

    root@kitploit:~
    MAX_ATTEMPTS=2000 VERBOSE_ATTEMPTS=1 UNMAP_OFFSET_NS=-800000 \
      ./scripts/reproduce.sh
    

    Passaggi Manuali

    Lo script one-shot è equivalente a:

    root@kitploit:~
    ./scripts/build_r36p0_no_mali.sh
    ./scripts/build_poc.sh
    MAX_ATTEMPTS=2000 UNMAP_OFFSET_NS=-800000 ./scripts/package_initramfs.sh
    ./scripts/run_qemu.sh
    

    Variabili d'ambiente utili:

    • KDIR: albero di build del kernel usato per compilare mali_kbase.ko
    • KERNEL_IMAGE: bzImage passato a QEMU
    • QEMU_LOG: percorso del log di output
    • QEMU_MEM: dimensione della memoria QEMU, default 1536M
    • QEMU_SMP: numero di CPU QEMU, default 3
    • MAX_ATTEMPTS: limite di tentativi del PoC, default 2000
    • UNMAP_OFFSET_NS: offset di temporizzazione della race condition, default -800000
    • VERBOSE_ATTEMPTS=1: stampa dettagli per tentativo
    • KASAN_UAF_MODE=1: carica il modulo con l'opzione KASAN UAF probe usata da scripts/reproduce_kasan_uaf.sh

    Evidenza Attesa

    Un'esecuzione riuscita stampa righe come:

    root@kitploit:~
    mali mali.0: Kernel DDK version r36p0-01eac0
    r36p0-01eac0 (UK version 11.34)
    /dev/mali0
    finished reset: 703956220 fault: 682115150 68 err 0 read 3
    qemu lab mode: CVE-2022-46395 soft-event/user-buffer race reproduced
    qemu lab mode: reproduction completed after 17 attempts
    [init] PoC status: 0
    

    Il log di evidenza di riferimento è:

    root@kitploit:~
    logs/qemu-cve-2022-46395-r36p0-unmap-minus800us.log
    

    La condizione chiave di successo è err=0, read=3 e fault < reset. Ciò indica che la finestra di race condition è stata raggiunta contro r36p0-01eac0 in QEMU no-Mali.

    Note

    • Questo è un trigger di laboratorio QEMU, non una catena di exploit completa per dispositivo.
    • La fase finale originale per Pixel dipende da offset di testo del kernel ARM64 hard-coded e non viene intenzionalmente utilizzata qui.
    • Se QEMU esce senza riprodurre la race condition, esegui nuovamente con un MAX_ATTEMPTS più alto o regola UNMAP_OFFSET_NS.
    Scarica lo strumento