【緊急】WordPress重大脆弱性 CVE-2026-87902 — 対象バージョン・影響するテーマ・攻撃の痕跡と対処(7.1.2で修正)

2026年9月28日

2026年9月22日、WordPress本体(コア)の重大な脆弱性「CVE-2026-87902」を修正した WordPress 7.1.2 が公開されました。ログイン不要で、条件がそろうとサーバー上で任意のコードを実行される恐れがあります。公開当日から実際の攻撃が観測され、9月25日には米国CISAの「悪用が確認された脆弱性」のリストにも追加されました。

一方で、この脆弱性は「すべてのWordPressが即座に乗っ取られる」種類のものではありません。悪用には、使っているテーマやサーバーの設定に条件があります。この記事では、対象バージョンと修正版、悪用の条件になるテーマの具体例、ログに残る攻撃の痕跡、そして今すぐやるべきことを順に説明します。

何が起きているのか

WordPressには、固定ページを表示するときに「どのテンプレートファイルを使うか」を決める処理(get_page_template())があります。この処理が、URLに含まれるページ名(pagename パラメータ)をそのままテーマフォルダのパスにつなげていて、つなげた結果がテーマフォルダの外に出ていないかを確認していませんでした。

そのため、攻撃者が細工したURLを送ると、テーマフォルダの外にある任意のPHPファイルをWordPressに読み込ませる(ローカルファイルインクルード=LFI)ことができます。読み込ませるファイルと、サーバーの設定の組み合わせによっては、そこから任意のコードの実行(リモートコード実行=RCE)に至ります。

CVE番号CVE-2026-87902(GHSA-7hp8-65ch-5whp)
深刻度CVSS 4.0 で 9.2(Critical)
種類パストラバーサルによるローカルファイルインクルード(CWE-98)。条件付きでRCE
認証不要(ログインしていない第三者が悪用できる)
対象WordPress 4.7.0〜7.1.1
修正WordPress 7.1.2(2026年9月22日)と、4.7系までの全系列へのバックポート
報告者Robert Ressl 氏

なお、CVSSの評価項目には「攻撃の前提条件(AT)」があり、本件は「前提条件あり(AT:P)」と評価されています。深刻度は最高ランクですが、悪用には条件があるという性質が、評価そのものにも表れています。また、米国の脆弱性データベース(NVD)では、CISAの補足評価として旧方式の CVSS 3.1 で 8.1(High)と付けられています。評価方式によって数字が変わる点にご注意ください。

対象バージョンと修正版

4.7.0 から 7.1.1 までの、ほぼすべてのWordPressが対象です。修正は最新の 7.1 系だけでなく、4.7 系までの全系列に配布されています。お使いの系列に合わせて、次のバージョン以上になっているかを確認してください。

お使いの系列影響を受けるバージョン修正版
7.1 系7.1.0〜7.1.17.1.2
7.0 系7.0.0〜7.0.57.0.6
6.9 系6.9.0〜6.9.86.9.9
6.8 系6.8.0〜6.8.96.8.10
6.7 系6.7.0〜6.7.86.7.9
6.6 系6.6.0〜6.6.86.6.9
6.5 系6.5.0〜6.5.116.5.12
6.4 系6.4.0〜6.4.116.4.12
6.3 系6.3.0〜6.3.116.3.12
6.2 系6.2.0〜6.2.126.2.13
6.1 系6.1.0〜6.1.136.1.14
6.0 系6.0.0〜6.0.156.0.16
5.x 系・4.7〜4.9 系各系列の修正版より前5.9.18 / 5.8.17 / 5.7.19 / 5.6.21 / 5.5.22 / 5.4.23 / 5.3.25 / 5.2.28 / 5.1.26 / 5.0.29 / 4.9.33 / 4.8.32 / 4.7.37

4.7 より古いWordPressは今回の脆弱性の対象外ですが、それ以外の多くの既知の脆弱性が修正されないまま残っています。別の理由で、早急な更新が必要な状態です。

実際に悪用される条件

ここが今回の脆弱性でいちばん大事なところです。公式のアドバイザリでは、悪用の前提条件が次のように示されています。

  1. 有効化しているテーマ(親テーマまたは子テーマ)の直下に、名前が page- で始まるフォルダがあること。代表的なのは page-templates というフォルダです。攻撃はこのフォルダを足がかりにして、テーマの外へたどっていきます。
  2. 読み込ませたいPHPファイルがサーバー上に存在し、Webサーバーから読めること。
  3. コード実行(RCE)まで進めるには、さらに PEARの pearcmd.php が読める場所にあり、かつPHPの設定 register_argc_argv が On であること。

1 は「ファイル読み込み」そのものの条件なので、ここを満たさなければ攻撃は成立しません。注意点として、条件になるのは page- で始まるフォルダです。page-about.php のような page- で始まるファイルは多くのテーマにありますが、今回の条件とは関係ありません。

主なテーマの該当状況

公式アドバイザリが例に挙げたテーマに加えて、日本でよく使われているテーマについても、当社で確認しました。

