WordPressの修正が出た日に、もう攻撃が始まっていた — CVE-2026-87902「条件つきRCE」の読み方

この記事は時点のニュースです。現在の提供状況とは異なる場合があります。誤りの訂正は随時行います。


テンプレート解決の抜け道と RCE の前提条件 未認証の 攻撃者 テンプレートを選ぶ処理 get_page_template 本来 テーマ内のPHP 今回 テーマ外の 任意の.php RCEに至るには次の2つが同時に必要 ① 有効テーマに page- で始まる 最上位ディレクトリがある ② PHPの register_argc_argv が On になっている 両方そろって初めてRCE
テンプレート解決の抜け道と、RCEに必要な2つの前提条件
ひよこ ひよこ
ペンギン先生、WordPressに危ない穴が見つかったってニュースを見たんだけど…。あれって世界中のサイトで使われてるやつだよね? わたしみたいな初心者にも関係ある話なの?
ペンギン先生 ペンギン先生
おおいに関係あるよ。2026年9月22日にWordPress 7.1.2が公開されて、WordPressのリリース告知は「critical severity(深刻度クリティカル)の脆弱性1件」の修正だと書いているんだ。中身は、未認証の攻撃者が「ページテンプレートの解決」を悪用して、有効なテーマのディレクトリの外にある読み取り可能なPHPファイルを読み込ませられる、というもの。CVE-2026-87902という番号が付いているよ。
ひよこ ひよこ
「ページテンプレートの解決」って、なんだか難しそう…。それはWordPressの何をする部分なの?
ペンギン先生 ペンギン先生
WordPressはページを表示するとき、有効になっているテーマの中から「このページはどのPHPファイルで描くか」を選ぶんだ。その選ぶ処理が `get_page_template()` で、NVDの説明も「未認証の攻撃者が get_page_template() のテンプレート解決に、有効テーマのディレクトリ外にある読み取り可能な .php ファイルを含めさせられる」と書いている。本来はテーマの中だけを見るはずの選択が、外に伸びてしまったわけだね。分類はCWE-98、PHPのinclude/requireに渡すファイル名の制御が不適切、というやつだよ。
ひよこ ひよこ
えっと…外のPHPファイルを読み込まれちゃうと、何が起きるの? 見られるだけならまだマシな気がしちゃうんだけど。
ペンギン先生 ペンギン先生
そこがこの脆弱性のややこしいところでね。「読み込む」がPHPの場合は「そのファイルを実行してしまう」に近いんだ。だからうまい対象ファイルが置いてあると、リモートコード実行(RCE)まで届いてしまう。ただしGitHub側のアドバイザリは、RCEになるには2つの前提がそろう必要があると明記しているよ。①有効テーマに `page-` で始まる最上位ディレクトリがあること、②サーバーに都合のいい .php が置いてあること。②の具体例として、PHPの `register_argc_argv` が On のときに `pearcmd.php` を悪用する経路が挙げられているんだ。
ひよこ ひよこ
じゃあ条件がそろわなければ平気ってこと? わたしのテーマにそんなディレクトリあるかわかんないよ…。
ペンギン先生 ペンギン先生
アドバイザリが例に挙げているのは、Twenty TwelveやTwenty Fourteenといった標準テーマ、それにNeve・Hestia・Sydneyといった人気の配布テーマ。つまり「珍しい構成だから大丈夫」とは言いにくい。②のほうも、Docker公式のPHPイメージやcPanelの既定設定(PHP 8.5より前)が該当するとされていて、これは自分で設定した覚えがなくても成立しうる側の条件なんだ。
ひよこ ひよこ
あれ、そういえば。深刻度が「Critical」って書いてある記事と「High」って書いてある記事があって混乱したんだけど、どっちが正しいの?
ペンギン先生 ペンギン先生
どちらも正しくて、測っている尺度が違うんだ。GitHubのアドバイザリはCVSS 4.0で9.2・Critical。一方NVDに載っているCVSS v3.1(提供元はSecondary扱い)は8.1・HIGHで、ベクタを見るとAttack ComplexityがHIGH、つまり「攻撃の成立に手間がかかる」と評価されている。CVSS 4.0には Attack Requirements(AT)という軸が別にあって、今回は AT:P(前提条件あり)。だから4.0側は攻撃自体の複雑さを AC:L(低い)としたまま、前提条件は別枠で表現できたんだよ。
ひよこ ひよこ
なるほど…! 同じ穴を別のものさしで測ったから数字が違うんだね。じゃあ実際に攻撃はあったの?
ペンギン先生 ペンギン先生
あったんだ。セキュリティ企業Patchstackは、修正版と同じ2026年9月22日の11時49分(UTC)に最初の悪用試行を観測してブロックしたと報告している。リクエストはパーセントエンコードした `templates%2f` をプレフィックスにして、さかのぼる階層の深さを1段から12段まで変えながら、GETとPOSTの両方、16進の大文字と小文字を混ぜて試すものだった。しかも数時間のうちに、偵察の段階から pearcmd 経由でディスクにファイルを書き込む段階へ進んだとしている。さらにCISA(米国のサイバーセキュリティ・インフラセキュリティ庁)が9月25日、この件を「WordPress Core Remote File Inclusion Vulnerability」としてKEVカタログ、つまり実際に悪用が確認された脆弱性の一覧に追加したんだ。CISA Coordinatorの判定は exploitation: active(悪用が進行中)、technicalImpact: total(技術的影響は全面的)、automatable: no(大量自動化はしにくい)。米連邦民間機関の対応期限は9月28日で、指令BOD 26-04の対象は連邦機関だけだけど、告知は「すべての組織にKEV掲載分の優先的な修正を推奨する」とも書いているよ。
ひよこ ひよこ
修正が出た当日に、もう攻撃が来てたの…!? それで、わたしがやることは結局なんなの?
ペンギン先生 ペンギン先生
WordPressを7.1.2以降にすること。これがいちばん大事。古い系列を使っていても、修正はセキュリティ修正の対象になっている系列すべてにバックポートされていて、4.7.37・4.8.32・4.9.33などが出ているよ。自動バックグラウンド更新が有効なサイトなら、もう当たっている可能性が高い。管理画面の「更新」を開いてバージョンを確認して、当たっていなければ「今すぐ更新」を押せばいいんだ。
ひよこ ひよこ
確認してみる! でも、こういう「条件つきの脆弱性」って、これからどう受け止めたらいいのかな。
ペンギン先生 ペンギン先生
覚えておくといいのは、前提条件は「自分は該当しない」と安心するための材料にはなりにくい、ということ。テーマは後から変えるし、`register_argc_argv` みたいな設定はホスティング側の既定で決まっていて自分の管理外だったりする。今日は条件を満たしていなくても、明日テーマを変えたら満たすかもしれない。それに automatable: no は「一斉に自動で刈り取るのは難しい」という意味で、狙いを定めて調べられた1台が安全という意味ではないんだ。条件を見たら「それは自分が握っている条件か、誰かの都合で変わる条件か」を見分けるくせをつけると、こういうニュースの読み方が一段しっかりするよ。

