WordPress 本体に、ログインしていない第三者がサーバー上の PHP ファイルを WordPress に読み込ませられる脆弱性があり、修正版の 7.1.2 が 9/22(日本時間 23 日の未明)に WordPress.org から公開されました。対象は 4.7.0 から 7.1.1 までで、いま動いている WordPress のほぼ全部が入ります。修正は 4.7 まで各系列に配られているので、上げ先は使っている系列の修正版で足ります。
自動更新が有効なサイトは、公開と同時に順に 7.1.2 へ上がっています。一方で、自動更新を止めているサイトや、レンタルサーバーのパネルで更新しているサイトは、自分で確かめないと修正前のまま残ります。そこに向けて、Patchstack は修正版の公開から 5 時間足らずで、脆弱かどうかを確かめる探索アクセスを観測したと 9/22 に報告しています。
https://github.com/WordPress/wordpress-develop/security/advisories/GHSA-7hp8-65ch-5whp
WordPress.org のリリース告知と advisory をもとに、やることだけ整理しました。
取るべき対応
- 管理画面の「ダッシュボード」にある「更新」で、WordPress のバージョンを見る
- 7.1.2 なら対応済みです。自動更新が有効なサイトは、9/22 の公開から順に上がっています
- 1 つ前の 7.0 やそれより前を使っているサイトは、下の表の修正版になっていれば対応済みです
- 修正前のバージョンなら、同じ画面の「今すぐ更新」で上げる
- 上げ先は使っている系列の修正版で足り、この対応のために 7.1 へ上げる必要はありません
- 上げないまま使い続ける回避策は、リリース告知にも advisory にも書かれていません
- レンタルサーバーのパネルや制作会社に更新を任せているサイトは、反映されたかを同じ画面で確かめる
対象者
対象は 4.7.0 から 7.1.1 までの WordPress を動かしているサイトです。修正版は 7.1.2 で、それより前の系列にも 4.7 まで修正版が出ています。
| 使っている系列 | 修正版 |
|---|---|
| 7.1 | 7.1.2 |
| 7.0 | 7.0.6 |
| 6.9 | 6.9.9 |
| 6.8 | 6.8.10 |
| 6.7 | 6.7.9 |
| 6.6 | 6.6.9 |
| 6.5 | 6.5.12 |
| 6.4 〜 4.7 | 各系列に修正版あり(6.4.12 から 4.7.37 まで。一覧は advisory) |
ファイルを読み込ませるところまでは、テーマや設定に関係なく成立します。そこから攻撃者のコードを実行するところまで進む条件は advisory に 2 つ書かれていて、1 つは有効なテーマ(親か子)に page- で始まる名前のトップレベルのディレクトリがあること。advisory は Twenty Twelve と Twenty Fourteen のほか、Neve・Hestia・Sydney を挙げています。もう 1 つは、読み込むと動く PHP ファイルがサーバーにあることで、advisory は register_argc_argv が On の環境にある pearcmd.php を例に、公式の PHP Docker イメージと、PHP 8.5 より前の cPanel の既定設定が該当すると書いています。外れられるのは、バージョンを上げたサイトだけ。
起こったこと
WordPress はページを表示するとき、どのテンプレートファイルを使うかをリクエストの内容から決めます。この脆弱性(CVE-2026-87902)は、その決め方に外から細工した値を渡すと、有効なテーマのディレクトリの外にある PHP ファイルを読み込ませられるものです。ログインは要りません。読み込ませた先が読み込むと動く PHP ファイルなら、そこで攻撃者のコードが実行されてサイトの乗っ取りに至ります。
深刻度は WordPress.org の告知が critical severity で、NVD の CVSS は 8.1。低めに見えるのは、コードの実行までに上の 2 条件が要るぶんを織り込んだ値だからです。
原因
原因は 1 つ。ページテンプレートを決める処理が、テンプレートのファイル名を十分に検証していなかったことです。advisory はこれをページテンプレート解決のパストラバーサルと呼び、分類は CWE-98(PHP のインクルードで読み込むファイル名の制御が不十分)。細工した値でテーマの外のパスを指せたので、サーバー上の読める PHP ファイルなら何でも読み込ませられました。


