Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2020-25637-libvirt-double-free — 二重解放 | Kitploit
ツール/GitHubGitHub/brahmiboudjema/cve-2020-25637-libvirt-double-free
脆弱性分析エクスプロイトデバッガ学習と教育バイナリエクスプロイトラボと実践
GitHubbrahmiboudjema/cve-2020-25637-libvirt-double-free

CVE-2020-25637-libvirt-double-free

二重解放

リポジトリを見る
35年前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

root@kitploit:~
 CVE-2020-25637 
                                    

root@kitploit:~
*** 説明 ***

実行中の QEMU ドメインのネットワークインターフェース情報を要求する libvirt API(バージョン 6.8.0 より前)に、二重解放 (double free) の問題が発生しました。この脆弱性は、ポリシー制御ドライバー (polkit) に影響を与えます。具体的には、読み書きソケットに接続し、ACL 権限が制限されたクライアントが、この脆弱性を利用して libvirt デーモンをクラッシュさせ、サービス拒否 (DoS) を引き起こしたり、システム上で権限を昇格させる可能性があります。この脆弱性の最大の脅威は、データの機密性、完全性、およびシステムの可用性に関するものです。

この脆弱性の最大の脅威は以下の通りです:

  • 機密性
  • データの完全性
  • システムの可用性

脆弱性スコア:

  • RedHat による中程度の脆弱性、平均スコア 6.4

    • 攻撃元 = ローカル
    • 複雑さ = 低
    • 認証 = 不要
  • NVD による中程度の脆弱性、平均スコア 6.7

    • 攻撃元 = ローカル
    • 複雑さ = 高
    • 認証 = 不要

root@kitploit:~
*** この脆弱性を悪用するために必要な異なるツールと重要な前提条件 ***
    

  1. qemu-kvm と libvirt のインストール:

まず、オペレーティングシステムの互換性を確認する必要があります。以下のコマンドを実行します。

root@kitploit:~
 grep -E -c "vmx|svm" /proc/cpuinfo

コマンドが OK を返したら、インストールを続行できます。

root@kitploit:~
sudo apt-get -y install qemu-kvm libvirt-bin virt-top outils-libguestfs virtinst bridge-utils

2) vagrant のインストール:

vagrant をインストールするには、以下のコマンドを実行します。

root@kitploit:~
sudo apt -y install vagrant

Vagrant と KVM をインストールしたら、Vagrant を使用して KVM 仮想マシンを管理できるようにするための libvirt プラグインをインストールする準備が整います。

root@kitploit:~
vagrant plugin install vagrant-libvirt

プラグインがインストールされたことを確認できます。

root@kitploit:~
vagrant plugin list

3) vagrant ボックス:

Vagrant で既製のテンプレートを直接使用することが可能です。ここでは Ubuntu 20.04 イメージを使用します。

イメージを vagrant ボックスに追加するには、以下のコマンドを実行します。

root@kitploit:~
vagrant box add generic / ubuntu1804 --provider = libvirt

ローカルに存在するボックスのリストを表示するには:

root@kitploit:~
vagrant box list

4) デバッグ

デバッグには2つの方法があります。

  • GDB:オペレーティングシステムにツールがインストールされていない場合は、以下のコマンドを実行します。

    root@kitploit:~
    sudo apt-get install gdb
    
  • Valgrind:オペレーティングシステムにツールがインストールされていない場合は、以下のコマンドを実行します。

    root@kitploit:~
    sudo apt-get install valgrind
    

root@kitploit:~
*** コードの実行 ***

Vagrant 経由で VM を起動します。

root@kitploit:~
vagrant up

まず、ライブラリをインストールします。

root@kitploit:~
sudo apt-get install -y libvirt-dev

コンパイル:

root@kitploit:~
gcc -g -Wall info1.c -o info1 -lvirt

コードの実行:

root@kitploit:~
./info1 qemu:///system vagrant-vms_ubuntu-01

デバッグ付きでの実行:

root@kitploit:~
valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --log-file=valgrind-out.txt ./info1 qemu:///system vagrant-vms_ubuntu-01

root@kitploit:~
*** 脆弱性の有効化 ***

脆弱性を有効にする前に、libvirt で問題を引き起こす関数の動作を理解することが不可欠です。

攻撃者は、libvirt の qemuAgentGetInterfaces() 関数を介して、解放済みメモリ領域の使用 (use-after-free) を引き起こす可能性があると仮定します。具体的には、ifname 変数のメモリ領域で、サービス拒否 (DoS) を引き起こし、場合によってはコードを実行する可能性があります。

  • この関数は、実行中のドメインのインターフェースリスト(IP アドレスと MAC アドレスを含む)を処理します。
  • 成功した場合はインターフェースの数を返し、エラーの場合は -1 を返します。

待望の瞬間がやってきました。

Vagrant ファイルが起動したら、Qemu/KVM で起動した仮想マシン内で info1.c コードを実行する必要があります。つまり、Vagrant が作成した VM 内でコードを実行する、VM の中に VM を作成するということです。


root@kitploit:~
*** この脆弱性の修正 ***

libvirt の qemuAgentGetInterfaces() 関数内で ifname 変数を NULL に設定するだけです。つまり、ifname 変数は各インターフェースごとに解放される必要があります。


root@kitploit:~
*** デモンストレーション ***

PowerPoint ファイルに、問題 (double free) の簡単なデモンストレーションがあります。


root@kitploit:~
*** 重要 ***

このプロジェクトは、脆弱性の複雑さ、ハードウェアの問題、および時間不足の理由により、完了には至っていません。

ツールをダウンロード