Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ENV-CVE-2021-3975 — CVE-2021-3975의 docker 환경 아티팩트 | Kitploit
도구/GitHubGitHub/yan5ui/env-cve-2021-3975
Container SecurityVulnerability AnalysisExploitationLearning & EducationBinary ExploitationLabs & Practice
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에서 사용 후 해제를 트리거하고, 데몬 프로세스를 충돌시켜 취약점을 검증합니다.

도구 다운로드