CVE-2026-1357: WPvivid Backupの未認証リモートコード実行
概要
- CVE: CVE-2026-1357
- 影響バージョン: WPvivid Backup & Migration <= 0.9.123
- CVSS: 9.8 (Critical)
- 認証: 不要(未認証)
- 種別: 任意ファイルアップロード + リモートコード実行(RCE)
2026年1月、90万件以上のWordPressサイトで利用されているバックアッププラグイン「WPvivid Backup & Migration」に、認証不要でリモートコード実行が可能な致命的な脆弱性が発見されました。
この脆弱性は「他サイトからバックアップを受信する」オプション機能を有効化しているサイトに影響します。デフォルトでは無効ですが、サイト移行やステージング環境でこのオプションを使ったまま放置しているケースが多く、実際の被害が報告されています。Wordfenceは2026年1月22日に有料会員向けのファイアウォールルールを発行し、2026年2月21日に無料会員にも展開しました。
何が起きたか
脆弱性の根本原因は2つの実装上の欠陥の組み合わせです。
欠陥1 - openssl_private_decrypt() 失敗時の処理継続: バックアップ受信エンドポイントでは、送信元サイトの正当性をRSA暗号で検証しています。しかし openssl_private_decrypt() が失敗(検証エラー)を返した場合でも、コードはその後の処理を中断せず実行を継続していました。本来ならここで処理を止めて拒否すべきですが、エラーチェックが欠落していたため、認証を完全にスキップできました。
欠陥2 - ファイル名のパスサニタイズ欠如: バックアップファイルの受信処理において、ファイル名にディレクトリトラバーサル文字列(../)を含めることができました。これにより、アップロード先のディレクトリ制限を突破し、WordPressのドキュメントルート配下の任意の場所(例:テーマディレクトリ、プラグインディレクトリ)にファイルを書き込めました。
この2つの欠陥が組み合わさることで、外部の攻撃者が認証なしにPHPファイルを任意のパスに配置し、Webシェルとして実行できる状態になりました。
攻撃の仕組み
攻撃フロー:
-
ターゲットの選定: 「他サイトからバックアップを受信」オプションが有効なWordPressサイトを特定する(WPvividの管理画面パスや特定のエンドポイントで判定可能)
-
バックアップ受信エンドポイントへのリクエスト送信: REST APIまたはadmin-ajax.php経由でバックアップ受信エンドポイントを呼び出す
-
RSA検証のバイパス: 不正な(または空の)署名データを送信する。
openssl_private_decrypt()は失敗を返すが、エラーチェックがないためコード実行が継続される
POST /wp-admin/admin-ajax.php
action=wpvivid_upload_backup_to_remote
...
- ディレクトリトラバーサルによるファイル配置: ファイル名に
../を含めることで、バックアップ保存ディレクトリの外にPHPファイルを書き込む
filename: ../../themes/twentytwentyfour/shell.php
content: <?php @eval($_POST['cmd']); ?>
- Webシェルの実行: 書き込んだPHPファイルにHTTPリクエストを送信して任意のコードを実行する
POST /wp-content/themes/twentytwentyfour/shell.php
cmd=system('id');
- 攻撃ウィンドウ: 受信キーの有効期間は24時間。この期間内に攻撃を完了させる必要がある
実際の被害
- 約90万サイトが潜在的に影響を受ける
- 認証不要のため、自動化された大規模スキャン攻撃が容易
- サーバー上で任意コードの実行が可能(OSコマンド実行、ファイル読み書き、データベースダンプ)
- バックアップファイル内に含まれるデータベース接続情報・APIキーの窃取
- ランサムウェアのインストールや、ボットネットへの組み込み
- Wordfenceが1月22日に有料ルールを発行するまでの間、保護なしに露出していたサイトが存在
修正と教訓
修正: バージョン0.9.124(2026年1月28日リリース)で修正済み。openssl_private_decrypt() の返り値を適切にチェックし、検証失敗時は処理を中断するよう修正。また、ファイル名の ../ シーケンスを除去するサニタイズ処理が追加されました。
教訓:
- エラーチェックの徹底: 暗号検証など重要な処理の失敗は、必ず後続処理を中断させる。
if (!$result) { return false; }の一行が致命的な脆弱性を防ぐ - ファイル名のサニタイズ: ユーザー入力をファイルパスに使う場合は
basename()を使うか、../を明示的に除去する - 非デフォルト機能のリスク管理: 移行作業後に有効化した機能を無効化し忘れるケースは多い。定期的な設定レビューが重要
- バックアッププラグインは高権限: バックアップ系プラグインはファイルシステムやDBへの広いアクセス権を持つため、脆弱性の影響が大きい
- ファイアウォールルールの即時適用: Wordfenceの有料プランでは脆弱性発見後すぐにルールが配信される。無料プランとの30日ギャップを認識する
Nyambushでの検出
NyambushはWordPressプラグインのバージョンを自動的に検出し、脆弱性データベースと照合します。WPvivid Backup & Migrationがバージョン0.9.123以下で動作している場合、CVSSスコア9.8の「Critical」警告とともに即座に通知します。
さらに、「他サイトからバックアップを受信」エンドポイントへの外部アクセスが可能かどうかを検査し、リスクが高い設定の場合は追加の警告を表示します。継続監視モードでは、プラグインがアップデートされるまで警告を維持し、修正を確認した時点でアラートを解除します。