
ピン留めされた EDK II/OVMF ファームウェアをビルドし、QEMU で UEFI VM を起動し、PXE ネットワークブートの DoS およびメモリ破壊脆弱性に対する Python PoC スクリプトを実行する教育用ラボ。
EDK II / OVMF における PXE ネットワークブートの脆弱性を研究するための教育用ラボです。固定された EDK II リビジョンをビルドし、QEMU 上で UEFI 仮想マシンを起動し、サービス拒否(DoS)とメモリ破壊を調査するための Python による概念実証スクリプトを含みます。
参考資料: EDK II セキュリティアドバイザリ · アップストリームの修正
dnsmasq、ip/tc(通常は iproute2 または iproute に含まれます)、および sudo/root 権限。展開したアーカイブから:
cd pxe-lab-public
chmod +x *.sh
./start.sh
ランチャーは依存関係を確認し、不足しているパッケージのインストールを提案し、必要に応じて edk2-stable202608(コミット 2970e5699ba6267f3384ffab20f96647578aebc8)をビルドし、VM 制御メニューを開きます。start.sh やファームウェアのビルドを sudo で実行しないでください。
便利なコマンド:
./start.sh --check # 環境を確認する
./start.sh --build-only # QEMU を起動せずに固定ファームウェアをビルドする
./start.sh --system # 代わりにシステムの OVMF を使用する(固定された脆弱性の検証には適していません)
./lab_run.sh --help # ネットワーク、キャプチャ、QEMU のオプションを表示する
デフォルトの QEMU ユーザーモードネットワークは分離されており、root を必要としません。パケットキャプチャを記録するには、ファームウェアをビルドした後に ./lab_run.sh --pcap session.pcap を実行してください。
PoC スクリプトはブリッジモードを必要とします。デフォルトの QEMU ユーザーモードネットワークにパケットを注入することはできません。
まず、通常ユーザーとして ./start.sh --build-only でファームウェアをビルドします。次に、1 つのターミナルで:
cd pxe-lab-public
sudo ./lab.sh --network bridge --namespace pxelab
メニューで 1(Start) を選択します。別のターミナルで、展開したアーカイブのルートから次のいずれか 1 つを実行します:
cd PoC-DoS
sudo bash ./start_dos.sh
または、実験的なメモリ破壊 / RCE の試行には:
cd PoC-RCE
sudo bash ./start_rce.sh
これらの実験は、分離された仮想 PXE 環境に細工されたトラフィックを送信し、ファームウェアのハング、クラッシュ、または例外を引き起こす可能性があります。クラッシュやレジスタ値の破壊は、任意コード実行が成功した証拠ではありません。 RCE スクリプトは実験的な試行であり、検証済みの RCE エクスプロイトではありません。結果はシステムやファームウェアのビルドによって異なる場合があります。
ラボのインフラストラクチャ(セットアップ、ビルド、VM 管理のコード)は、大規模言語モデル(LLM)の支援を受けて生成され、著者によってテストされました。DoS および RCE の概念実証スクリプトは著者自身が作成し、LLM アシスタントとともにテストされました。 テストは、正確性、安全性、再現性、または他のシステムとの互換性を保証するものではありません。
このコードは、所有および管理している機器上でのみ、分離されたテスト環境で使用してください。 第三者システム、ネットワーク、またはデバイスに対して使用しないでください。
すべてのコードとスクリプトは、**いかなる種類の保証もなく「現状のまま」**提供されます。適用法で許容される最大限の範囲で、著者は本リポジトリの使用に起因するエラー、誤動作、損害、データ損失、または結果について責任を負いません。ユーザーは自身の行為および適用法の遵守について単独で責任を負います。