概要
セキュリティ研究者らは、WordPressで最も人気のあるキャッシュプラグインの一つである「W3 Total Cache」における重大なリモートコード実行(RCE)脆弱性に対する概念実証(PoC)エクスプロイトを公開しました。この脆弱性は、CVE-2025-9501として追跡されており、100万以上のアクティブインストールを持つサイトに影響を与え、特定の条件下で攻撃者が任意のコードを実行することを可能にします。
脆弱性の詳細
この脆弱性は、W3 Total Cacheのページキャッシングメカニズムにおける認証されていないコマンドインジェクションの欠陥に起因します。RCE Securityのセキュリティ研究者Julien Ahrens氏がWPScanの簡潔なアドバイザリを分析し、動作するエクスプロイトを開発しました。
コード実行は、プラグインのPgCache_ContentGrabberクラス内の_parse_dynamic_mfunc関数で発生します。この関数は、PHPのeval()関数を使用して、キャッシュされたページ内の特殊な形式のコメントに含まれるコードを実行します。エクスプロイトは、mfuncタグ形式を含むWordPressコメントを通じて悪意のあるコードを注入することで機能します。一度ページがキャッシュされると、プラグインはこれらのコメントを処理し、キャッシュされたページが訪問者に提供されるたびにコードを実行します。
- CVE ID: CVE-2025-9501
- 対象製品: WordPress用W3 Total Cacheプラグイン
- 影響を受けるバージョン: パッチ適用前のバージョン(100万以上のインストール)
- 脆弱性の種類: 認証されていないコマンドインジェクション / リモートコード実行
悪用条件
この脆弱性は技術的に単純ですが、悪用を成功させるにはいくつかの条件を満たす必要があります。
- 攻撃者は、WordPress設定ファイルで定義されている
W3TC_DYNAMIC_SECURITY定数の値を把握している必要があります。この秘密の値がなければ、攻撃は続行できません。 - WordPressのコメント機能が、認証されていないユーザーに対して有効になっている必要があります。コメントが無効になっているか、認証を必要とする場合、脆弱性はコメント権限を持つ認証済みユーザーによってのみ悪用されます。
- W3 Total Cacheでページキャッシュ機能が有効になっている必要があります。これはプラグインの核となる機能ですが、新規インストールではデフォルトでオフになっています。
これらの前提条件は攻撃対象領域を大幅に減少させますが、これらの条件を満たすサイトは完全なシステム侵害に対して脆弱なままです。
影響と対策
悪用が成功すると、攻撃者は影響を受けるWordPressインストールを完全に制御できるようになり、機密データの盗難、バックドアのインストール、またはさらなる攻撃の開始が可能になります。
W3 Total Cacheを使用しているウェブサイト管理者は、直ちにプラグインの最新のパッチ適用済みバージョンに更新する必要があります。すぐにアップデートが利用できない場合の一時的な緩和策としては、ページキャッシュ機能をオフにするか、コメント機能を認証済みユーザーのみに制限することが挙げられます。また、組織はW3TC_DYNAMIC_SECURITY定数の設定を見直し、デフォルトや既知の例ではない、強力で予測不能な値が使用されていることを確認する必要があります。
元記事: https://gbhackers.com/poc-published-for-w3-total-cache-flaw/