出典・確認した情報

  • WordPress News — WordPress 7.1.2 Release

    発表日: 2026-09-22 / 確認日: 2026-09-28

    • WordPress 7.1.2は2026年9月22日に公開され、「critical severity security vulnerability」1件の修正を含むとされている。
    • 脆弱性は「an unauthenticated attacker can, under certain conditions, make page template resolution include a chosen readable local PHP file outside the active theme directories」と説明され、「If relevant pre-conditions for both the server environment and the active theme are met, this can lead to remote code execution (RCE)」とされている。
    • 識別子は「CVE-2026-87902 / GHSA-7hp8-65ch-5whp」。報告者としてRobert Resslに謝辞が記されている。
    • 修正は「backported to all branches eligible to receive security fixes (currently through 4.7)」とされ、セキュリティリリースのため直ちに更新することを推奨している。自動バックグラウンド更新が有効なサイトでは自動的に更新が始まるとされている。
    • このリリース告知のページ自体には、実際に悪用されている旨の記述はない(2026-09-28確認時点)。
  • GitHub Security Advisory GHSA-7hp8-65ch-5whp(WordPress/wordpress-develop)

    発表日: 2026-09-22 / 確認日: 2026-09-28

    • タイトルは「Unauthenticated path traversal in page-template resolution leading to conditional RCE」。深刻度はCriticalで、CVSS 4.0のスコアは9.2、ベクタは「CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N」。
    • CWEは「CWE-98 Improper Control of Filename for Include/Require Statement in PHP Program」。
    • 影響範囲は4.7.0から7.1.1で、修正版は4.7.37・4.8.32・4.9.33などの各系列のポイントリリースと7.1.2。
    • RCEに至る前提として、有効テーマに「a top-level directory whose name starts with page-」が存在すること(例としてTwenty Twelve、Twenty Fourteen、Neve、Hestia、Sydney)が挙げられている。
    • もう一つの前提として、サーバー側に読み取り可能な.phpファイルが存在すること。pearcmd.phpを使う経路は「register_argc_argv is set to On」の場合に成立するとされ、Docker公式PHPイメージやcPanelの既定設定(PHP 8.5より前)が該当するとされている。
  • NVD CVE-2026-87902 レコード(NVD API 2.0)

    発表日: 2026-09-22 / 確認日: 2026-09-28

    • published は2026-09-22T17:17:28、lastModified は2026-09-26T04:17:49、vulnStatus は Undergoing Analysis。
    • 説明は「An unauthenticated attacker can make get_page_template() page-template resolution include a chosen readable local .php file outside the active theme directories. If relevant pre-conditions for both the server and the active theme are met, this can lead to RCE.」。
    • 掲載されているCVSS v3.1(type: Secondary)のbaseScoreは8.1でbaseSeverityはHIGH、ベクタは CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H。すなわちAttack ComplexityがHIGHと評価されている。
    • 影響範囲は versions: version 0 / lessThan 7.1.2(defaultStatus は unaffected)として記録されている。
    • cisaExploitAdd は2026-09-25、cisaActionDue は2026-09-28、cisaVulnerabilityName は「WordPress Core Remote File Inclusion Vulnerability」。cisaRequiredAction は BOD 26-04 に沿った緩和策の適用を求めている。
    • CISA CoordinatorによるSSVC(2026-09-25時点)は exploitation: active、automatable: no、technicalImpact: total。
  • CISA — CISA Adds One Known Exploited Vulnerability to Catalog

    発表日: 2026-09-25 / 確認日: 2026-09-28

    • 2026年9月25日付で、CVE-2026-87902「WordPress Core Remote File Inclusion Vulnerability」をKnown Exploited Vulnerabilities(KEV)カタログへ追加したと告知している。
    • 根拠として挙げられている指令はBOD 26-04で、FCEB(連邦民間行政機関)に対する脆弱性管理の要件を定め、リスクの高い脆弱性の迅速な修正を優先させるものとされている。
    • 「While BOD 26-04 applies only to FCEB agencies, CISA encourages all organizations to adopt risk-based vulnerability management and prioritize remediation of KEV Catalog vulnerabilities.」と記載されている。
  • Patchstack — CVE-2026-87902: attackers started probing WordPress sites hours after the patch

    発表日: 2026-09-22 / 確認日: 2026-09-28

    • 自社での観測として、最初の悪用試行は2026年9月22日11:49 UTCに観測・ブロックされ、コアファイルを探る内容だったと記録している。
    • 初期のリクエストはパーセントエンコードされたトラバーサル列を使い、templates%2f をプレフィックスとして、1段から12段までの深さを試していた。GETとPOSTの両方、16進の大文字・小文字の双方が使われた。
    • 前提条件として挙げているのは「whether your active theme has a top-level page- directory, and whether your PHP has register_argc_argv enabled」の2点。認証は不要とされている。
    • 数時間のうちに、偵察の段階からpearcmd経由でディスクへファイルを書き込む段階へ進んだと報告している。