WordPress の高速化プラグイン W3 Total Cache の脆弱性(CVE-2026-87920)が、Wordfence から 10/2 に公開されました。ログインなしでコメント欄から、公開ページに JavaScript を仕込めるものです。有効インストール 90 万のプラグインですが、成立するのは Browser Cache の「静的リソースからクエリ文字列を削除する」をオンにしているサイトだけです。修正版の 2.10.7 は公開の数時間前、日本時間で 10/2 の深夜に出ています。
2.10.7 が届いているサイトでは何も起きていない一方、2.10.6 以下のままでこの設定をオンにしているサイトは、10/2 から攻撃対象になっています。
https://www.wordfence.com/threat-intel/vulnerabilities/id/34bd7c32-f4c5-4015-909a-e4730f35494b
Wordfence の advisory と W3 Total Cache の changelog をもとに、やることだけ整理しました。
取るべき対応
- プラグイン一覧で W3 Total Cache のバージョンを見る
- 2.10.7 なら対応済みで、10/2 に出た現行版です
- 2.10.6 以下なら 2.10.7 に上げる
- W3 Total Cache は 8 月にも、ログインなしでサーバー上のファイルを書き込める脆弱性が公開されています(8/20 の記事)。2.10.7 に上げるとそちらも塞がります
- すぐ上げられないなら、Browser Cache の「静的リソースからクエリ文字列を削除する」をオフにする
- Performance → Browser Cache の設定ページに、同じ名前の項目が 3 か所あります
対象者
対象は 2.10.6 以下を入れていて、Browser Cache の「静的リソースからクエリ文字列を削除する」をオンにしているサイトです。見るのは「2.10.7 より前か」と「この設定がオンか」の 2 つ。Wordfence はこの設定がオンのときだけ成立すると明記しています。オフなら外れますが、設定した覚えが無いだけでは外れたことにならないので、管理画面で見てから判断します。攻撃者側に要るのはコメントを送れることだけで、コメントを承認制にしているかどうかは advisory の条件に挙がっていません。
起こったこと
ログインしていない攻撃者が公開ページにコメントを 1 件書き込むと、その中に仕込んだ JavaScript が、そのページを開いた人のブラウザで動きます。動く相手はコメントを読みに来た訪問者に限らず、同じページを開いた管理者も含まれます。CVSS は 7.2 で、区分は High です。
原因
原因は Wordfence の advisory に書かれています。W3 Total Cache は、クエリ文字列を削除する設定がオンだと、出力する HTML の中の静的ファイルの URL を正規表現で探し、「?」から後ろを取り除きます。この処理はコメント本文にも掛かります。取り除く範囲が「?」から属性を閉じる引用符までになるため、属性の境界が壊れ、コメントに書かれた文字列がタグとして残る、というのが説明です。2.10.7 の changelog にも、クエリ文字列を削除するときの引用符なしの URL の書き換えを制限した、とあります。



