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 環境のアーティファクト

リポジトリを見る
2ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

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 / virtqemod / 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/ について

この2つは、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 内の解放後使用をトリガーしてデーモンをクラッシュさせ、脆弱性を検証します。

ツールをダウンロード