Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
cve-2022-46395-qemu — Laboratoire basé sur QEMU pour reproduire la condition de course CVE-2022-46395 dans le pilote GPU Arm Mali r36p0. Inclut un PoC, des scripts de construction et un packaging initramfs pour la recherche locale de vulnérabilités et les tests de régression. | Kitploit
Outils/GitHubGitHub/gao-zuin/cve-2022-46395-qemu
Analyse des VulnérabilitésExploitationFuzzingApprentissage et ÉducationExploitation de BinairesLabs et Pratique
GitHubgao-zuin/cve-2022-46395-qemu

cve-2022-46395-qemu

Laboratoire basé sur QEMU pour reproduire la condition de course CVE-2022-46395 dans le pilote GPU Arm Mali r36p0. Inclut un PoC, des scripts de construction et un packaging initramfs pour la recherche locale de vulnérabilités et les tests de régression.

Voir le dépôt
11il y a 3 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2022-46395 Laboratoire QEMU r36p0

Ce dépôt contient un laboratoire QEMU/no-Mali pour reproduire la condition de déclenchement portable de CVE-2022-46395 contre la lignée de pilotes Arm Mali r36p0.

Le laboratoire est destiné à la recherche locale de vulnérabilités et aux tests de régression. Il ne comporte pas la charge utile d'élévation de privilèges spécifique à Pixel de l'exploit original. En mode LAB_QEMU, le PoC s'arrête après avoir démontré que la fenêtre de course (race) soft-event/user-buffer a été atteinte.

Structure du dépôt

  • poc/ : PoC CVE-2022-46395 adapté pour QEMU. Les appels de journalisation et de propriétés Android sont remplacés, et le patching du texte du noyau Pixel est désactivé sous LAB_QEMU.
  • src/google-gpu-raviole-android13/ : source du module GPU Google Pixel depuis android.googlesource.com/kernel/google-modules/gpu, branche android-gs-raviole-5.10-android13. Le fichier mali_kbase/Kbuild inclus identifie le pilote comme r36p0-01eac0.
  • scripts/ : scripts d'assistance pour la construction, le packaging initramfs, le démarrage QEMU et la reproduction en un coup.
  • docs/ : notes d'analyse locales et rapports de reproduction.
  • logs/ : journaux de preuve sélectionnés de exécutions locales réussies.

Les binaires générés, les archives initramfs, les fichiers objets et la plupart des journaux d'exécution sont ignorés par Git. Reconstruisez-les localement avec les scripts ci-dessous.

Prérequis hôte

Les scripts ont été utilisés sur une machine virtuelle Linux avec :

  • bash, make, gcc, file, cpio, gzip, modinfo
  • busybox at /bin/busybox
  • qemu-system-x86_64
  • un arbre de noyau Linux 5.10 x86_64 KASAN préparé pouvant construire des modules externes

Par défaut, les scripts attendent l'arbre du noyau et l'image de démarrage à :

../build/linux-5.10-kasan
../build/linux-5.10-kasan/arch/x86/boot/bzImage

Vous pouvez remplacer ces chemins avec KDIR et KERNEL_IMAGE.

Reproduire

Clonez le dépôt et entrez dans celui-ci :

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

Exécutez le flux complet de construction/paquet/démarrage :

MAX_ATTEMPTS=2000 ./scripts/reproduce.sh

Si votre noyau KASAN n'est pas dans le répertoire frère par défaut ../build :

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'exécution locale réussie a utilisé ce minuteur :

MAX_ATTEMPTS=2000 UNMAP_OFFSET_NS=-800000 ./scripts/reproduce.sh

Pour une journalisation plus verbose des tentatives :

MAX_ATTEMPTS=2000 VERBOSE_ATTEMPTS=1 UNMAP_OFFSET_NS=-800000 \
  ./scripts/reproduce.sh

Étapes manuelles

Le script en un coup équivaut à :

./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

Variables d'environnement utiles :

  • KDIR : arbre de construction du noyau utilisé pour compiler mali_kbase.ko
  • KERNEL_IMAGE : bzImage passé à QEMU
  • QEMU_LOG : chemin du journal de sortie
  • QEMU_MEM : taille mémoire QEMU, par défaut 1536M
  • QEMU_SMP : nombre de CPU QEMU, par défaut 3
  • MAX_ATTEMPTS : limite de tentatives du PoC, par défaut 2000
  • UNMAP_OFFSET_NS : décalage temporel de la race, par défaut -800000
  • VERBOSE_ATTEMPTS=1 : afficher les détails par tentative
  • KASAN_UAF_MODE=1 : charger le module avec l'option de sonde KASAN UAF utilisée par scripts/reproduce_kasan_uaf.sh

Preuve attendue

Une exécution réussie affiche des lignes comme :

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

Le journal de preuve de référence est :

logs/qemu-cve-2022-46395-r36p0-unmap-minus800us.log

La condition de succès clé est err=0, read=3, et fault < reset. Cela indique que la fenêtre de course a été atteinte contre r36p0-01eac0 dans le QEMU sans Mali.

Remarques

  • Ceci est un déclencheur de laboratoire QEMU, pas une chaîne d'exploit de périphérique complète.
  • L'étape finale originale de Pixel dépend d'offsets de texte du noyau ARM64 codés en dur et n'est pas intentionnellement utilisée ici.
  • Si QEMU se termine sans reproduire la race, relancez avec un MAX_ATTEMPTS plus élevé ou ajustez UNMAP_OFFSET_NS.
Télécharger l’outil