PR

W3 Total Cacheに未認証PHPコマンド注入(CVE-2025-9501)

Security

Source:https://www.bleepingcomputer.com/news/security/w3-total-cache-wordpress-plugin-vulnerable-to-php-command-injection/

スポンサーリンク

🛡 概要

WordPress向けキャッシュ最適化プラグイン「W3 Total Cache(W3TC)」に、未認証でPHPコマンドを実行できる重大な脆弱性(CVE-2025-9501)が確認されています。影響範囲は2.8.13未満の全バージョンで、投稿へのコメントに細工したペイロードを含めるだけで攻撃が成立します。導入実績は100万サイト超とされ、開発元は10月20日に修正版2.8.13を公開済みです。WPScanはPoCを11月24日に公開予定と述べており、公開直後から実害が拡大する可能性が高いため、即時アップデートまたは一時的な無効化・コメント機能の停止を推奨します。CVSSは現時点で公表を確認できていません。

🔍 技術詳細

本脆弱性は、W3TCが提供する動的フラグメントの処理機能に起因します。W3TCには、キャッシュ化したコンテンツ中の特定マーカーを解析し、ページ生成時にPHP関数を実行して動的部分を差し替える仕組みがあります。WPScanの説明によれば、_parse_dynamic_mfunc()関数が、そのマーカー(例:HTMLコメント形式の動的呼び出し)を処理する過程で入力検証が不十分であり、未認証ユーザーが投稿コメントに細工を施すだけで任意のPHPコマンドを実行できるとのことです。攻撃者は/wp-comments-post.phpへのPOSTでマーカーを含むペイロードを送信し、それがキャッシュ経由でサーバ側の_parse_dynamic_mfunc()に取り込まれるとPHPコード実行が発生します。これにより、system()exec()などの関数を呼び出し、OSコマンド実行、外部からのペイロード取得、バックドア設置、設定ファイル(wp-config.php等)の窃取が可能になります。キャッシュ格納先(例:wp-content/cache/配下)やW3TCのフラグメントキャッシュ機能が有効な環境では影響が顕在化しやすく、コメントが表示・キャッシュ化されるフローがある場合に特にリスクが高まります。修正版2.8.13では、当該処理の安全化(入力の扱い・コンテキスト分離・実行の抑制等)が行われています。

⚠ 影響

未認証でPHPコード実行を許すため、サイト乗っ取り、管理者アカウントの奪取、ウェブシェル設置、SEOスパムやリダイレクト挿入、データ窃取、暗号化マルウェアの展開など、サーバ上での任意操作につながります。WordPress.orgのダウンロード統計から、修正公開後も相当数のサイトが未更新の可能性があり、PoC公開後のスキャン・自動化攻撃が急増する典型的パターンが想定されます。

🛠 対策

  • 直ちにW3TCを2.8.13へ更新。更新できない場合は当面プラグインを無効化。
  • 一時的措置:コメント機能の停止または厳格なモデレーション。WAFで「mfunc」「mclude」等の動的フラグメント用トークンを含むコメントPOSTを遮断。
  • キャッシュの完全クリア:W3TCの全キャッシュをパージして悪性ペイロードの残存を排除。
  • 侵害調査:wp-content/uploads/やテーマ・プラグイン配下に不審PHPの新規作成・改変がないか確認。管理者パスワードとAPIキー、データベース資格情報のローテーション。
  • ハードニング:不要ならフラグメント/動的実行機能を無効化、ファイル書込権限の最小化、ディレクトリインデックス無効化。

推奨アクションは2.8.13へのアップグレードです(10月20日公開)。

📌 SOC視点

  • Web/アプリログ:/wp-comments-post.phpへの大量POST、コメント本文に「mfunc」「mclude」「
  • ファイル監視:wp-content/cache/直下やwp-content/w3tc/、テーマ・プラグイン・アップロード配下に新規PHP。キャッシュ内HTMLに