WordPressのパストラバーサル脆弱性CVE-2026-87902の悪用
WordPressの2026年9月22日のリリース告知によると、7.1.2で修正したCVE-2026-87902はCriticalの脆弱性で、サーバー環境と有効なテーマの両方の前提条件がそろうとリモートでのコード実行に至る[1]。米CISAは9月25日、活発な悪用の証拠に基づいてこの脆弱性をKEVカタログに加えた[13]。Previdianの10月24日更新のページでは、試行の最後の観測は10月21日だった[23]。
脆弱性の内容
WordPressのセキュリティアドバイザリ(GHSA-7hp8-65ch-5whp)によると、脆弱性はget_page_template()によるページテンプレートの解決処理にある[2]。認証されていない攻撃者は、有効なテーマのディレクトリの外にある読み取り可能なローカルの.phpファイルを選んで、この処理に読み込ませられる[2]。前提条件の一つは、有効な子テーマか親テーマの最上位に、page-で始まる名前のディレクトリ(page-templatesなど)があることだ[2]。もう一つの条件として、選んだローカルの.phpファイルがサーバー上にあり、Webサーバーのアカウントで読めなければならない[2]。
WordPressは、テーマの条件に当たるものとして、旧来のTwenty TwelveとTwenty Fourteen、Neve・Hestia・Sydneyなど一部の人気のあるサードパーティ製テーマを挙げた[2]。register_argc_argvがOnの環境では、よく知られたpearcmd.phpの手法で、PEARからリモートでのコード実行(RCE)へ移れる[2]。Docker公式のphpイメージは影響を受け、cPanelも既定の構成でPHP 8.5より前の版を動かしていれば影響を受けるとした[2]。
| 項目 | 値 | 資料 |
|---|---|---|
| CVSS | 4.0の基本値9.2(WordPressの評価)〔注1〕 | [2] |
| CWE | CWE-98 | [14] |
| 修正したファイル | /wp-includes/template.php | [3] |
| 発見者 | アドバイザリにクレジットされた研究者 | [2] |
WordPress Core Tracの9月22日の修正コミット(Changeset 63792)では、デコードした後のpagenameにvalidate_file()を通す処理を加えた[4]。locate_template()が見つけたテンプレートを読み込んでよいかを判定する非公開の関数_wp_is_template_path_allowed()も、7.1.2で新しく設けた[4]。この関数は、..を含むパスを実際のパス(realpath)に直し、stylesheet・template・theme-compatのディレクトリの中に収まるかを確かめる[4]。
発見者はブログで、WordPress 7.0.2を隔離したローカルの環境に置いて悪用を検証したと書いた[19]。調べたTwenty Twenty-Three・Twenty Twenty-Four・Twenty Twenty-Fiveには、最上位のpage-*ディレクトリが無かった[19]。検証環境では、Twenty Twenty-Fiveに空のディレクトリを意図的に加えた[19]。得られた権限は、PHPとWebサーバーが動くアカウントの権限(検証環境ではwww-data)だった[19]。
発見者の9月22日のブログでは、インクルードの条件に、page_idで選べる匿名で閲覧できる公開ページがあること、先に割り当てた有効なカスタムテンプレートが無いこと、ファイルシステムのポリシーがインクルードを許すことも挙げた[19]。OSでの権限の昇格やroot権限の取得は示していない[19]。PEARはWordPressが依存するものではなく、この経路はすべての環境で使えるわけではないとした[19]。条件を満たすサイトの数は測っておらず、第三者や本番のサイトでは試していないと説明した[19]。
時系列
| 日付 | 主体 | 内容 | 資料 |
|---|---|---|---|
| 2026年 | 発見者 | WordPressのHackerOneのプログラムを通じて非公開で報告した | [19] |
| 2026年 | - | 報告の受領を確認した | [19] |
| 2026年 | HackerOne | CVE-2026-87902の番号を予約した | [15] |
| 2026年 | - | 今後のリリースで修正する予定だと発見者に伝えた | [19] |
| 2026年 | WordPress | 7.1.2を公開した | [3] |
| 2026年 | 発見者 | PoCのリポジトリを公開した | [19] |
| 2026年 | JVN iPedia | JVNDB-2026-035982として登録した | [17] |
| 2026年 | JPCERT/CC | Weekly Reportで取り上げた | [16] |
対象の製品と版
| 製品 | 影響を受ける版 | 修正版 | 資料 |
|---|---|---|---|
| WordPress 7.1 | 7.1.0〜7.1.1 | 7.1.2 | [2] |
| WordPress 7.0 | 7.0.0〜7.0.5 | 7.0.6 | [2] |
| WordPress 6.9 | 6.9.0〜6.9.8 | 6.9.9 | [2] |
| WordPress 6.8 | 6.8.0〜6.8.9 | 6.8.10 | [2] |
| WordPress 6.7 | 6.7.0〜6.7.8 | 6.7.9 | [2] |
| WordPress 6.6 | 6.6.0〜6.6.8 | 6.6.9 | [2] |
| WordPress 6.5 | 6.5.0〜6.5.11 | 6.5.12 | [2] |
| WordPress 6.4 | 6.4.0〜6.4.11 | 6.4.12 | [2] |
| WordPress 6.3 | 6.3.0〜6.3.11 | 6.3.12 | [2] |
| WordPress 6.2 | 6.2.0〜6.2.12 | 6.2.13 | [2] |
| WordPress 6.1 | 6.1.0〜6.1.13 | 6.1.14 | [2] |
| WordPress 6.0 | 6.0.0〜6.0.15 | 6.0.16 | [2] |
| WordPress 5.9 | 5.9.0〜5.9.17 | 5.9.18 | [2] |
| WordPress 5.8 | 5.8.0〜5.8.16 | 5.8.17 | [2] |
| WordPress 5.7 | 5.7.0〜5.7.18 | 5.7.19 | [2] |
| WordPress 5.6 | 5.6.0〜5.6.20 | 5.6.21 | [2] |
| WordPress 5.5 | 5.5.0〜5.5.21 | 5.5.22 | [2] |
| WordPress 5.4 | 5.4.0〜5.4.22 | 5.4.23 | [2] |
| WordPress 5.3 | 5.3.0〜5.3.24 | 5.3.25 | [2] |
| WordPress 5.2 | 5.2.0〜5.2.27 | 5.2.28 | [2] |
| WordPress 5.1 | 5.1.0〜5.1.25 | 5.1.26 | [2] |
| WordPress 5.0 | 5.0.0〜5.0.28 | 5.0.29 | [2] |
| WordPress 4.9 | 4.9.0〜4.9.32 | 4.9.33 | [2] |
| WordPress 4.8 | 4.8.0〜4.8.31 | 4.8.32 | [2] |
| WordPress 4.7 | 4.7.0〜4.7.36 | 4.7.37 | [2] |
WordPressは7.1.2のリリースノートで、4.6以前の版はセキュリティ更新を受けないとした[3]。Security NEXTは、9月17日に公開された7.1.1で修正した脆弱性とは別の問題で、再度の更新が必要になると報じた[25]。
Wordfenceの9月22日の注意喚起では、修正していないすべてのWordPressのサイトで、無条件にRCEが成り立つわけではないと説明した[21]。アドバイザリにテーマの影響を受ける版の範囲が書かれていないとして、名前だけで露出を判断せず、導入したテーマとファイルシステムを確かめるよう求めた[21]。
悪用の状況
Patchstackの報告によると、最初の試行は9月22日11時49分(UTC)にファイアウォールに届いた〔注2〕[20]。ペイロードはパッチが対処したエンコードと一致し、作った者は修正の差分をもとにしていたと説明した[20]。15時34分(UTC)には、pearcmdを通じてディスクにファイルを書き込む最初の試行があった[20]。
Patchstackの9月23日の更新では、攻撃はpearcmd.phpを読み込んでPHPファイルをディスクに書き込む段階に進み、この脆弱性を狙う公開のスキャンツールが出回っていると報告した[20]。通信量は初日の夕方の10倍を超え、リクエストは脆弱性の確認、pearcmdに届くかの確認、config-createでのファイルの書き込みの3段階を経ていた[20]。件数は同じ日の正午(UTC)ごろに最も多くなり、POSTがGETを上回った[20]。送信元は初日の少数から数百に広がり、個々の送信元をブロックリストに載せても対策にならないとした[20]。
| 種別 | 値 | 示した組織 | 資料 |
|---|---|---|---|
| リクエスト | pagenameに%2e%2eか%252e%252eを含む、templates%2fなどpage-で始まるディレクトリ名のpagename、サイトのルートか/index.phpでpagenameとpage_idが同時に出る、pearcmd・+config-show・+config-createを含む | Patchstack | [20] |
| User-Agent | cve-2026-87902-poc/1.0、nuclei-cve-2026-87902/1.0 | Patchstack | [20] |
| 書き込み先 | /tmp、/var/tmp | Patchstack | [20] |
| ファイル名 | wp-pear-rce-flag.php、poc87902.php、luci_で始まる.phpファイル、zeta_で始まる.phpファイル | Patchstack | [20] |
| 主な送信元のIPアドレス | 43.250.53.42、180.251.159.243、195.178.110.247、107.189.14.87、45.61.184.170、92.246.130.76 | Patchstack | [20] |
Patchstackは、/tmpに置いたファイルは通常Webから届かないため、それだけでは残り続けるバックドアではなく実行の証明だと説明した[20]。攻撃者の側から見れば、ホストは完全に侵害された状態になるとも書いた[20]。表の2つのUser-Agent以外の通信の大半は偽装したブラウザのUser-Agentを使っているとして、User-Agentを絞り込みの条件にしないよう求めた[20]。トラバーサルの深さは1〜12段で、大文字の16進数や1重・2重のエンコードの変種もあり、1つの文字列に固定したルールやログの検索では見落とすとした[20]。
CrowdSecの9月28日のレポートでは、この脆弱性のパターンに一致するシグナルを322,680件記録した[22]。記録の期間は9月23日〜27日の5日間だった[22]。1日の件数は14,938件から124,154件に増え、固有の送信元は237から23,321になった[22]。Live Exploit Trackerでは、9月28日の集計で30,813のユニークなIPアドレスを数えた[22]。
CrowdSecは、一致したリクエストは悪用の試行で、成功したかは確認できないと説明した[22]。1つの運用者が数千のクラウドやプロキシのアドレスを使い回せるため、IPアドレスの数は攻撃者の数と一致しないとした[22]。集計は、CrowdSec Networkに参加する機器に届いた通信の標本だとも書いた[22]。
Previdianの10月24日更新のページによると、試行は9,253回で、送信元は37のIPアドレス、16か国にわたった[23]。観測に使ったセンサーは5台だった[23]。
オランダのNCSCは9月24日のアドバイザリの更新で、公開の情報源が悪用の観測を報告していると追記した[18]。悪用には複数の前提条件が要り、個々の設定に強く左右されるとも書いた[18]。
CISAの9月25日のKEVカタログへの登録では、対応の期限を9月28日とし、ランサムウェアの攻撃での使用を「Unknown」とした[14]。
修正と回避策
WordPressはリリース告知で、セキュリティリリースのため直ちにサイトを更新するよう推奨した[1]。バックグラウンドでの自動更新が使えるサイトでは、更新の処理が自動的に開始される[1]。修正はセキュリティ修正を受けられる全ブランチ(現在は4.7まで)にバックポートし、積極的にサポートしているのは最新版だけだとした[1]。
発見者のブログによると、インクルードから実行までの経路を減らせる措置があるが、Coreの更新を補うもので、更新に置き換わるものではない[19]。
- Webリクエストに使わないなら、register_argc_argvを切る[19]。
- Webから読めるのに使っていないPEARの入口(エントリポイント)を消す[19]。
- PHPのアカウントがファイルシステムにアクセスし書き込める範囲を絞る[19]。
Patchstackは、すぐに更新できない場合の暫定策として、pagenameに含まれるトラバーサルの文字列を拒むことを挙げた[20]。register_argc_argvを無効にしてもインクルードは直らないが、pearcmdを使う連鎖は断てると説明した[20]。
Patchstackの記事の検知と緩和の節によると、/tmpと/var/tmpに想定外の.phpファイルが見つかれば、第3段階(ファイルの書き込み)の試行が通った証拠になる[20]。そのホストは、スキャンを受けただけでなく侵害されたものとして扱うよう求めた[20]。アクセスログで通常のページのURLからOPMLやRSSの出力が返っていれば、最初の段階のプローブが成功した兆候だとした[20]。修正や緩和の前に露出していたサイトには、過去のログをその前提で見直すよう求めた[20]。
Wordfenceは9月22日、Premium・Care・Responseの利用者に、この脆弱性への攻撃を防ぐファイアウォールのルールを提供した[21]。無料版の利用者には、通常どおり30日遅れの10月22日に同じ保護を提供するとした[21]。
Cloudflareの9月25日の緊急リリースでは、WAFのマネージドルールに、この脆弱性を狙う通信をブロックする新しい検知のルールを加えた[24]。
ホスティング事業者の告知
エックスサーバーの9月24日の注意喚起によると、認証やログインは要らず、特定のテーマを使う場合や顧客が一部の設定を変えている場合に攻撃の対象になる[5]。自社のサービスで、この脆弱性を悪用した被害は確認していないとした[5]。
エックスサーバーは9月25日の追記で、悪用のリスクと緊急性を踏まえ、判明している攻撃の成立条件に当たるサイトのWordPress本体を、各系統の最新版へ更新したと告知した[5]。更新は21時ごろ〜22時ごろに行った[5]。サイトの状態によって更新を完了できなかったケースがあり、該当する顧客にはメールで知らせて自分で更新するよう求めた[5]。エックスサーバーは公式のXアカウントで9月30日に、無料のセキュリティプラグイン「CloudSecure WP Security」に緩和策を加えたと告知した[6]。
| 事業者 | 公表日 | 告知の内容 | 資料 |
|---|---|---|---|
| Pantheon | 2026年 | ルーティングネットワークでの仮想パッチをプラットフォーム全体に事前に展開し、顧客には早期の更新を求めた | [12] |
| NTTPCコミュニケーションズ(「WebARENA SuiteX」) | 2026年 | 攻撃が成功するとWebサイトの改ざんやマルウェアの設置、情報漏えいなどサーバー全体に影響する恐れがあるとした | [11] |
| NTTコミュニケーションズ(「Bizメール&ウェブ ビジネス r3」) | 2026年 | 利用していないWordPressのアンインストールを求めた | [10] |
| さくらインターネット | 2026年 | 自動更新を有効にしても更新が完了していない場合があるとし、WordPress本体の脆弱性への対応はサポートの対象外とした | [7] |
| GMOペパボ(「ロリポップ!」) | 2026年 | 簡単インストールで設置したWordPressは、初期状態でマイナーアップデートの自動更新が有効だと説明した | [8] |
| GMOインターネット(「お名前.com レンタルサーバー」) | 2026年 | 自動更新を有効にした顧客の環境はすでに順次修正版へ更新されているとし、管理画面での確認を求めた | [9] |
未公表の事項
- 悪用に成功したサイトの数
- 影響を受ける版のまま公開されているサイトの数
- 攻撃者とその帰属
- WordPress.orgが自動更新を強制したかどうか
- エックスサーバー以外の国内のホスティング事業者のサービスでの被害の有無
注
出典
当事者
- [1]WordPress.org『WordPress 7.1.2 Release』(2026年9月22日公開、2026年9月23日更新)
- [2]WordPress『Unauthenticated path traversal in page-template resolution leading to conditional RCE』(2026年9月22日公開、Wayback Machineの2026年10月10日の保存版) 保存版
- [3]WordPress.org『Version 7.1.2』(2026年9月22日公開)
- [4]WordPress Core Trac『Changeset 63792 — Themes: Restrict path traversal in locate_template().』(2026年9月22日公開)
関係組織
- [5]エックスサーバー株式会社『【重要】WordPressの脆弱性(CVE-2026-87902)に関する注意喚起について(9/25 PM10:30 更新)』(2026年9月24日公開、2026年9月25日更新)
- [6]エックスサーバー株式会社のXアカウント(@xserverjp)『【WordPress脆弱性への緩和策を追加】 WordPressの脆弱性「CVE-2026-87902」について、当社が提供する無料のセキュリティプラグイン「CloudSecure WP Security」に緩和策を追加しました。』(2026年9月30日公開)
- [7]さくらインターネット株式会社『WordPress の脆弱性にご注意ください(CVE-2026-87902)』(2026年9月25日公開)
- [8]GMOペパボ株式会社『WordPress本体の重大な脆弱性(CVE-2026-87902)に関するセキュリティアップデートのお願い』(2026年9月25日公開)
- [9]GMOインターネット株式会社『[お名前.com レンタルサーバー] WordPressの脆弱性(CVE-2026-87902)に関するご注意とアップデートのお願い』(2026年9月25日公開)
- [10]NTTコミュニケーションズ株式会社『WordPressの脆弱性に関する注意喚起(CVE-2026-87902)』(2026年9月24日公開)
- [11]NTTPCコミュニケーションズ株式会社『[2026/9/24] 【SuiteX】WordPressの脆弱性に関する注意喚起(CVE-2026-87902)』(2026年9月24日公開)
- [12]Pantheon『WordPress 7.1.2 Security Release now available』(2026年9月22日公開)
公的機関
- [13]Cybersecurity and Infrastructure Security Agency『CISA Adds One Known Exploited Vulnerability to Catalog』(2026年9月25日公開、Wayback Machineの2026年9月27日の保存版) 保存版
- [14]Cybersecurity and Infrastructure Security Agency『WordPress Core Remote File Inclusion Vulnerability』(2026年9月25日公開、2026年10月25日閲覧)
- [15]CVE Program『CVE-2026-87902』(2026年9月22日公開、2026年9月26日更新)
- [16]JPCERTコーディネーションセンター『JPCERT/CC WEEKLY REPORT 2026-09-30』(2026年9月30日公開)
- [17]JVN iPedia『JVNDB-2026-035982 WordPress.orgのWordPress用WordPressにおけるPHP リモートファイルインクルージョンの脆弱性』(2026年9月29日公開)
- [18]Nationaal Cyber Security Centrum『NCSC-2026-0389 Kwetsbaarheid verholpen in WordPress』(2026年9月23日公開、2026年9月24日更新)
調査・観測
- [19]Robert Ressl『CVE-2026-87902: Critical WordPress file inclusion and conditional RCE』(2026年9月22日公開)
- [20]Patchstack『CVE-2026-87902: Attackers Started Probing WordPress Sites Hours After the Patch』(2026年9月22日公開、2026年9月23日更新、Wayback Machineの2026年9月23日の保存版) 保存版
- [21]Wordfence『PSA: Critical Unauthenticated Path Traversal Vulnerability Patched in WordPress Core』(2026年9月22日公開)
- [22]CrowdSec『WordPress Core Page-Template File Inclusion (CVE-2026-87902): 30,000 Addresses in Five Days, and the Patch Is Already on Your Site If Auto-Updates Did Their Job』(2026年9月28日公開)
- [23]Previdian『CVE-2026-87902 Exploitation Observed — WordPress』(公開日不明、2026年10月24日更新、2026年10月25日閲覧)
- [24]Cloudflare『Changelog · Cloudflare Web Application Firewall (WAF) docs』(2026年9月25日公開)
報道機関
- [25]株式会社ニューズガイア『「WordPress」に深刻な脆弱性 - わずか5日で再更新』(2026年9月23日公開)
更新記録
- 2026年10月25日:公開した。
- 2026年10月26日2時13分:「悪用の状況」のCrowdSecとPrevidianの文と、「ホスティング事業者の告知」のエックスサーバーの更新の文を、それぞれ2つの文に分けた。
- 2026年11月2日:表1の発見者の行を、個人名から役割の表記に改めた。
- 2026年11月3日:「修正と回避策」と「脆弱性の内容」の文の言い回しを改めた(事実と出典は変えていない)。