テーマpage- フォルダ確認方法
Twenty Twelveあり公式ディレクトリ 4.9
Twenty Fourteenあり公式ディレクトリ 4.6
Neveあり公式ディレクトリ 4.2.13
Hestiaあり公式ディレクトリ 3.3.6
Sydneyあり公式ディレクトリ 2.71
Snow Monkeyあり公開リポジトリ(GitHub)の最新版
Cocoonなし公開リポジトリ(GitHub)の最新版
Lightningなし公式ディレクトリ 15.42.0
SWELLなし当社保守環境(2.10〜2.19 系・47サイト)
JIN / JIN:R / SANGO / Emanonなし当社保守環境
Arkhe / Astra / GeneratePress / Kadenceなし公式ディレクトリの最新版
Twenty Twenty〜Twenty Twenty-Fiveなし当社保守環境・公式ディレクトリ

2026年9月28日時点の確認です。テーマのバージョンによって構成が変わることがあるので、最終的にはお使いの環境でご確認ください。とくに制作会社のオリジナルテーマや子テーマは、上の表に当てはまりません。当社の保守環境でも、制作会社のオリジナルテーマに page-templates フォルダがあるケースを確認しています。

確認方法は、FTPソフトやレンタルサーバーのファイルマネージャーで wp-content/themes/(テーマ名)/ を開き、直下に page- で始まるフォルダがあるかを見るだけです。子テーマを使っている場合は、親テーマと子テーマの両方を確認してください。

サーバー側の条件

コード実行まで進むには、サーバー側の条件(pearcmd.php と register_argc_argv)もそろう必要があります。Patchstack の解説によると、register_argc_argv は公式のPHP Dockerイメージや、PHP 8.5未満のcPanel環境で初期値が On になっています。Dockerで自前運用しているWordPressや、cPanel系のサーバーは特に注意が必要です。

参考までに、当社が確認したエックスサーバーの契約では、全ドメインの php.ini で register_argc_argv が Off になっており、pearcmd.php も見つかりませんでした。お使いのサーバーの設定は、レンタルサーバーの管理画面にある php.ini の設定画面などで確認できます。

条件に当てはまらなくても、更新は必要です

「うちのテーマは該当しないから大丈夫」と考えて更新を先送りするのはおすすめしません。理由は3つあります。

  • テーマの変更や子テーマの追加で、条件を満たす状態に変わることがあります。
  • 今後、別の悪用方法が見つかる可能性があります。
  • 直前の 9月17日に出た 7.1.1 で、別の11件の脆弱性も修正されています(後述)。7.1.2 に上げれば両方まとめて対処できます。

攻撃の状況

セキュリティ企業 Patchstack の観測では、修正版の公開当日から攻撃が始まっています。

  • 9月22日 11:49(UTC/日本時間 20:49): 最初の悪用の試みを観測
  • 9月22日 15:34(UTC/日本時間 23日 0:34): pearcmd.php を使ったファイル書き込みの試みを初観測
  • 9月23日: 公開のスキャンツールや、脆弱性スキャナ Nuclei 用の検査テンプレートが出回る
  • 9月25日: 米国CISAが「悪用が確認された脆弱性(KEV)」のカタログに追加

当社の保守環境で観測したこと

当社が保守している約70のWordPressサイトでも、9月23日以降、25のドメインでこの脆弱性を狙った攻撃リクエストを確認しました。コード実行の段階まで狙ったリクエスト(config-create を含むもの)も900件を超えています。

ただし、攻撃が届いた時点で、対象のサイトはすべて修正版へ自動更新済みでした。多くは 9月22日深夜から23日未明にかけて更新が完了しています。サーバー側の条件(前述)もそろっておらず、侵害の痕跡は見つかっていません。修正版の公開から攻撃の本格化までは、実質1日程度しかなかったことになります。

いますぐ手早く確認する方法

WPドックの無料診断は、この脆弱性に対応しています。URLを入れるだけで、外部から推定したWordPressのバージョンが対象範囲に入っているかを判定します。有効化されているテーマが、上の表で「あり」になっているテーマかどうかもお知らせします。読み取りのみで、サイトに変更を加えることは一切ありません。

外部からの診断で分かることには限界があります。判定できるのは「バージョンの推定」と「テーマ名の推定」までです。次の点は、外部からは判断できません。

  • テーマフォルダの中身(page- フォルダの有無)
  • サーバーの設定(register_argc_argv や pearcmd.php)
  • 実際に侵害されているかどうか
  • 本当に修正が当たっていないかどうか(バージョン表記を隠したり書き換えたりしているサイトもあります)

ここまで確認するには、管理画面やサーバーへのアクセスが必要です。外部診断は「まず対象バージョンかどうかの当たりをつける」ための第一歩とお考えください。

対処 — まずは更新を

最優先の対処は、修正版への更新です。7.1 系なら 7.1.2、それ以外は上の表の、お使いの系列の修正版へ更新してください。

