WordPressのClick2Shell脆弱性とは?7.1.1で修正された仕組みと影響を解説

当ページのリンクには広告が含まれています。
細工されたリンクからWordPressテーマが自動インストールされるClick2Shellのイメージ

Click2Shellはログイン中の管理者が細工されたリンクを開くと意図しないテーマがインストールされるWordPressコアの脆弱性です。コアの問題だけでサーバー上のコード実行(RCE)に至るわけではなく、インストールされたテーマにも別の脆弱性があるとコード実行までつながります。

WordPress 7.1.1で修正されましたが2026年9月22日には別の重大な脆弱性を修正した7.1.2も公開されています。これから更新するなら、7.1.2以降を選んでください。

この記事は2026年9月24日時点の公式情報とセキュリティ企業の解説をもとにしています。CVE番号や攻撃の状況は、今後変わる可能性があります。

目次

Click2Shellとは?

Click2Shell(クリック・トゥ・シェル)はセキュリティ企業のpwn.aiが報告して名付けた攻撃チェーンです。入口になるのはWordPressコアの脆弱性。条件がそろうと最終的にはサーバー上でPHPコードが実行されるところまでを含めてこの名前で呼ばれています。

WordPress公式のリリース記事には細工されたURLによってWordPress.orgのテーマが自動でインストール・プレビューされる問題として記載されています。この説明だけではどの段階でコード実行につながるのかが見えにくいところですね。

項目内容
修正されたバージョンWordPress 7.1.1(2026年9月17日公開)
問題の場所WordPressコア(テーマ画面のJavaScript)
攻撃に必要なことログイン中の管理者が細工されたリンクを開く
報告者pwn.ai
深刻度WordPressは未公表、pwn.aiは単体を「高」(CVSS 7.1)、コード実行までの全体を「重大」と評価
CVE番号9月21日時点の報道では未割り当て
実際の攻撃確認できた範囲では報告なし、PoC(実証コード)を含む技術詳細は9月18日に公開済み

攻撃はどう進む?

図の赤い部分がWordPressコアの問題です。紫の部分に進むにはテーマ側にも別の脆弱性が必要です。

管理者のリンク操作からテーマの自動インストール、別のテーマの脆弱性を使ったコード実行までを7段階で示す図

同じ値を2か所で別々に読んでいた

WordPressの管理画面にはURLでテーマ名を指定してプレビューやインストールを始められる画面があります。このURLに含まれるテーマ名をサーバー側と管理者のブラウザ側で別々に処理していたことが問題でした。

たとえば、テーマ名に記号が付いたURLを考えます。

URLに含まれるテーマ名

正しいテーマ名は「sample-theme」
攻撃者は「sample-theme!」というURLでクリックさせる

↓

サーバー側

記号の!を取り除きsample-themeというテーマを探す。

↓

画面には正しいテーマが表示される

↓

管理者のブラウザ側

sample-theme!をそのまま画面上の対象を探すための文字列に組み込む。

↓

攻撃者の意図したテーマ名でインストールするように誘導することが可能


実際の攻撃では別の記号を組み合わせ、ブラウザ側が探す対象をテーマカード内の「Install」ボタンへ変えます。

ざっくり言うと、サーバーはその値を「テーマ名」として読み、ブラウザは「どのボタンを押すか」という指示にも使っていました。値に記号を混ぜて細工すると、ブラウザ側の指示がテーマカード内の「Install」ボタンを指すようになります。その結果、WordPress自身のスクリプトがボタンをクリックしてしまいます。

7.1.1では記号を指示として解釈させないように値をエスケープし、対象を実際のテーマカードに限定しました。

なぜ管理者のログインが必要なのか

テーマのインストールには「インストール権限」と「操作が正規のものだと示すセキュリティトークン(nonce)」が必要です。ログイン中の管理者のセッションにはその両方がそろっています。攻撃者はそれらを盗む代わりに管理者のブラウザで動くWordPress自身のスクリプトに使わせます。

