研究者が解明、悪意あるプラグインのアップロードでWordPressサイトを乗っ取る手口

2026年7月に公開されたWordPress Coreの重大なエクスプロイトチェーン「WP2Shell」により、認証されていない攻撃者が脆弱なサイト上でコードを実行できる状態になっています。

このチェーンはCVE-2026-63030とCVE-2026-60137という2つの脆弱性を連鎖させ、最終的にウェブシェルとして機能する悪意あるプラグインを設置します。攻撃に盗まれた認証情報は必要ありません。Seqriteの研究者が、この攻撃チェーンとホスト上に残る痕跡を詳細にまとめました。

Seqriteが公開した技術分析によると、1つ目の脆弱性CVE-2026-63030は、/wp-json/batch/v1で公開されているバッチコントローラーに存在するREST APIのルート混同のバグです。このコントローラーは、複数のREST APIリクエストを1つのJSONペイロードにまとめて受け付けます。

認証されていない攻撃者は、外側のバッチの中にさらにバッチを入れ子にしてルートの解決を操作します。これにより、本来は認証が必要なハンドラーに到達できてしまいます。

2つ目の脆弱性CVE-2026-60137は、投稿エンドポイントに存在するSQLインジェクションです。公開パラメーターのauthor_excludeは、内部でWP_Queryのauthor__not_in引数に対応付けられています。入力の処理が不十分なため、細工した値によってデータベースクエリを改変できます。

どちらのバグも、単独ではコード実行には至りません。2つを組み合わせると、ルート混同が認証なしの経路を提供し、SQLインジェクションが攻撃の足がかりを提供します。

概念実証(PoC)コードはこれを利用して管理者アカウントを作成し、プラグイン型のウェブシェルを設置して、サーバー上でコマンドを実行します。

従来のWordPress攻撃では、まず管理者アカウントを乗っ取る必要があるケースが多くありました。WP2Shellはこの工程を不要にするため、パッチ未適用で公開されているサイトであれば、どれでも直接攻撃を受ける可能性があります。攻撃対象が広がり、パッチ適用の緊急性も高まっています。

キャプチャされた通信には、入れ子のAPIリクエストを含むPOSTリクエストが/wp-json/batch/v1に送られている様子が記録されています。侵害後は、ファイルシステム上で明確な一連の動きが見られます。まず、書き込み可否の確認中にwp-content/配下で一時的なtemp-write-test-*ファイルが作成・削除されます。続いてペイロードが配置され、wp2shell_4e9b3641.zipのようなZIPファイルがwp-content/uploads/2026/10/に置かれます。

その後、展開によってwp2shell_<hex>.phpなどのPHPファイルがwp-content/upgrade/wp2shell_<hex>/配下に出現し、このディレクトリがwp-content/plugins/wp2shell_<hex>/にリネームされます。

これらの書き込みはすべてウェブサーバーのプロセス(httpd.exe)が実行しており、プラグインのアップロードとしては通常の動作です。不審なのは、書き込みの異常な量とWP2Shell特有のファイル名です。

防御側は、wp-content/plugins/やwp-content/cache/に新しく作成または変更された.phpファイルがないか確認する必要があります。あわせて、攻撃が行われた期間中に作成された、身に覚えのない管理者アカウントも調べてください。

管理者は、6.8.6、6.9.5、7.0.2以降のバージョンにアップグレードしてください。可能であれば、認証なしのREST APIアクセス、特にバッチコントローラーと投稿に対する投稿者フィルタリングのクエリを制限します。不審なプラグインディレクトリ、想定外のPHPファイル、不正な管理者アカウントの調査(ハンティング)も実施してください。

Quick Healは、「SL_A WP2Shell Suspicious PHP File Modification in WordPress Plugins」という振る舞い検知により、顧客を保護していると説明しています。さらに、ネットワークシグネチャのHTTP/CVE-2026-63030!DP.50405とHTTP/CVE-2026-63030!SP.50370も利用しています。

翻訳元: https://cyberpress.org/wordpress-malicious-plugin-attacks/

本記事は cyberpress.org の記事を翻訳・要約したものです。