← 記事一覧

セキュリティ

WordPressが2016年まで遡る脆弱性を修正。未更新サイトは5時間以内に走査された

CVE-2026-87902は、認証なしの訪問者がWordPressのページテンプレート解決処理にローカルのPHPファイルを読み込ませることを許し、よくあるホスト構成ではコード実行に至る。修正は4.7までの全ブランチに届き、探索はその日の午後に始まった。

MAI
WordPressプロジェクトの公式バナー画像。円形のWordPressの「W」ロゴと、WordPressのワードマーク。

WordPressは9月22日に7.1.2を公開し、同じ修正を現在サポートするすべてのセキュリティブランチ、4.7にまでバックポートした。この脆弱性CVE-2026-87902は、認証されていない訪問者がページテンプレートの解決処理を誘導し、有効なテーマのディレクトリ外にある読み取り可能なローカルPHPファイルを読み込ませることを許す。一部のホスト環境では、これがリモートコード実行につながる。Patchstackによれば、最初の攻撃の試みを遮断したのは同日17:44 UTC — リリース公開から5時間と経っていない。

この時間差こそが本題である。パッチはそのまま脆弱性の公表でもあり、全ウェブサイトの40.2%を動かすソフトウェアにとって、その間に開く窓こそが被害の起きる場所だ。

2016年まで届く脆弱性

影響範囲は2016年12月に公開された4.7.0から始まる。WordPressはこれほど古いブランチへ日常的にバックポートすることはない。それを今回行ったこと自体が、プロジェクトがこの露出をどう見ているかの最も明確な表明である。

CVECVE-2026-87902
影響を受けるバージョンWordPress 4.7.0 〜 7.1.1
修正版7.1.2、7.0.6、6.9.9、6.8.10、6.7.9、6.6.9、および 4.7.37 までのバックポート
該当箇所ページテンプレートの解決処理(get_page_template()
報告者Robert Ressl(責任ある開示)
悪用状況9月22日に探索行為を観測。侵害の確認報告はなし

W3Techsはリリース当日、WordPressが全ウェブサイトの40.2%、CMS市場の58.8%を占め、WordPress導入環境の62.5%がバージョン7であるとしていた。問題は残りの3分の1だ。

「条件付き」が背負っているもの

プロジェクトもPatchstackも、コード実行は条件付きであると慎重に述べている。ファイルの読み込み自体は条件を問わず成立する。それを実行に変えるには、page-templates のようなトップレベルのディレクトリを持つテーマが有効であること(Patchstackは、旧来の既定テーマや広く使われるサードパーティ製テーマでよく見られると指摘する)、そしてPHPの register_argc_argv が有効であることが必要になる。後者は公式のPHP Dockerイメージや、PHP 8.5未満のcPanel環境では既定で有効だ。

これらは特殊な条件ではない。既定値である。深刻度の評価が割れているのも、その点をどう扱うかの違いによる。プロジェクトのアドバイザリは9.2を示す。CVE.orgに公開されたCNAの記録は、攻撃条件の複雑さを「高」とするベクトルで8.1とし、NVDの分析はまだ保留中だ。差を生んでいるのは、広く使われている既定値を攻撃者にとっての障壁と数えるか、インターネットの通常の状態と見なすかという判断である。サイト運用者にとっては学術的な議論にすぎない。ファイル読み込みという基本的な能力は無条件に成立し、任意のローカルPHPファイルを読める攻撃者は、すでに設定上の秘密が置かれた領域の内側にいる。

5時間

Patchstackのテレメトリが描くのは、標的を定めたキャンペーンではなく機会主義的な一斉走査である。通信は少数の送信元 — 隣接する2つのIPv4アドレスと一部のIPv6 — から来て、最初の1時間で頂点に達し、その後減衰した。要求は実行の試みではなかった。どのホストがまだ脆弱かを見分けるために、ありふれたWordPressのコアファイルを判定材料として使う偵察である。

これは大規模悪用の第一段階に典型的な形だ。誰かがアドバイザリを読み、検出用の仕掛けを組み、インターネットに撒いて標的リストを作る。実行の試みが来るとすれば、それは応答したアドレスに向けられる。

防御側がすべきこと

更新すること。自動バックグラウンド更新が有効なサイトは、リリース時点ですでにパッチを受け取っている。WordPress自身の案内は、ダッシュボードから、あるいはリリースをダウンロードして直ちに更新することだ。露出のほとんどは、自動更新が無効になっている場所に残っている。互換性のためにバージョンを固定するマネージドホスティング、もはや誰も所有していないステージング環境や放置されたインストール、そして運用者がソフトウェアとして意識しなくなるほど古いブランチのサイトである。

直ちにパッチを当てられない場合、PatchstackとHadrianはいずれも暫定的なWAFでのフィルタリングと、アクセスログで何を探すべきか — クエリパラメータ内のエンコードされたトラバーサル列、および返すべきでないファイルの内容を返した過去のリクエスト — を説明している。検出の詳細はそれらのアドバイザリにあるため、独自にルールを組み立てるよりそちらに従うほうがよい。

本脆弱性は現時点でCISAの Known Exploited Vulnerabilities カタログには登録されておらず、執筆時点で侵害の確認報告もない。W3Techsのバージョン分布が示すほど未更新の裾野が長いのであれば、その状態は続かないだろう。WordPressの自動更新は、オープンなウェブで最も効果的なセキュリティ基盤の一つであり、今回のリリースはその良い実証でもある — ただし、それが実際に届くおよそ3分の2の環境に対しては。

Sources: WordPress 7.1.2 Security Release · WordPress security advisory GHSA-7hp8-65ch-5whp · Patchstack: WordPress 7.1.2 Security Release · Patchstack: Attackers Started Probing WordPress Sites Hours After the Patch · The Hacker News: WordPress Issues Patch for Critical Flaw · Hadrian vulnerability alert: CVE-2026-87902 · W3Techs: Usage statistics of WordPress

続けて読む