WordPress 7.1.1 が2026年9月17日に公開されました。セキュリティ修正11件を含み、公式が「直ちに更新してください」と明記している回です。最も重いのは wpautop() のストアドXSS(CVE-2026-93485、CVSS 3.1 で 7.1)で、ログイン不要でコメントフォームから攻撃が成立します。
影響範囲は7.1以前のほぼ全てです。4.7まで遡ってバックポートが出ており、4.6以前はサポート対象外なので修正が提供されません。
コメントの blockquote からスクリプトが実行される
脆弱性があったのは wpautop() です。改行を <p> に変換する関数で、投稿本文にもコメントにも適用される、WordPressがコンテンツを描画するときにほぼ必ず実行される処理です。
原因は blockquote タグを <p> の外に出す正規表現でした。7.1 までの実装はこうなっています。
// WordPress 7.1 まで(wp-includes/formatting.php)
$text = preg_replace( '|<p><blockquote([^>]*)>|i', '<blockquote$1><p>', $text );
キャプチャグループの [^>]* は、最初に現れた > で止まります。整形式のタグならその > がタグの閉じ記号なので正しく動きます。しかし引用符で囲まれた属性値の中に > が入ると、そこをタグの終わりと誤認します。
攻撃側は blockquote の cite 属性の中に改行を含むコメントを投稿します。WordPress内部のプレースホルダ処理がその改行を --> という文字列に変換するため、属性値の中に > が生まれます。結果として正規表現がタグ構造を取り違え、攻撃者が書いた文字列が属性の外に出てスクリプトとして実行されます。
XSSが成立すると、そのページを閲覧した人のブラウザで任意のJavaScriptが実行されます。ログイン中の管理者がそのコメントが表示されるページを閲覧すれば、管理者のセッションを使った操作が可能になるため、影響は一般の閲覧者だけに留まりません。
修正は正規表現に引用符を認識させること
7.1.1 では、引用符で囲まれた区間を正規表現側が理解するように書き換えられました。
// WordPress 7.1.1(wp-includes/formatting.php)
$text = preg_replace( '!<p><blockquote((?:[^>"\']|"[^"]*"|\'[^\']*\')*)>!i', '<blockquote$1><p>', $text );
「引用符の外の非 > 文字」「ダブルクォートで囲まれた区間」「シングルクォートで囲まれた区間」の3択の繰り返しになっており、属性値の中の > ではタグが終わったと判定されなくなっています。
属性値を考慮せず [^>]* でタグを切り出す書き方は、自作のショートコードやテンプレートでも書いてしまいがちです。HTMLをタグ単位で処理するコードを自分で書いているなら、同じ形になっていないか確認しておくとよいです。
コメントが公開されて初めて成立する
この脆弱性には前提条件がひとつあります。コメントが承認・公開されるまでは発動しません。WordPressの初期設定では初回投稿者のコメントは承認待ちに入るため、任意の訪問者がいきなりスクリプトを差し込めるわけではありません。
ただし一度承認された投稿者は以後自動承認されます。無害なコメントを投稿して1回承認を得てから攻撃用のコメントを投稿する、という二段階の手順を取られると成立します。すぐに更新できない事情がある場合は、コメントの自動承認設定を無効にしておくことが暫定的な緩和策になります。これは時間稼ぎであって修正ではないので、更新できるなら更新が先です。
残り10件は権限を持つ利用者が前提
他の10件は、攻撃に何らかのアカウントまたは利用者の操作が必要です。何ができてしまうかを一覧にすると次のとおりです。公式発表が権限を明記していない項目は、WordPress系CVEの採番機関であるPatchstackの分析に従っています。
| 内容 | 必要な権限 |
|---|---|
| 細工したURLを開かせてテーマを無断でインストール・プレビューさせる | 利用者の誘導 |
| 他人の投稿を任意に上書きする | 寄稿者 |
| REST APIのテンプレート機能で想定外のファイルパスを指定する | 寄稿者 |
| 下書き・承認待ち投稿のスラッグを知る | 寄稿者 |
| HTML APIの処理でHTMLコメントの外に文字列を出す | 寄稿者 |
| XML-RPC経由でカスタムCSSの編集権限チェックを回避する | 著者 |
| 非公開の親投稿のタイトルを知る | 著者 |
| コメントやノートの親子関係を付け替える | ログイン済み |
| カスタムヘッダー画像を利用したストアドXSS | 管理者 |
| マルチサイトでネットワーク専用プラグインを有効化する | サイト管理者 |
寄稿者・著者の権限が必要なものは、外部ライターにアカウントを発行していないサイトでは実質的に成立しません。会員登録を開放しているサイトや、複数人で記事を書いているサイトでは、これらも現実的な脅威になります。
なお7.1以前を使い続けている環境も、4.7まで各系列に修正版が出ています。メジャーバージョンを上げられない事情があっても、同系列のパッチ適用は別途進められます。
参考
- Version 7.1.1 – WordPress Documentation(修正一覧と、4.7まで遡った影響範囲)
- WordPress 7.1.1 Maintenance and Security Release – WordPress News
- WordPress 7.1.1 Maintenance and Security Release – Patchstack(各脆弱性の必要権限と wpautop() の技術的な分析)