はじめに
2026年7月17日、WordPress コアに認証不要でリモートコード実行(RCE)が可能になる重大な脆弱性チェーン 「wp2shell」 が公表されました。攻撃者はWordPressの管理者アカウントがなくても、外部からサーバーを乗っ取ることができます。対象サイト数は全世界で5億以上と推計されており、日本のWordPressサイト運営者は即時アップデートが必要です。
修正版は同日公開済みです(WordPress 7.0.2 / 6.9.5 / 6.8.6)。
1. 何が起きたか
2026年7月17日、WordPress は緊急セキュリティリリース(7.0.2 / 6.9.5 / 6.8.6)を公開しました。このリリースで修正された脆弱性のうち2件を組み合わせると、認証なしで外部から任意のコードを実行できる攻撃チェーンが成立します。このチェーンは発見者のチームが 「wp2shell」 と名付けています。
脆弱性の発見・報告者は、Searchlight Cyber(旧 Assetnote)の Adam Kues 氏です。GMO Flatt Security リサーチチームの独立検証でも、標準構成の WordPress 6.9〜7.0 系においてデフォルト状態で Pre-Auth RCE が再現可能であることが確認されました。
深刻度は「緊急(Critical)」であり、WordPress.org は対象バージョンに対して自動更新機能を通じた強制アップデートを発動しています。
| 項目 | 内容 |
|---|---|
| CVE 番号 | CVE-2026-63030(RCEの主因)/ CVE-2026-60137(SQLi) |
| 攻撃種別 | Pre-Auth RCE(認証不要のリモートコード実行) |
| 深刻度 | Critical(緊急) |
| 攻撃の前提条件 | なし(デフォルト構成で成立) |
| 発見者 | Adam Kues(Searchlight Cyber) |
| 修正版リリース日 | 2026年7月17日 |
| 修正版バージョン | WordPress 7.0.2 / 6.9.5 / 6.8.6 |
2. 影響を受けるバージョン
下表は WordPress 公式リリースノートおよび Searchlight Cyber のアドバイザリに基づいています。
| WordPress バージョン | CVE-2026-60137(SQLi) | CVE-2026-63030(バッチ混同) | wp2shell RCE | 対応する修正版 |
|---|---|---|---|---|
| 6.8 未満 | 対象外 | 対象外 | 対象外 | 最新安定版を推奨 |
| 6.8.0〜6.8.5 | 影響あり | 対象外 | 成立しない | 6.8.6 以上 |
| 6.9.0〜6.9.4 | 影響あり | 影響あり | 成立する | 6.9.5 以上 |
| 7.0.0〜7.0.1 | 影響あり | 影響あり | 成立する | 7.0.2 以上 |
| 7.1 Beta 1 | 影響あり | 影響あり | 成立する | 7.1 Beta 2 以上 |
ポイント: 6.8系は RCE は成立しませんが、SQLインジェクション(CVE-2026-60137)の影響を受けるため、6.8.6 へのアップデートが必要です。6.9系・7.0系は早急に更新してください。
3. 攻撃の仕組み(情シス担当者向け解説)
wp2shell は、2つの脆弱性を連鎖させた攻撃チェーンです。技術的な詳細を情シス担当者向けに簡潔に解説します。
脆弱性① CVE-2026-60137 — SQLインジェクション
WordPress の投稿検索処理(WP_Query)に存在するSQLインジェクション脆弱性です。author__not_in という検索パラメータが配列ではなく文字列で渡された場合に整数へのサニタイズが行われず、任意のSQL文が注入できる状態でした。
ただし、この脆弱性単体では外部からの入力経路がなく(プラグインやテーマによる追加実装なしには)、直接の悪用は困難でした。
脆弱性② CVE-2026-63030 — REST API バッチルート混同
WordPress 6.9.0 で追加されたBatch API(/wp-json/batch/v1)の実装に不備があります。このエンドポイントは複数のREST APIリクエストを1回のHTTPリクエストにまとめて処理するものですが、サブリクエストのバリデーションに失敗した場合に内部の配列インデックスがずれ、別のエンドポイントのハンドラが誤って呼び出される状態になります。
これにより攻撃者は、本来アクセスできないREST APIエンドポイントの権限チェックをバイパスし、任意のパラメータを渡すことができます。
攻撃チェーンの成立
CVE-2026-63030 を利用してバイパスした経路から CVE-2026-60137 のSQLインジェクションを呼び出すと、認証不要のままデータベースへの任意クエリが可能になります。GMO Flatt Securityの検証では、さらにこれをRCEまで繋げることが標準構成で確認されています。
攻撃の入口となるURL:
POST /wp-json/batch/v1POST /?rest_route=/batch/v1
ログ監視でこれらのエンドポイントへのPOSTリクエストが急増している場合は、侵害の痕跡を調査してください。
4. 推奨対応手順
根本対策(必須):WordPress コアの更新
| 現在のバージョン | 更新先 |
|---|---|
| 7.0.0〜7.0.1 | 7.0.2 |
| 6.9.0〜6.9.4 | 6.9.5 |
| 6.8.0〜6.8.5 | 6.8.6 |
WordPress 管理画面 → 「更新」 → 「今すぐ更新」 で適用できます。自動更新を有効にしている場合でも、全管理サイトが修正版になっていることを目視で確認してください。
WAFやプラグインによるアクセス制限は、脆弱なコードを修正するものではありません。あくまで緩和策であり、コアの更新に代わるものではありません。
緩和策(更新が即時適用できない場合の一時対応)
以下の2つのいずれかを実施してください。ただし、正規のBatch API利用に影響が出る可能性があります。
① WAFでバッチエンドポイントを遮断する
以下の両URLへのアクセスをブロックします(URLデコード後の値で判定し、HTTPメソッドを限定しないこと):
/wp-json/batch/v1/?rest_route=/batch/v1
Cloudflare を利用している場合は、CVE-2026-63030 および CVE-2026-60137 に対応するWAFルールがすでに配備されています。ルールが「ブロック」モードになっているか、例外や「ログ」へのオーバーライドがないかを確認してください。
② プラグインで未認証アクセスを禁止する
rest_pre_dispatch フィルターで /batch/v1 への未認証アクセスをHTTP 401で拒否するプラグインが、wp2shell 公式サイト(wp2shell.com) で公開されています。WAFが利用できない場合の代替手段として参照してください。
侵害確認(ログ調査)
以下のパスへのPOSTリクエストをアクセスログで確認してください:
POST /wp-json/batch/v1POST /?rest_route=/batch/v1POST /<WordPressのサブディレクトリパス>/wp-json/batch/v1
また、_method=POST クエリパラメータや X-HTTP-Method-Override: POST ヘッダーを使った迂回パターンも確認対象です。攻撃の成否はアクセスログのみでは判断できません。侵害が疑われる場合は専門家への相談を検討してください。
5. まとめ・YJK からのコメント
wp2shell(CVE-2026-63030 + CVE-2026-60137)は、WordPressの標準インストール環境で認証不要・外部からのRCEが可能な、近年稀に見る深刻な脆弱性です。対象バージョンを利用中の場合は、今すぐコアを更新してください。
| 対応 | 優先度 |
|---|---|
| WordPress 7.0.2 / 6.9.5 / 6.8.6 へ更新 | 最優先(即時) |
| 自動更新の適用状況を全サイトで確認 | 高 |
/wp-json/batch/v1 へのアクセスログを調査 |
高 |
| WAF / プラグインによる緩和策(更新できない場合) | 中(一時対応として) |
以下の組織は特に優先度を上げて対応してください:
- WordPress 6.9系・7.0系を本番環境で運用している企業・団体
- 複数のWordPressサイトをまとめて管理しており、全サイトの更新状況を把握できていない環境
- 自動更新を無効にしている、またはコアの更新を手動管理している環境
YJK では、WordPress を含む Web アプリケーションのセキュリティ診断・緊急対応支援・侵害調査を承っております。対応方法に迷われている場合や、侵害が疑われる場合はお気軽にご相談ください。