WordPressのログイン画面の反射型XSS脆弱性CVE-2026-64638
WordPressが2026年8月6日に公開したセキュリティリリース7.0.3は、pwn.aiが報告したログイン画面の認証前の反射型XSSを含む12件の脆弱性を修正した[1]。発見したpwn.aiは、この認証前のXSSからリモートコード実行(RCE)に至る脆弱性の連鎖をXSS2Shellと名付けた[13]。
脆弱性の内容
CVEレコードによると、攻撃者が用意した悪意ある第三者のサイトを介し、攻撃者の制御外の条件の下で、この脆弱性をRCEに発展させられる[10]。それには、標的の被害者へのソーシャルエンジニアリングの成功と、被害者の明示的な操作が必要だ[10]。
| 項目 | 値 | 資料 |
|---|---|---|
| CVE | CVE-2026-64638(GHSA-52p2-r8wf-jcrf) | [1] |
| CVSS | 8.9(HIGH。CVSS v4.0、ベクトルはCVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H) | [10] |
| CWE | CWE-79(反射型XSS) | [10] |
| 発見者とCNA | 発見者はPwn.ai、CNAはHackerOne(参照にHackerOneの報告3877102) | [10] |
| NVDの分析 | Awaiting Analysis | [11] |
WordPressは告知で、ログイン画面のXSSの詳細をアドバイザリに載せたとした[1]。WordPressはGitHubのwordpress-developリポジトリにもアドバイザリを掲載している[5]。同じリリースでは、ほかの脆弱性も修正した[1]。
- 寄稿者権限以上の保存型XSS(4件)[1]
- ユーザー登録が有効なマルチサイトの権限昇格[1]
- パスワード保護投稿のコメントの漏えい[1]
- 投稿スラッグの列挙[1]
- コメントフィードのメモの漏えい[1]
- 投稿者権限以上のCSSインジェクション(Anthropicが報告)[1]
- メールアドレス確認フローの回避[1]
- URL検証のSSRF[1]
pwn.aiの8月6日のブログでは、この脆弱性はアカウントが無くても悪用でき、1回の失敗したログインで攻撃者のJavaScriptをWordPressのオリジンで実行させる[13]。ログイン中の管理者が相手なら、既定の全インストールでサーバーのRCEに至るとした[13]。完全な連鎖を作るのに、オープンソースのモデルと複数エージェントのワークフローでほぼ4日間かかったと書いた[13]。
ログイン画面でXSSが起きる仕組み
pwn.aiのブログによると、存在しないユーザー名でログインすると、wp-includes/user.phpのwp_authenticate_username_password()が、送られたユーザー名をsprintfでHTMLのエラーメッセージに入れる[13]。ユーザー名はsanitize_user()の中でwp_strip_all_tags()(PHPのstrip_tags())を通るが、「<」の直後に空白があるとタグと認識されない[13]。そのまま残った文字列はwp_admin_notice()を経てwp_kses_post()に渡り、KSESは空白を挟んだタグを許可された要素と解釈する[13]。
ログイン画面は、パスワードの再設定を扱うため、プロフィール編集用のuser-profile.jsを読み込む[13]。注入した要素にこのスクリプトのハンドラーが反応すると、ログイン画面に無い入力欄がどちらもundefinedになり、比較が真になる[13]。ログイン画面で未定義のajaxurlを注入したid付きの要素で上書きし(DOM clobbering)、同じオリジンの任意のURLにPOSTさせる[13]。
POSTの先でREST APIのJSONPの機能(_jsonp)を使って応答をJavaScriptとして返させると、jQueryがそれを評価し、WordPressのオリジンでスクリプトが動く[13]。匿名のRESTが401を返す環境でも、_envelopeのパラメーターで外側の応答を200にできると書いた[13]。JSONPのコールバックに使える文字にドットが含まれるので、別のウィンドウの要素のclickを呼べる[13]。pwn.aiは、この研究が2022年にpwn.aiのブログで公表したSame Origin Method Execution(SOME)の手法を基にしたと説明した[13]。
管理者を介したPHPの実行
pwn.aiが示した手順では、攻撃者のページが子ウィンドウを開き、元のウィンドウを管理者のアプリケーションパスワードの承認画面(authorize-application.php)に移す[13]。子ウィンドウでログインの細工を送って承認ボタンを押させ、管理者のアプリケーションパスワードを攻撃者のsuccess_urlに送らせる[13]。そのパスワードでREST APIからスクリプト入りのページを公開し、管理者のセッションでプラグインのアップロードのnonceを取ってZIPをアップロードする[13]。プラグインは有効化しなくても、展開されたディレクトリのPHPファイルをURLで直接実行でき、検証ではwww-dataの権限でコマンドを実行した[13]。
連鎖が成り立つ条件
トロント大学の情報セキュリティ部門は8月7日の勧告で、攻撃者が標的に細工したURLを要求させれば、サイト自身のオリジンでJavaScriptを実行できるとした[6]。正規の機関のホスト名の上での認証情報の窃取、セッショントークンの窃取、標的の権限での同一オリジンの要求ができるとも書いた[6]。XSSを越えて昇格するには、4つの条件がすべて同時に要るとした[6]。
- アプリケーションパスワードが有効であること(5.6以降の既定)[6]
- 標的が、既定のunfiltered_htmlとupload_pluginsの権限を持つ単一サイトの管理者であること[6]
- プラグインの保存先に書き込めること[6]
- ファイルの変更や、無効なプラグインのディレクトリからのPHPの直接実行を防ぐ強化が無いこと[6]
このうち少なくとも1つを、管理型・強化済みのホスティングは満たさないことが多く、部局の基盤で自ら管理する設置はすべて満たすことが多いとした[6]。完全な連鎖は本番の基盤ではなく隔離したローカルの環境で実証されたもので、管理された条件の下で証明されたものと位置付けるべきだとも書いた[6]。
The Hacker Newsの8月7日の記事によると、pwn.aiが同誌に提供した本番環境の証拠はXSSまでだった[18]。研究者は7.0.2の本番環境2つで、Cookieの無いブラウザーからログイン画面のXSSを再現したが、アプリケーションパスワードの作成、アップロード、PHPの実行は試みていない[18]。完全な連鎖は別のローカルの7.0.2の環境で実証したと、同誌は報じた[18]。研究者は同誌に、XSSからコード実行への経路はプラグインの導入や任意のZIPのアップロードなど複数あると話した[18]。
時系列
| 日付 | 主体 | 内容 | 資料 |
|---|---|---|---|
| 2026年 | pwn.ai | 完全な連鎖を見つけて再現した | [13] |
| 2026年 | pwn.ai、WordPress | ブラウザーでの証拠とPHP実行の証明を付けて報告し、WordPressがリスクを認めた | [13] |
| 2026年 | WordPress | 7.0.3と各系の修正版、7.1 RC2を公開した | [1、3] |
| 2026年 | - | CVE-2026-64638が割り当てられ、報奨金が支払われた | [13] |
| 2026年 | - | 協調した公開が行われた | [13] |
| 2026年 | WordPress.org日本語 | 告知の訳を掲載した | [4] |
| 2026年 | CVE Program | CVEレコードを公開した | [10] |
| 2026年 | NIST | NVDに登録した | [11] |
| 2026年 | Imperva | 広範な活動の観測を公表した | [15] |
| 2026年 | JPCERT/CC | Weekly Reportに「WordPressに複数の脆弱性」を載せた | [12] |
対象の製品と版
WordPressは告知で、修正を必要に応じて、セキュリティ修正の対象となる全ブランチ(現在は4.7まで)にバックポートするとし、積極的にサポートするのは最新版だけだとした[1]。
| 製品 | 影響を受ける版 | 修正版 | 資料 |
|---|---|---|---|
| WordPress 7.0系 | 7.0.3より前の、積極的に保守されている全版 | 7.0.3 | [13] |
| WordPress 6.9系 | 11件が該当 | 6.9.6 | [3] |
| WordPress 6.8系〜5.8系 | 各系で8件が該当 | 6.8.7・6.7.6・6.6.6・6.5.9・6.4.9・6.3.9・6.2.10・6.1.11・6.0.13・5.9.14・5.8.14 | [3] |
| WordPress 5.7系〜4.7系 | 各系で7件が該当 | 5.7.16・5.6.18・5.5.19・5.4.20・5.3.22・5.2.25・5.1.23・5.0.26・4.9.30・4.8.29・4.7.34 | [3] |
| WordPress 4.6以前 | - | なし(セキュリティ更新を受けない) | [3] |
CVEレコードの記載では、WordPressの全版が影響を受ける[10]。
Hadrianは解説で、悪用できる範囲を6.4〜7.0.2とした[14]。ログインのエラーがwp_kses_post()を通るのは表示がwp_admin_notice()に移ってからで、それより前の6.3以前では、残った文字列が再解釈されず無害なままだと説明した[14]。WordPressが古い系まで修正を広げたのは予防のためで、6.4より前の版がこの経路で悪用できるからではないとした[14]。
悪用の状況
CISAのADPは8月7日、CVEレコードにSSVCの評価を付け、悪用(Exploitation)を「none」、自動化(Automatable)を「no」、技術的な影響(Technical Impact)を「total」とした[10]。
トロント大学の8月7日の勧告では、公開の攻撃コードも実環境での悪用の報告も無く、CISAのKEVにも載っていなかった[6]。技術的な解説と動画での実演は公開されている[6]。Hadrianも、解説の公開の段階で実環境での悪用の報告は無いとした[14]。
Impervaのブログによると、CVE-2026-64638を認証も操作も要らないRCEと表現すべきではない〔注1〕[15]。Impervaはその後、広範な活動を観測したと報告した[15]。
| 項目 | 値 | 資料 |
|---|---|---|
| 狙われたサイト | 67か国の1万1,000超の異なるサイト。75%超が米国 | [15] |
| 記録した要求 | 数十万件 | [15] |
| 活動に関わるツール | 95%超がGo製 | [15] |
| 狙われたサイトの業種 | ゲーム32%、教育26%、金融24% | [15] |
Sn1perSecurityは、フィードの集約サイトが載せた、8月2日からランサムウェアの攻撃に使われたとする記述を誤りとした[17]。この脆弱性は非公開で報告されたもので、修正と公開の前に攻撃が始まることはありえない[17]。8月10日にKEVのカタログ(1,662件)を直接確かめたが、該当は無かった[17]。同じ日の段階で、確認された実環境の悪用も、大規模なスキャンの観測も無いとした[17]。
Sn1perSecurityの同じ記事によると、公開から72時間以内に約20数個の概念実証(PoC)のリポジトリが公開され、いくつかは完全な連鎖だった[17]。pwn.aiもブログに、認証前のXSSのPoCのHTMLと、RESTの401を回避する変種、WAFを回避する変種を載せた[13]。香港中文大学のITSCは注意喚起で、PoCが公開されたと書いた[7]。
Hadrianは検知の手がかりとして、wp-login.phpへのPOSTでlogの値にエンコードした「<」が含まれることを挙げ、正規のユーザー名に括弧は入らないとした[14]。多くの環境はログインのPOSTの本文を記録していないとも注記した[14]。
| 種別 | 値 | 示した組織 | 資料 |
|---|---|---|---|
| リクエストの形 | wp-login.phpへのPOSTで、logの値に%3C(エンコードした「<」)を含む | Hadrian | [14] |
修正と回避策
WordPressは告知で、セキュリティリリースであることから、直ちにサイトを更新するよう勧めた[1]。更新はWordPress.orgからのダウンロードか、ダッシュボードの「更新」から行え、自動バックグラウンド更新に対応するサイトはまもなく更新が始まるとした[1]。
Cloudflareの8月7日のWAFのリリースは、Managed RulesetとFree RulesetにあるWordPressのXSSの規則のメタデータを、XSS2Shell(CVE-2026-64638)を示すように更新した[16]。検知の挙動と動作(Block)は変わらない[16]。
トロント大学は勧告で、深刻度をHigh(CVSS 8.9)、状態を「修正済み、直ちに更新」とした[6]。strict-dynamicを使うnonce方式のCSPは実証された経路を防がず、CSPは代替の対策にならないと書いた[6]。中央のパッチ管理の外にある学部・研究室・研究グループ・授業のサイトを優先するよう求めた[6]。
| 組織 | 内容 | 公表日 | 資料 |
|---|---|---|---|
| 香港中文大学 | 特定の条件の下でPHPのリモートコード実行に発展し、サイトの完全な侵害に至りうるとした | 2026年 | [7] |
| 香港中文大学 | 更新後に、アクセスログ、管理者アカウント、最近入れたプラグインとテーマ、変更されたファイル、予定されたタスク、想定外のデータベースの変更の確認を求めた | 2026年 | [7] |
| 法政大学 | 管理画面にログインした状態で細工されたURLにアクセスすると、サイトの改ざん等につながる可能性があるとした | - | [8] |
| 法政大学 | 侵害を受けていないか確かめたうえでの最新版への更新と、身に覚えのないログイン履歴・ファイル・プラグイン・テーマ・ジョブの確認を求めた | - | [8] |
| 湘南工科大学 | wp2shellと並べて挙げ、条件次第でサーバー上のコード実行に発展する恐れがあるとして、7.0.3以上への更新を求めた | -(2026年 | [9] |
| 湘南工科大学 | 自動更新が有効でも失敗している場合があるとして、現在の版を自分で確かめるよう求めた | -(2026年 | [9] |
JPCERT/CCはWeekly Reportで、7.0.3の告知を情報源に挙げ、修正済みの版に更新することで解決すると書いた[12]。Impervaは、公開後も脆弱なまま残ったシステムで、想定外の管理者の変更、アプリケーションの資格情報、プラグインの導入などを調べるよう勧めた[15]。
未公表の事項
- WordPressが行った修正の内容(HelpHubは改訂したwp-login.php・wp-includes/kses.php・wp-includes/user.phpなど10個のファイルの一覧を示した[3])
- 7.0.3での強制の自動更新の有無
- 侵害されたサイトの数
- Impervaが観測した活動の主体
注
- 〔注1〕英語のブログでは "zero-interaction unauthenticated RCE" と書かれている[15]。
出典
当事者
- [1]WordPress.org『WordPress 7.0.3 release』(2026年8月6日公開、2026年8月7日更新)
- [3]WordPress.org HelpHub『Version 7.0.3』(2026年8月6日公開)
- [4]WordPress.org 日本語『WordPress 7.0.3リリース』(2026年8月7日公開)
- [5]WordPress『GHSA-52p2-r8wf-jcrf』(公開日不明、保存記録のみ) 保存記録
関係組織
- [6]University of Toronto『Security advisory: Vulnerability – WordPress XSS2Shell』(2026年8月7日公開)
- [7]The Chinese University of Hong Kong『WordPress Pre-Authenticated XSS Vulnerability "XSS2Shell" (CVE-2026-64638)』(2026年8月10日公開)
- [8]法政大学『【注意喚起】WordPressの脆弱性について(XSS2Shell)』(公開日不明、2026年11月7日閲覧)
- [9]湘南工科大学『【メディア情報センター】注意喚起:WordPressの重大な脆弱性について』(公開日不明、2026年11月7日閲覧、2026年8月10日更新)
公的機関
- [10]CVE Program『CVE-2026-64638』(2026年8月7日公開)
- [11]National Institute of Standards and Technology『CVE-2026-64638』(2026年8月7日公開、2026年9月3日更新)
- [12]一般社団法人JPCERTコーディネーションセンター『JPCERT/CC WEEKLY REPORT 2026-08-13』(2026年8月13日公開)
調査・観測
- [13]PWNAI Research『XSS2Shell: WordPress Preauth XSS to RCE Chain (CVE-2026-64638)』(2026年8月6日公開)
- [14]Hadrian『WordPress XSS2Shell: Unauthenticated Login-Screen XSS to PHP Code Execution (CVE-2026-64638)』(2026年8月7日公開、2026年10月22日更新)
- [15]Imperva『Imperva Customers Protected Against XSS2Shell (CVE-2026-64638) in WordPress Core』(2026年8月10日公開)
- [16]Cloudflare, Inc.『WAF Release - 2026-08-07』(2026年8月7日公開)
- [17]Sn1perSecurity『XSS2Shell CVE-2026-64638: Nuclei Template + Affected Versions』(2026年8月10日公開)
報道機関
- [18]The Hacker News『New WordPress Pre-Auth XSS Could Lead to PHP Code Execution - Patch ASAP』(2026年8月7日公開)
更新記録
- 2026年8月13日:公開した。
- 2026年9月3日:NISTのNVDの項目(9月3日更新、出典11)を加え、NVDへの登録を「時系列」に、分析の状態を「脆弱性の内容」に加えた。
- 2026年10月22日:Hadrianの解説(10月22日更新、出典14)を加え、悪用できる版の範囲を「対象の製品と版」に、実環境での悪用の報告の有無と検知の手がかりを「悪用の状況」に加えた。
