WordPressのREST APIバッチルートの脆弱性wp2shellの悪用
WordPress.orgの2026年7月17日の告知によると、WordPress本体にリモートコード実行に至るREST APIの問題があった[1]。発見者のSearchlight Cyberは連鎖をwp2shellと呼び、プラグインの無い標準の環境でも匿名で悪用できるとした[19]。京都教育大学は10月13日、この脆弱性の悪用で学内の6サイトが不正侵入を受け、ページの一部が改ざんされたと公表した[9]。
脆弱性の内容
セキュリティリリースの7.0.2が対処したのは、深刻度がcriticalとhighの2件の問題だった[1]。SQLインジェクションを容易にする問題は3人の報告者がチームで報告し、バッチルートの混同の問題はAssetnote / Searchlight Cyberの研究者が報告した[1]。
| 項目 | CVE-2026-63030 | CVE-2026-60137 | 資料 |
|---|---|---|---|
| CWE | CWE-436(Interpretation Conflict) | CWE-89(SQL Injection) | [10、11] |
| CVSS v3.1(CNAのWPScan) | 9.8(CRITICAL)〔注1〕 | 5.9(MEDIUM)〔注2〕 | [10、11] |
| Cloudflareの評価 | Critical | High | [21] |
| GHSA | GHSA-ff9f-jf42-662q | GHSA-fpp7-x2x2-2mjf | [1] |
| KEVの名称 | WordPress Core Interpretation Conflict Vulnerability | WordPress Core SQL Injection Vulnerability | [12、13] |
| KEVの対応期限 | 2026年7月24日 | 2026年8月4日 | [12、13] |
| SSVCのExploitation(CISA-ADP) | active | active | [10、11] |
CVE Programの記録では、CVE-2026-63030はREST APIのバッチエンドポイントのルート混同で、CVE-2026-60137と組み合わせるとSQLインジェクションとリモートコード実行を許しうる[10]。CVE-2026-60137は、WP_Queryのauthor__not_inパラメータを正しく無害化せず、プラグインやテーマが信頼できない入力を渡すとSQLインジェクションを許しうる問題だった[11]。
Cloudflareは、CVE-2026-63030は永続的なオブジェクトキャッシュを使っていないときに、認証のない攻撃者にバッチエンドポイントを通じたコード実行を許すとした[21]。Eye Securityは、RedisやMemcachedなどの永続的な外部オブジェクトキャッシュを使うサイトはこの経路を避けうるとしたうえで、更新を勧めた[23]。
仕組みの解説
Searchlight Cyberの7月20日の解説では、バッチAPIはWordPress 5.6(2020年)で導入され、1回の要求で複数の仮想的なAPI要求を送れる[20]。認証の有無にかかわらず、このエンドポイントに到達できる[20]。バッチ処理は検証と実行を2つのループに分け、$matchesと$validationの2つの配列で要求を対応させている[20]。不正なサブリクエストでは$validationだけが進み、以後の要求は別の要求の検証結果で実行される[20]。
author__not_inは、入力が配列なら各要素をabsintで整数にするが、スカラーの文字列はそのままSQLに埋め込む[20]。バッチAPIはGETを受け付けないが、Searchlight Cyberはバッチを入れ子にして検証の食い違いを2重に使い、GETの経路に到達した[20]。SQLインジェクションで一時的に管理者の権限を得て新しい管理者アカウントを作り、そのアカウントでバックドアのプラグインを上げると、コード実行に至る[20]。
GMO Flatt Securityの7月18日の解説によると、解説を出した段階でフルチェーンのPoCは公開されていなかった[24]。同社の調査では、標準の構成でも任意コード実行が可能だと確認した[24]。
Patchstackは解説で、author__not_inの修正は値をwp_parse_id_list()に通して整数の一覧にすると説明した[39]。バッチの修正は、エラーの分岐で$matchesにもエラーを入れて配列の位置を揃え、再入を防ぐ処理を加えた[39]。Hadrianは、バッチのエンドポイントがパーマリンクの設定に依存せず、/wp-json/batch/v1と常に使える/?rest_route=/batch/v1の両方で応答すると書いた[42]。
AIを使った発見の経緯
Searchlight Cyberは7月17日の告知で、深刻度と防御側が更新する時間を考えて技術詳細を出さず、影響を確かめるサイトwp2shell.comを公開した[19]。同社は7月20日の解説で、週末のあいだ詳細の公表を控えていたが、その間にCalifとHacktronが独立に連鎖全体を再現したと書いた[20]。Hackifyによると、発見者はWordPressのHackerOneのプログラムを通じて報告していた[43]。
Hackifyは7月17日の記事で、公表された手掛かりとwp2shell.comの検査ツールを基に、隔離した試験環境でClaude Codeを使って6分で動くPoCを作ったと書いた[43]。このPoCは公開しないとした[43]。
Searchlight Cyberは7月20日の解説の題で、エクスプロイトの仲介業者がWordPressのRCEに50万ドルを払うと書いた[20]。同じ解説で、研究者はGPT5.6 Sol UltraにWordPressのソースを解析させ、認証前のSQLインジェクションを見つけたと説明した[20]。約4時間後には、認証前の読み取り専用のSQLインジェクションで管理者への権限の昇格が可能だという回答を得た[20]。
使用量は週の使用量の50%だった[20]。費用は200ドルの契約の按分で約25ドルになる[20]。エクスプロイト全体は10時間強で作られた[20]。
時系列
| 日付 | 主体 | 内容 | 資料 |
|---|---|---|---|
| 2025年 | WordPress | 6.9を公開した | [38] |
| 2026年 | Cloudflare | 協定世界時17時3分にWAFのルールを配備した | [21] |
| 2026年 | WordPress.org | 修正版を公開した | [1] |
| 2026年 | CVE Program | 両CVEを公開した | [10、11] |
| 2026年 | WPScan | CNAとしてCVSS v3.1の値を加えた | [14、15] |
| 2026年 | エックスサーバー | 対象サーバーで/wp-json/batch/v1への通信を遮断した | [5] |
| 2026年 | Searchlight Cyber | 技術詳細を公開した | [20] |
| 2026年 | CrowdSec | 検知ルールを稼働させ、最初の悪用の試みを観測した | [40] |
| 2026年 | CISA | 両CVEをKEVカタログに追加した | [10、11] |
| 2026年 | 京都教育大学 | 学内サーバーへの不審なアクセスを多数確認し、調査した | [9] |
| 2026年 | IPA | 注意喚起を公開した | [17] |
| 2026年 | エックスサーバー | 影響を受ける版のWordPressを同社側で順次更新した | [5] |
| 2026年 | エックスサーバー | 影響を受ける版を使うドメインを除き、遮断を解除した | [5] |
| 2026年 | 京都教育大学 | 不正侵入を受けた全サイトのリストアと脆弱性への対応を終え、外部公開を再開した | [9] |
| 2026年 | CISA-ADP | 公開時に付けたCVSS v3.1の値を外した | [14、15] |
対象の製品と版
| 製品 | 影響を受ける版 | 修正版 | 資料 |
|---|---|---|---|
| WordPress 7.0系 | 7.0.0〜7.0.1(両方のCVE) | 7.0.2 | [1、7] |
| WordPress 6.9系 | 6.9.0〜6.9.4(両方のCVE) | 6.9.5 | [1、7] |
| WordPress 6.8系 | 6.8.0〜6.8.5(CVE-2026-60137だけ)〔注3〕 | 6.8.6 | [1、7] |
| WordPress 7.1のベータ版 | 両方のCVE | 7.1 beta2 | [1] |
WordPress.orgは告知で、6.8より前の版は影響を受けないと説明した[1]。HelpHubの版のページでは、修正したファイルを/wp-includes/rest-api/class-wp-rest-server.php、/wp-includes/class-wp-query.php、/wp-includes/rest-api.phpの3つとした[2]。修正は影響を受ける古いブランチにも提供したが、積極的にサポートするのは最新版だけだ[2]。
| 配布元 | 状態 | 修正版・アドバイザリ | 資料 |
|---|---|---|---|
| エックスサーバー(エックスサーバー、XServerビジネス、XServer for WordPress) | 通信の遮断による暫定対策と、事業者側での更新 | 影響を受ける版を事業者側で修正版へ更新 | [5] |
| GMOペパボ(ロリポップ!) | 利用者の更新を案内 | マイナーアップデートの自動更新が有効なら修正版へ自動で更新(簡単インストールで設置した場合は初期状態で有効) | [6] |
| さくらインターネット(さくらのレンタルサーバ) | クイックインストールの更新先を7.0.1から変更 | 2026年7月22日と7月29日にクイックインストールの版を更新 | [8] |
悪用の状況
Patchstackは7月17日の解説で、ルールを直ちに配備し、ログで既に悪用の試みを見ていると書いた[39]。Beazley Securityは同じ日の勧告で、その段階では実環境の悪用を把握しておらず、公開のPoCも無いとした[41]。The Hacker Newsは7月18日の更新で、その日までに悪用の報告は無いと報じた[28]。
SecurityWeekの記事によると、Patchstack、Hexastrike、watchTowrが実環境での悪用か悪用の試みを確認し、Hexastrikeは日曜に複数の攻撃のインシデント対応を支援した[30]。同じ記事で、watchTowrのCEOは公表から数時間でPoCが出たと述べた[30]。
Patchstackの7月20日の更新では、組み合わせた脆弱性がリモートコード実行を含むサイトの完全な乗っ取りに至ることを独自に確かめ、能動的な悪用を見ている[39]。Beazley Securityは7月21日の更新で、両CVEの能動的な悪用が確認されたと書いた[41]。
watchTowrの研究者はThe Hacker Newsに、土曜の早朝(UTC)には公開エクスプロイトで認証情報のハッシュを持ち出す悪用が進んでおり、追加の詳細が公開された後にリモートコード実行が続いたと語った[29]。
Wizの報告では、CVEの公表時に、WordPressを使う組織の60%が脆弱なインスタンスを1つ以上持っていた[22]。公表から24時間で、この割合は50%に低下した[22]。脆弱なサーバーをインターネットに公開していた組織は、同じ期間に25%から10%に下がった[22]。
Wizは、クラウドで自己運用されるWordPressに対し、複数の攻撃者がこの連鎖の悪用に成功したのを観測した[22]。挙げた行為は、悪意あるプラグインの設置、利用者の列挙、wp-configを狙うローカルファイルインクルード、管理画面へのアクセスだった[22]。横展開やデータの持ち出しはまだ確認していない[22]。
Eye Securityの7月20日のインシデント対応の手引きでは、強制更新は、自動更新を無効にしたサイトや更新の前に侵害されたサイトには確実には届かない[23]。SQLインジェクションだけでもwp_usersテーブルを読めるとして、全利用者のパスワードのリセットを勧めた[23]。
The Hacker Newsの別の記事によると、KEVIntelのデータでは、スイス・ドイツ・英国・インドネシア・リトアニア・オランダ・シンガポールの13の固有のIPアドレスがCVE-2026-63030の悪用に結び付いた[29]。同じ記事は、悪用の後に100を超えるバックドアの管理者アカウントが作られたとされると報じた[29]。少なくとも1件で、Golang製のRAT「Overlord RAT」の導入を繰り返し試みる攻撃者が観測されたとも書いた[29]。watchTowrは、公開エクスプロイトが出た後にハニーポットが「数万件の悪用の試み」を記録したと述べた[29]。
F5 Labsの8月8日の報告では、センサーがあるIPアドレスから、入れ子のバッチでUNION型のSQLインジェクションを送る完全な攻撃を捉えた[26]。同一のペイロードが米国の2つ以上のセンサーに送られており、F5 Labsは標的をまたぐ自動の再送を示すとした[26]。
| 種別 | 値 | 示した組織 | 資料 |
|---|---|---|---|
| 要求の送り先 | /wp-json/batch/v1、/index.php?rest_route=/batch/v1、/?rest_route=/batch/v1 | F5 Labs | [26] |
| 送信元とペイロード | 185.242.3.238から送られた735バイトのペイロード | F5 Labs | [26] |
| 応答 | バッチエンドポイントへの要求に対するHTTP 207/200(悪用成功の比較的確かな指標) | Wiz | [22] |
| User-Agent | wp2shell、rezwp2shellを含む文字列 | Wiz | [22] |
| ウェブシェル | 1行のウェブシェルと、プラグイン「CMSmap」を装った150KBのウェブシェル | Wiz | [22] |
| 残る痕跡 | oEmbedのキャッシュの行とchangeset/requestの投稿(公開PoCは管理者とウェブシェルを自ら消す) | Eye Security | [23] |
GMO Flatt Securityは解説で、バッチAPIはバッチ全体の応答に通常207 Multi-Statusを使うため、攻撃が成功したかどうかはログだけでは確かめられないと書いた[24]。
CrowdSecの8月24日の報告によると、8月23日までの15日間に、悪用のパターンに一致する要求を送った固有のIPアドレスは62,802で、同社が追跡するCVEで最多だった[40]。7月20日〜8月22日の34日間に記録した信号は3,147,518件だった[40]。最多の日は7月26日で、158,259件だった[40]。同社は8月17日に、悪用の段階をRapid EscalationからActive Exploitationに引き上げた[40]。
CrowdSecが数えた送信元の割合は、米国が28%だった[40]。ブルガリアは16%、オランダは14%だった[40]。イランは6%に下がった[40]。観測した通信の大半はクエリ文字列の形の/?rest_route=/batch/v1で、パスによる遮断を通り抜ける[40]。
CrowdSecは、一致した要求は悪用の試みで、成功は確認できず、数値は確認された侵害を表さないとした[40]。
GreyNoiseの9月21日の報告では、ある攻撃者が7月20日ごろからwp2shellの連鎖でWordPressを狙い始めた[27]。攻撃は29か国の少なくとも49組織で成功し、主な対象は小規模事業者と政府部門だった[27]。西側の政府組織1件では、警察・政府機関に関するアカウント、平文のパスワード、個人情報を含む18,566件以上の記録が盗まれた[27]。
GreyNoiseは攻撃者を、UTC+8で活動している可能性のある、中国語話者の疑いがある単一の主体とした[27]。Acronisが報告した「Red Heron」と同一か、関係があるとも書いた[27]。時系列は保存されていたファイルの更新時刻から再構成したもので、正確な時刻は公式の調査と異なる場合がある[27]。IPアドレスは、被害者への配慮と運用上のリスクから伏せた[27]。
国内の被害と注意喚起
IPAの7月22日の注意喚起では、両方の脆弱性を実証するコードが公開されており、悪用が拡大する可能性がある[17]。IPAは、環境や設定によっては自動更新が有効でないか更新に失敗している可能性があるとして、管理画面での確認と手動での更新の検討を求めた[17]。
JPCERT/CCは7月23日のWeekly Reportで、複数のセキュリティ企業がこの脆弱性の悪用を確認しているとした[18]。
京都教育大学の告知によると、不正侵入を受けたのは家政科・理学科・教育学科心理学教室・附属高等学校・附属桃山中学校・附属幼稚園のサイトで、大学は外部からのアクセスを止めた[9]。原因はWordPressの脆弱性wp2shell(CVE-2026-60137、CVE-2026-63030)の悪用で、侵入用のPHPファイルが置かれていた[9]。他のサーバーやシステムへの被害の拡大は確認されなかった[9]。サーバーは個人情報や機密性の高い情報を保有しておらず、それらの漏えいも確認されていない[9]。
GreyNoiseの被害国の表では、日本の被害組織は2つだった[27]。
修正と回避策
WordPress.orgは告知で、直ちにサイトを更新するよう勧めた[1]。深刻度を理由に、WordPress.orgのチームは影響を受ける版のサイトに対し、自動更新の仕組みで強制更新を有効にした[1]。自動バックグラウンド更新に対応するサイトでは、更新が自動で始まる[1]。
Searchlight Cyberの告知によると、更新できない場合の一時的な防御は、REST APIへの匿名アクセスを止めるプラグインを入れるか、WAFで/wp-json/batch/v1と?rest_route=/batch/v1を遮断する方法である[19]。同社は、2つの方法はサイトの正規の利用に影響しうるとし、更新できるまでの緊急の一時措置としてだけ検討するよう書いた[19]。
Cloudflareの7月17日のブログでは、WordPressのセキュリティチームが公表の前に脆弱性をCloudflareに開示していた[21]。新しいルールは、通信がCloudflare WAFを経由する限り、無料・有料のプランを問わず全顧客を保護する[21]。Cloudflareは、WAFの防御は顧客が更新するあいだの露出を減らすが、更新の代わりにはならないとした[21]。
Rapid7は7月20日のコンテンツで、Exposure Command、InsightVM、Nexposeの顧客向けにCVE-2026-63030の認証なしの検査を提供した[25]。Hadrianは対象を変えずに確かめる検査を作り、脆弱な版ではcategoriesのサブリクエストがblock_cannot_readを、修正版ではrest_term_invalidを返すとした[42]。
CyberInsiderによると、WordfenceはこのRCEにCVSS 9.8を付けた[44]。ファイアウォールの保護はPremium、Care、Responseの顧客に直ちに配り、無料版の利用者には、標準の30日間の遅れを置いて提供する[44]。
国内のホスティング事業者の措置
エックスサーバーは7月19日の告知で、同社のサービスでこの脆弱性を悪用した被害は確認していないと説明した[5]。遮断によって、batch v1のREST APIを使うプラグイン・テーマ・外部連携・独自開発の機能が正常に動かなくなることがあるが、通常のWebサイトの表示・閲覧と管理画面の操作には影響しない[5]。
エックスサーバーの追記によると、機能に影響が出た利用者には個別に制限の解除を検討する[5]。影響を受ける版の更新は、不正アクセスによる被害の防止を優先して、対象の利用者への事前の案内より先に実施した[5]。不審な変更やアクセスの痕跡を確かめる手順の動画も公開している[5]。
さくらインターネットは告知で、自動更新を有効にしていても更新が完了していない場合があるとして管理画面での確認を求め、個別環境の影響の調査は行わないとした[7]。
未公表の事項
- WordPress.orgとCISAによる、侵害されたサイトの総数
- WordPress.orgによる、自動更新を無効にしたサイトへの強制更新の扱い
- WordPress.orgによる、強制更新で更新したサイトの数
- GreyNoiseが報告した被害組織の名前
- 京都教育大学の被害と、GreyNoiseが挙げた日本の2組織との対応
注
出典
当事者
- [1]WordPress.org『WordPress 7.0.2 Release』(2026年7月17日公開、2026年7月18日更新)
- [2]WordPress.org『Version 7.0.2』(2026年7月17日公開、2026年7月18日更新)
関係組織
- [5]エックスサーバー株式会社『【重要】WordPressの脆弱性(wp2shell/CVE-2026-63030)に関する注意喚起とサーバー側対策のお知らせ(8/27 14:50 更新)』(2026年7月19日公開、2026年8月27日更新)
- [6]GMOペパボ株式会社『WordPress本体の重要なセキュリティアップデートについてのお知らせ』(2026年7月21日公開)
- [7]さくらインターネット株式会社『WordPress の脆弱性にご注意ください(CVE-2026-63030・CVE-2026-60137)』(2026年7月21日公開)
- [8]さくらインターネット株式会社『さくらのレンタルサーバ クイックインストールのバージョンアップ (WordPress)』(2026年7月15日公開、2026年7月21日更新)
- [9]国立大学法人京都教育大学『本学Webサーバーへの不正侵入に伴うWebページの一部改ざんについて』(2026年10月13日公開)
公的機関
- [10]CVE Program『CVE-2026-63030 CVE Record』(2026年7月17日公開、2026年10月7日更新)
- [11]CVE Program『CVE-2026-60137 CVE Record』(2026年7月17日公開、2026年10月7日更新)
- [12]NIST National Vulnerability Database『CVE-2026-63030(NVD API)』(2026年7月17日公開、2026年10月8日更新)
- [13]NIST National Vulnerability Database『CVE-2026-60137(NVD API)』(2026年7月17日公開、2026年10月8日更新)
- [14]NIST National Vulnerability Database『CVE-2026-63030 Change History(NVD API)』(2026年7月17日公開、2026年10月8日更新)
- [15]NIST National Vulnerability Database『CVE-2026-60137 Change History(NVD API)』(2026年7月17日公開)
- [17]独立行政法人情報処理推進機構『WordPressの脆弱性対策について(CVE-2026-60137、CVE-2026-63030:wp2shell)』(2026年7月22日公開)
- [18]一般社団法人JPCERTコーディネーションセンター『JPCERT/CC Weekly Report 2026-07-23号』(2026年7月23日公開)
調査・観測
- [19]Searchlight Cyber Ltd『wp2shell: Pre Authentication RCE in WordPress Core』(2026年7月17日公開)
- [20]Searchlight Cyber Ltd『Exploit brokers pay $500,000 for a WordPress RCE. I found one with GPT5.6 Sol Ultra and $25』(2026年7月20日公開)
- [21]Cloudflare, Inc.『Cloudflare WAF protects WordPress applications from two high-severity vulnerabilities』(2026年7月17日公開、2026年7月20日更新)
- [22]Wiz, Inc.『Exploitation in the Wild of wp2shell』(2026年7月20日公開、2026年7月22日更新)
- [23]Eye Security『wp2shell: incident response guide (CVE-2026-63030 + CVE-2026-60137)』(2026年7月20日公開、2026年10月19日更新)
- [24]GMO Flatt Security株式会社『WordPressの深刻度「緊急」脆弱性 wp2shell の概要と対応指針』(2026年7月18日公開)
- [25]Rapid7, Inc.『CVE-2026-63030: wp2shell a Critical Remote Code Execution Vulnerability in WordPress Core』(2026年7月17日公開、2026年7月22日更新)
- [26]F5, Inc.『CVE-2026-63030 and CVE-2026-60137: 'wp2shell' Captured Exploit Payload』(2026年8月8日公開)
- [27]GreyNoise Intelligence, Inc.『Open Season on Kapibala: Attacker Steals Over 18,000 Government Records Through WordPress Exploitation』(2026年9月21日公開)
- [39]Patchstack『Unauthenticated SQL Injection in WordPress Core Fixed in 7.0.2』(2026年7月17日公開、2026年7月20日更新)
- [40]CrowdSec『CVE-2026-63030 WordPress WP2Shell Exploitation: 62,802 Attacking IPs Observed by CrowdSec』(2026年8月24日公開)
- [41]Beazley Security『"WP2Shell" Critical WordPress RCE Chain (CVE-2026-63030 & CVE-2026-60137)』(2026年7月17日公開、2026年7月21日更新)
- [42]Hadrian『wp2shell: A Pre-Authentication RCE in WordPress Core's REST Batch API』(2026年7月17日公開、2026年10月22日更新)
- [43]Hackify『wp2shell: critical pre-auth RCE in WordPress core (CVE-2026-63030 & CVE-2026-60137)』(2026年7月17日公開、2026年7月18日更新)
報道機関
- [28]The Hacker News『New wp2shell WordPress Core Flaw Lets Unauthenticated Attackers Run Code』(2026年7月17日公開、2026年7月18日更新)
- [29]The Hacker News『WordPress wp2shell Exploitation Grows as Public Exploit Fuels Mass Scanning』(2026年7月21日公開)
- [30]SecurityWeek『WP2Shell WordPress Vulnerabilities Exploited in the Wild』(2026年7月20日公開)
- [44]CyberInsider『WordPress releases emergency update for critical 'wp2shell' RCE flaw』(2026年7月18日公開)
背景資料
- [38]WordPress.org『Version 6.9』(2025年12月2日公開)
更新記録
- 2026年8月6日:公開した。
- 2026年8月8日:F5 Labsの8月8日の報告(出典26)を加え、「悪用の状況」の節と侵害の痕跡の表を改めた。
- 2026年8月24日:CrowdSecの8月24日の報告(出典40)を加え、「悪用の状況」と「時系列」の節を改めた。
- 2026年8月27日:エックスサーバーの告知の8月26日と27日の追記(出典5)を加え、「時系列」と「修正と回避策」の節を改めた。
- 2026年9月21日:GreyNoiseの9月21日の報告(出典27)を加え、「悪用の状況」の節と「未公表の事項」を改めた。
- 2026年10月7日:CVE Programの2件の記録の10月7日の更新(出典10、11)で外れたCISA-ADPのCVSSの値を、「時系列」と注に加えた。
- 2026年10月8日:NVDの2件の記録と変更履歴の10月8日の更新(出典12、13、14)を加え、「脆弱性の内容」の表を改めた。
- 2026年10月13日:京都教育大学の10月13日の告知(出典9)を加え、リードと「悪用の状況」「時系列」の節を改めた。
- 2026年10月19日:Eye Securityの手引きの10月19日の更新(出典23)を加え、「悪用の状況」の節を改めた。
- 2026年10月22日:Hadrianの解説の10月22日の更新(出典42)を加え、「仕組みの解説」と「修正と回避策」の節を改めた。