マイナー更新の自動更新が有効なサイトは、自動的に更新が始まります。ただし「自動更新が有効だから大丈夫」とは限りません。当社の保守環境でも、9月17日の 7.1.1 までは自動更新されたのに、7.1.2 で止まっていたサイトや、8月から一度も更新されていなかったサイトが見つかっています。公開している各サイトが実際に更新済みかどうかは、必ず個別に確認してください。

手動で更新する場合は、管理画面の「ダッシュボード → 更新」から適用できます。更新前にバックアップを取っておくと安心です。「自分で更新するのは不安」「複数サイトをまとめて安全に更新してほしい」という場合は、WPドックの安全更新パックをご利用ください。バックアップの取得から、更新、更新後の動作確認までをまとめて代行します。

すでに攻撃されていないかの確認

更新が遅れていたサイトは、攻撃を受けていないかも確認しておきましょう。以下は Patchstack が公開している攻撃の痕跡(IOC)の要点です。

アクセスログに残る痕跡

  • URLのクエリに pagename=templates%2f が含まれる(page_id と一緒に送られることが多い)
  • pagename の値に %2e%2e や %252e%252e(「..」をURLエンコードしたもの)が含まれる
  • pearcmd、+config-show、+config-create が含まれる
  • User-Agent が cve-2026-87902-poc/1.0 や nuclei-cve-2026-87902/1.0
  • 読み込み先として wp-links-opml、wp-includes/feed-rss2、wp-cron、wp-login などが指定されている

初期の攻撃元として、43.250.53.42、180.251.159.243、195.178.110.247、107.189.14.87、45.61.184.170、92.246.130.76 などのIPアドレスが報告されています。当社の保守環境でも、このうち 43.250.53.42 と 195.178.110.247 からのアクセスを確認しました。

ログに痕跡があっても、それだけで侵害されたとは限りません。修正済みのサイトでは、攻撃リクエストに対して通常のページが返るだけなので、ステータスが 200 でも問題ありません。注意すべきなのは、通常のページのURLに対して、OPMLやRSSなど別の内容が返っているケースです。これは読み込みに成功していたことを示します。

サーバー上に残る痕跡

コード実行の段階まで成功していると、サーバーの一時フォルダ(/tmp や /var/tmp)にPHPファイルが書き込まれます。報告されているファイル名は次のとおりです。

  • wp-pear-rce-flag.php
  • poc87902.php
  • luci_(ランダムな文字列).php
  • zeta_(ランダムな文字列).php

The Hacker News の報道では、その後、外部からWebシェルのアップローダーを取り込む動きも報告されています。

一つ注意点があります。共有型のレンタルサーバーでは、/tmp に同じサーバーを使う他の利用者のファイルも置かれています。当社の点検でも、見慣れないPHPファイルが見つかりましたが、確認するとすべて別の利用者の作業ファイルでした。怪しいファイルを見つけたら、まず ls -l などで所有者が自分のアカウントかどうかを確認してください。

痕跡が見つかったら

自分のアカウントが所有する上記のファイルが見つかった場合は、更新だけでは不十分です。まずファイルとデータベースを証拠として保全してから、不正なファイルの除去、パスワードやAPIキーの変更、不審な管理者アカウントの削除、改ざんされた設定の修正まで行う必要があります。ここは無理をせず、専門家にご相談ください。

直前の 7.1.1(9月17日)の修正もあわせて

7.1.2 の5日前、9月17日には 7.1.1 が公開され、11件のセキュリティ修正が行われていました。公式発表によると、コメントを通じて未認証の訪問者がスクリプトを埋め込めてしまう保存型XSS(wpautop()。コメントが承認されることが前提)や、認証済みユーザーによるパストラバーサルなどが含まれます。

7.1.1 の時点で修正版になったサイト(7.1.1 / 7.0.5 / 6.9.8 / 6.8.9 など)も、今回の CVE-2026-87902 の対象です。1週間で2回の更新が必要だったことになるので、7.1.1 で止まっていないかも確認してください。

まとめ — いま、何をすべきか

CVE-2026-87902 は、悪用に条件があるものの、公開当日から攻撃が始まり、実際に悪用されている脆弱性です。やることはシンプルです。

  1. お使いのWordPressのバージョンを確認する(4.7.0〜7.1.1 は対象)
  2. お使いの系列の修正版へ更新する(7.1 系は 7.1.2)
  3. 更新が遅れていたなら、テーマの page- フォルダの有無と、攻撃の痕跡を確認する

「自分のサイトが対象か分からない」なら、まずは無料診断でバージョンの当たりをつけてください。「安全に更新してほしい」「攻撃の痕跡まで確認してほしい」という場合は、安全更新パックをはじめとする各種メニューをご用意しています。制作会社と連絡が取れない、テーマが古くて更新できない、といったご相談にも対応します。WordPress歴13年以上のエンジニアが担当します。

7月に公開されたWordPress本体の別の重大脆弱性「wp2shell」については、こちらの記事で解説しています。

参考・出典

※本記事は2026年9月28日時点の公開情報と、当社の保守環境での確認結果に基づいています。新しい情報が出た場合は追記します。

無料で診断する 無料で相談する