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.

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
Vedi Repository
2 mesi faNon ancora revisionato

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 mali_kbase/Kbuild incluso identifica il driver come 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

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
scripts/reproduce_kasan_uaf.sh