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

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

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

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

工具目录

分类

查看所有分类
Loading categories
ENV-CVE-2021-3975 — CVE-2021-3975的docker环境工件 | Kitploit
工具/GitHubGitHub/yan5ui/env-cve-2021-3975
容器安全漏洞分析漏洞利用学习与教育二进制利用实验室与实践
GitHubyan5ui/env-cve-2021-3975

ENV-CVE-2021-3975

CVE-2021-3975的docker环境工件

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

ENV-CVE-2021-3975 — libvirt 漏洞复现环境

本仓库是 CVE-2021-3975(libvirt qemuProcessHandleMonitorEOF use-after-free,CWE-416)的 可复现漏洞环境快照,从对应的容器镜像 yan5ui/cve-2021-3975:tier1(基于 ubuntu:20.04)中导出。

环境在漏洞版本源码上完成了一次可复现构建,并保留了编译产物、构建脚本与完整构建日志, 可直接用于漏洞复现与 exploit 验证。

漏洞信息

项值
CVECVE-2021-3975
项目libvirt(7.1.0 系列)
CWECWE-416(释放后使用,Use-After-Free)
漏洞函数qemuProcessHandleMonitorEOF()(调用 qemuMonitorUnregister())
上游仓库https://github.com/libvirt/libvirt

触发条件:qemuMonitorUnregister() 在 qemuProcessHandleMonitorEOF 中被多线程调用且未受 monitor 锁充分保护;guest 关机期间通过 virConnectGetAllDomainStats API 可触发该 UAF,导致 libvirt 守护进程崩溃。

Sanitizer 与漏洞类型的对应

本环境按漏洞的 CWE 类别选择编译期插桩策略。

  • CWE-416(释放后使用)→ 本镜像采用 plain debug 构建
  • 编译器:clang
  • 编译选项:-O1 -g -fno-omit-frame-pointer

说明:UAF 类漏洞通常配合 ASan+UBSan 插桩使用。在本环境的目标平台 ubuntu:20.04 上, 随系统提供的 meson 0.53.2 + clang-10 + ld.bfd 工具链在共享库链接阶段无法将 -fsanitize=address,undefined 完整传递到 libvirt.so.0 的链接步骤(出现大量 __asan_* / __ubsan_* 未定义符号引用),因此本镜像采用带调试符号的 plain debug 构建 (-O1、保留帧指针)。该构建完整复现了漏洞代码路径,崩溃可在调试器下定位到释放后使用点; 此构建决策与原因已如实记录于 compile/BUILD_OK 的 sanitizer_downgrade_reason 字段。

构建产物为完整的 libvirt 守护进程与工具集,主二进制为 compile/artifacts/libvirtd (compile/artifacts/main 指向它)。

目录结构

root@kitploit:~
.
├── README.md            本文件
├── description.md       漏洞描述、漏洞函数源码摘录与复现任务说明
├── meta.json            结构化元数据(项目、CWE、commit、源码路径等)
├── compile/             构建产物与构建记录
│   ├── build.sh         可复现构建脚本(依赖安装 + meson setup + ninja + 收集产物)
│   ├── deps.txt         构建所需的 apt 依赖清单
│   ├── BUILD_OK         构建成功清单(构建系统、sanitizer 与降级原因、产物路径等)
│   ├── build.log        完整构建日志
│   └── artifacts/       编译产物
│       ├── libvirtd     守护进程主二进制(漏洞函数所在进程)
│       ├── main         指向 libvirtd 的符号链接(统一入口名)
│       ├── virsh / virtqemud / virtlogd / ...   其余守护进程与命令行工具
│       ├── libvirt.so.0.7001.0                   libvirt 核心共享库
│       └── libvirt_driver_qemu.so 等            各 driver / storage backend 共享库
├── src/
│   └── libvirt/         漏洞 commit 处的完整源码树
│       └── build/       meson/ninja 的 out-of-source 构建目录(编译产物原位置)
├── task/                exploit agent harness 的运行时挂载目录(镜像内为空)
└── workspace/           exploit agent harness 的运行时工作目录(镜像内为空)

关于 task/ 与 workspace/

两者是 exploit agent harness 在运行复现/利用时使用的工作目录:workspace/ 作为 agent 的 默认工作区,task/ 用于放置单次复现任务的输入。镜像中二者为空,复现时由 harness 在运行期填充, 属于环境的标准约定目录,不包含构建产物。

复现方式

构建在容器内为 meson + ninja 的 out-of-source 构建(见 compile/build.sh), 构建目录为 /src/libvirt/build/。主二进制为 compile/artifacts/libvirtd。 按 description.md 的任务说明,在 guest 关机期间并发调用 virConnectGetAllDomainStats, 触发 qemuProcessHandleMonitorEOF 中的释放后使用,使守护进程崩溃以验证漏洞。

下载工具