研究者らは、Click2Shellと名付けたWordPressコアの新たな脆弱性について、技術的詳細と概念実証コードを公開した。この脆弱性を利用すると、攻撃者が直接認証されていなくても、リモートのサーバー上でPHPコードを実行できる一連の攻撃が可能になる。WordPressは先週リリースされたバージョン7.1.1でこの欠陥を修正したが、実証コードが公開されたことで、影響を受けるサイトの更新がより急務となっている。
この攻撃チェーンはどのように機能するのか?
侵入テストプラットフォームpwn.aiの研究者Paulos Yibelo氏がこの脆弱性を発見し、8月22日にWordPressへ報告した。報告によると、テーマのプレビューリンクから取得した値が、WordPress.orgのThemes APIを介して一度解釈された後、管理者のブラウザー上でJavaScriptによって安全でない方法で処理される。
これにより、管理者が明示的にインストールしなくても、公式ディレクトリからサイトへテーマを追加できる。テーマが有効化されていない場合でも、Customizerツールでプレビューされている間に、その内部のPHPコードが実行される可能性がある。攻撃を完了するには、攻撃者が特別に細工したリンクを送信する必要があるが、サイトにログイン済みの管理者がそのリンクを訪問しなければならない。
悪用後に何が起こり得るのか?
研究者らは、攻撃チェーンの第2段階として脆弱なテーマを使用し、攻撃者が指定したPHPコードを実行した。完全な報告書によると、ファイルの変更や削除、ユーザーデータへのアクセス、データベースの認証情報と認証秘密情報を含むwp-config.phpファイルへのアクセスなど、サーバー上でコマンドを実行できる可能性がある。
これにより、悪意のある管理者アカウントを作成したり、サイトに悪意のあるスクリプトを注入したりできる可能性がある。また、WordPress Core 7.1.0およびそれ以前のバージョンに存在する基本的な欠陥は、研究者によれば、WordPress.orgのディレクトリに存在する他の脆弱なテーマをサイトに強制的にインストールさせるためにも利用できる。
必要な権限を持つのは誰か?
攻撃者には、WordPressアカウント、インストール用のnonce、または自身の特別な管理権限は必要ない。ただし、Click2Shellの攻撃チェーンはリクエストを送信するだけでは機能せず、ログイン済みの管理者がリンクを操作する必要がある。WordPressセキュリティ企業Patchstackは、AuthorアカウントとEditorアカウントにはテーマのインストールに必要な権限がないと述べた。
リンクは、標的型フィッシングによって管理者に届く可能性があるほか、既存のXSS脆弱性を介して管理者のブラウザーにリクエストを送信させることもできる。そのため、管理者の操作が必要という条件は欠陥の深刻さを打ち消すものではないが、攻撃シナリオを限定し、完全に自動化されたリモート悪用にはしていない。
実際には何が変わるのか?
WordPressは、jQueryセレクターで使用する前にテーマ名をエスケープし、セレクターの対象を実際のテーマカードに限定することで問題を修正した。Patchstackは、完全な詳細と概念実証コードが公開されたことを受け、バージョン7.1.1以降へ更新するよう推奨している。
すぐに更新できないサイトについて、PatchstackはDISALLOW_FILE_MODS設定を有効にすることで、サイトにテーマや悪意のあるプラグインを強制的にインストールされるのを防げると指摘している。これは一時的な緩和策にとどまり、WordPressコアの更新や、予期しない変更または管理者アカウントの有無を確認する代替策ではない。