Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cve-2022-46395-qemu — 基于 QEMU 的实验室环境,用于复现 Arm Mali r36p0 GPU 驱动中的 CVE-2022-46395 竞态条件漏洞。包含 PoC、构建脚本以及 initramfs 打包,适用于本地漏洞研究与回归测试。 | Kitploit
工具/GitHubGitHub/gao-zuin/cve-2022-46395-qemu
漏洞分析漏洞利用模糊测试学习与教育二进制利用实验室与实践
GitHubgao-zuin/cve-2022-46395-qemu

cve-2022-46395-qemu

基于 QEMU 的实验室环境,用于复现 Arm Mali r36p0 GPU 驱动中的 CVE-2022-46395 竞态条件漏洞。包含 PoC、构建脚本以及 initramfs 打包,适用于本地漏洞研究与回归测试。

查看仓库
23个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2022-46395 QEMU r36p0 实验室

该仓库包含一个 QEMU/no-Mali 实验室,用于针对 Arm Mali r36p0 驱动系列复现 CVE-2022-46395 的可移植触发条件。

该实验室旨在用于本地漏洞研究和回归测试。它不包含原始利用代码中针对 Pixel 的特权提升载荷。在 LAB_QEMU 模式下,PoC 在证明已到达 soft-event/user-buffer 竞争窗口后即停止。

仓库布局

  • poc/:适配 QEMU 的 CVE-2022-46395 PoC。Android 日志和属性调用已被替换,且在 LAB_QEMU 下禁用了 Pixel 内核文本补丁。
  • src/google-gpu-raviole-android13/:来自 android.googlesource.com/kernel/google-modules/gpu 分支 android-gs-raviole-5.10-android13 的 Google Pixel GPU 模块源码。其中包含的 mali_kbase/Kbuild 将该驱动标识为 r36p0-01eac0。
  • scripts/:构建、initramfs 打包、QEMU 启动和一次性复现辅助脚本。
  • docs/:本地分析笔记和复现报告。
  • logs/:成功本地运行的部分证据日志。

生成的二进制文件、initramfs 归档、目标文件以及大多数运行时日志均被 Git 忽略。请使用下面的脚本在本地重新构建。

主机要求

这些脚本曾在以下 Linux 虚拟机上使用:

  • bash, make, gcc, file, cpio, gzip, modinfo
  • busybox(位于 /bin/busybox)
  • qemu-system-x86_64
  • 一个已准备好的、可编译外部模块的 Linux 5.10 x86_64 KASAN 内核源码树

默认情况下,脚本预期内核源码树和启动镜像位于:

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

你可以通过 KDIR 和 KERNEL_IMAGE 覆盖这些路径。

复现

克隆仓库并进入其中:

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

运行完整的构建/打包/启动流程:

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

如果你的 KASAN 内核不在默认的兄弟目录 ../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

成功的本地运行使用了以下时序:

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

如需更详细的尝试日志:

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

手动步骤

一键脚本等价于以下命令:

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

有用的环境变量:

  • KDIR:用于编译 mali_kbase.ko 的内核构建树
  • KERNEL_IMAGE:传递给 QEMU 的 bzImage
  • QEMU_LOG:输出日志路径
  • QEMU_MEM:QEMU 内存大小,默认 1536M
  • QEMU_SMP:QEMU CPU 数量,默认 3
  • MAX_ATTEMPTS:PoC 重试次数上限,默认 2000
  • UNMAP_OFFSET_NS:竞争时序偏移,默认 -800000
  • VERBOSE_ATTEMPTS=1:打印每次尝试的详细信息
  • KASAN_UAF_MODE=1:使用 所用的 KASAN UAF 探测选项加载模块

预期证据

一次成功的运行会打印类似以下内容:

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

参考证据日志为:

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

关键成功条件是 err=0、read=3 且 fault < reset。这表明已在 no-Mali QEMU 中到达 r36p0-01eac0 的竞争窗口。

备注

  • 这是一个 QEMU 实验室触发程序,而非完整的设备利用链。
  • 原始 Pixel 最终阶段依赖于硬编码的 ARM64 内核文本偏移,此处有意不加以使用。
  • 如果 QEMU 退出时未能复现该竞争,请使用更高的 MAX_ATTEMPTS 重新运行,或调整 UNMAP_OFFSET_NS。
下载工具
scripts/reproduce_kasan_uaf.sh