「Click2Shell」と名付けられた新たに公表されたWordPress Coreの脆弱性チェーンにより、未認証の攻撃者がログイン中の管理者のブラウザを操作し、悪意あるテーマを気づかれずにインストールさせた上で、悪意あるリンクを一度クリックさせるだけでリモートコード実行(RCE)にまで発展させられることが判明しました。
PWNAIのセキュリティ研究者らは、WordPressのテーマプレビューURLパラメータが2つの異なるコンポーネントによって整合性のない形で解釈されていることを発見しました。
WordPress.orgのThemes APIはthemeパラメータを正規のスラッグに正規化する一方、wp-admin/js/theme.js内のブラウザ側JavaScriptは攻撃者が指定した生の文字列をそのまま保持し、jQueryのCSSセレクタに直接注入してしまいます。
twentytwenty"]>*>*>*/*のような値を細工することで、攻撃者は本来意図されたセレクタのスコープから抜け出し、WordPress自身のスクリプトに本物の「インストール」ボタンを自動的にトリガーさせることができました。管理者側の操作は一切不要で、nonceの窃取も、攻撃者側にinstall_themes権限も必要ありません。
被害者の認証済みセッションがすべてを賄ってくれるわけです。これ単体では、公式カタログのテーマが有効化されずにインストールされるだけです。しかしPWNAIはその後、WordPressがCustomizerのプレビュー時に、たとえ非アクティブな状態であってもテーマのfunctions.phpを読み込んでしまうことを発見しました。
これに、(当時最新版だった)Mobile Repair Zone 2.5.4テーマに存在した無関係の別のバグ――nonceも権限チェックもなしに登録されたAJAXハンドラが、攻撃者が制御するプラグインパッケージのURLを受け付けてしまう欠陥――が組み合わさることで、このチェーンは強制インストールからサーバー側での完全なPHP実行にまでエスカレートしました。
一連の攻撃手順は次の通りです。細工されたリンク→テーマの強制インストール→Customizerが非アクティブなテーマのコードを読み込む→保護されていないAJAXインストーラーが攻撃者のプラグインを取得→Webサーバーのアカウント権限でPHPが実行され、事実上サイト全体が乗っ取られます。
WordPressは、このセレクタインジェクションの欠陥をチェンジセット63664で修正し、11件の修正を含むメンテナンス・セキュリティリリースとして2026年9月17日にWordPress 7.1.1をリリースしました。
このパッチにより、マッチ対象は正規のdiv.theme要素のみに制限され、$.escapeSelector()を適用することで注入されたセレクタ構文が無害化されます。
WordPressはpwn.aiの研究チームの功績を認め、上限額のバグバウンティを支払いましたが、公表時点ではCVE識別子はまだ割り当てられていませんでした。
研究者らは、強制インストール単体のプリミティブを高深刻度(CVSS 3.1:7.1)、チェーン全体を悪用した場合をクリティカル(CVSS 3.1:9.3、ユーザー操作が必要な点により影響度がやや下がる)と評価しています。
この問題はWordPress 7.1.1より前のすべてのCoreバージョンに影響します。WordPressは全Webサイトの推定43%、およそ5億サイトで稼働していることから、この欠陥の影響範囲は非常に大きいと言えますが、悪用にはテーマ側の別の脆弱性との連鎖が必要でした。
サイト管理者は直ちにWordPress 7.1.1へアップデートするとともに、非アクティブなものも含めインストール済みのテーマを点検し、未認証または適切に保護されていないAJAXハンドラがないか確認すべきです。研究者らは今回の調査で、この種のバグをサードパーティ製カタログテーマ40件以上で発見しています。
16,000以上のSOCチームがANY.RUNを活用し、脅威調査の効率化と手作業の削減を実現しています。自チーム向けに詳しく見る
翻訳元: https://cyberpress.org/click2shell-wordpress-flaw/