ログイン中の本人に意図しない操作をさせる攻撃をCSRF(クロスサイトリクエストフォージェリ)と呼びます。管理者がログインした状態で細工されたリンクを開くことが前提ですが、攻撃者がWordPressのアカウントを持つ必要はありません。

Patchstackはリンクを開かせる経路として「特定の管理者を狙ったフィッシング」と「サイト内にすでにあるXSS(不正なスクリプトを埋め込まれる脆弱性)」を挙げています。後者は攻撃者がすでに別の足がかりを持っているケースです。

サイトの見た目は変わらない

テーマはインストールされても有効化されないためサイトの見た目は変わりません。pwn.aiも攻撃中は元のテーマが有効なままだと説明しています。

とはいえ、使っていないテーマを放置してよいわけではありません。WordPressはカスタマイザーでプレビューするとき、有効化前のテーマのPHPを読み込むことがあります。今回の攻撃チェーンはこの動きからテーマ側の脆弱性につながります。

「1クリックでRCE」に至る条件

「1クリックでRCE」という表現はテーマ側の脆弱性まで重なった場合を指します。段階ごとの違いは次のとおりです。

段階起きること必要な条件
コアの問題だけ公式ディレクトリにある実在のテーマが、有効化されないままインストールされるログイン中の管理者が細工されたリンクを開く(7.1.1より前のバージョン)
コード実行(RCE)まで攻撃者のPHPコードがサーバー上で実行される上の条件に加えて、インストールされたテーマ側に別の脆弱性がある

pwn.aiが実証した攻撃では、まず公式ディレクトリのテーマを自動でインストールさせました。続いてカスタマイザーでそのテーマをプレビューさせ、まだ有効化していないテーマのPHPを読み込ませています。そのテーマにあった別の不備を使い、攻撃者が指定したプラグインのPHPを実行しました。テーマが入っただけでコード実行が始まるわけではなく、コアの問題だけでも任意のPHPコードは実行されません。

pwn.aiによるとコアの脆弱性を使って任意のテーマZIPを送り込むこともできません。インストールされるのは公式ディレクトリにある現行のテーマです。その中から別の脆弱性を持つテーマが攻撃に使われます。

pwn.aiは当時のMobile Repair Zone 2.5.4で攻撃を実証しました。このテーマには権限やnonceを確認せず、指定されたURLからZIPを取得して読み込む処理がありました。pwn.aiは同種の問題がほかの40以上のテーマにも見つかったと報告しています。Mobile Repair Zoneが現在も同じ状態かどうかは確認できていません。

Author(投稿者)やEditor(編集者)のアカウントにはテーマをインストールする権限がありません。Patchstackもこの攻撃チェーンを起動できるのは管理者だけだと説明しています。

影響を受けるバージョンと修正版

pwn.aiはWordPress 7.1.1より前のバージョンを対象としています。WordPressは古い系統にも修正版を出しており、主な系統では次のようになります。

使っている系統Click2Shellが直った版9月24日時点で入れたい版
7.17.1.17.1.2
7.07.0.57.0.6
6.96.9.86.9.9
6.86.8.96.8.10
6.76.7.86.7.9

右の列は9月22日の7.1.2と同時に公開された、各系統の最新の修正版です。6.6以前の系統の修正版も公式の7.1.1のバージョン解説ページに載っています。

影響を受ける古い系統の範囲は報道によって書き方が異なります。6.0以降とする記事もあれば、7.1.1より前のすべてとする記事もあります。使っている系統に修正版が出ているなら、その最新版まで更新してください。

WordPressを更新する手順

Step

現在のバージョンを確認する

管理画面の「ダッシュボード」→「更新」、または「ツール」→「サイトヘルス」→「情報」タブでバージョンを確認します。7.1系なら7.1.2、ほかの系統なら前の表の右の列にある版になっているかを見てください。

SSHで入れる環境なら、WP-CLIでも確認できます。

コマンド
wp core version
Step

バックアップを取って更新する

データベースとwp-contentをバックアップしてから「ダッシュボード」→「更新」の案内に沿って更新します。WP-CLIが使える環境ならコマンドでも更新できます。

コマンド
wp core update
Step

更新後のバージョンを確かめる

マイナー更新やセキュリティ更新は初期設定では自動で適用されます。ただ、設定やサーバー側の都合で止まることもあります。自動更新に任せている場合も、Step 1と同じ画面で実際のバージョンを確認してください。


自動更新をオフにしたつもりなのにWordPressが更新された場合はマイナー更新とセキュリティ更新の扱いを確認してみてください。設定ごとの動きは以下の記事で説明しています。

更新後はテーマとユーザーも確認する

WordPress本体を更新してもそれ以前にインストールされたテーマや作られたユーザーが自動で消えるわけではありません。Click2Shellではサイトの見た目が変わらないため、管理画面でも次を確認してください。

  • 「外観」→「テーマ」に入れた覚えのないテーマがないか。
  • 「プラグイン」と「ユーザー」に覚えのないプラグインや管理者がいないか。
  • 使っていないテーマは削除しておく。親テーマや子テーマ、予備の標準テーマは残す。
  • 管理画面にログインしたまま知らないリンクを開かない。

使っていないテーマも確認するのは、有効化前であっても、プレビューなどでPHPが読み込まれることがあるためです。

アクセスログが残っていればtheme-install.phpへのリクエストを調べtheme=に普通のテーマ名には入らない記号が並んでいないかを探す方法もあります。細工したURLにはそうした記号が必要になるためです。ただ、これは公式が示した確認方法ではありません。ログに見つからなかったとしても攻撃がなかったとは断定できません。


覚えのないテーマや管理者が見つかった場合は削除する前に状態を記録してください。確認する順序やファイル・アクセスログの調べ方は以下の記事で詳しく整理しています。

迷いやすいポイント

7.1.1へ更新しないと危険?

更新は必要ですが、いま入れるなら7.1.1ではなく7.1.2以降です。WordPress公式もセキュリティリリースへの速やかな更新を案内しています。確認できた範囲ではClick2Shellによる実際の攻撃は報告されていないものの、実証コードは公開されています。

リンクを開くだけで乗っ取られる?

ログイン中の管理者が細工されたリンクを開くことが、まず必要です。さらにサーバー上のコード実行まで進むには、インストールされるテーマにも別の脆弱性がなければなりません。

テーマが勝手に変わる?

インストールされても有効化はされないためサイトの見た目は変わりません。ですが増えたテーマは「外観」→「テーマ」で確認できるので、妙なテーマがある場合は要注意です。

自分のサイトが攻撃されたか確認できる?

確認できた範囲では、公式が示した確認手順はありません。「外観」→「テーマ」で覚えのないテーマを調べ、プラグインや管理者も確認してください。アクセスログも手がかりになりますが、何も見つからないことは安全の証明にはなりません。

すぐに更新できないときの回避策は?

公式や報告者は、個別の回避策を示していません。Patchstackはwp-config.phpに次の定数を設定すると、テーマやプラグインの強制インストールを防げると説明しています。

wp-config.php
define('DISALLOW_FILE_MODS', true);

この設定は、管理画面からのテーマやプラグインの導入と更新もまとめて止めます。普段の運用に影響するため、更新までの一時的な措置として考えてください。対策の中心はWordPress本体の更新です。

まとめ

  • Click2Shellは、ログイン中の管理者が細工されたリンクを開くと、有効化されないテーマが勝手に入るコアの脆弱性だよ。
  • コア単独ではRCEにならなくて、インストールされたテーマ側の別の脆弱性が重なったときに、コード実行まで進むよ。
  • 更新は7.1.1で止めずに、7.1.2(使っている系統の最新の修正版)まで上げてね。
  • 更新後は「外観」→「テーマ」に、覚えのないテーマがないかを見ておいてね。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次