Elementor Pro 4.2.1以前のバージョンでは、Formsウィジェットのファイルアップロードフィールドにおける認証なしのリモートコード実行(RCE)の脆弱性により、サイトが侵害される可能性があります。この問題はバージョン4.2.2で修正されているため、古いコードを実行しているサイトは直ちにアップグレードする必要があります。

バグの仕組み

この脆弱性はCVSS 9.0の評価を受けており、攻撃者が脆弱なサイトにアクセスできる場合、ログインや認証情報の提供なしに、サーバー上で任意のPHPコードを実行できることを意味します。問題は、Elementor ProがFormsウィジェットでファイルアップロードを処理する方法にあります。このプラグインは2つの独立したループを実行します。1つはアップロードされた各ファイルを検証するループ、もう1つはファイルをウェブからアクセス可能なアップロードディレクトリに保存するループです。

攻撃者は、2つのファイルを含む単一のリクエストを作成できます。1つ目のファイルには空の名前が付けられており、これにより検証ループでのチェックがスキップされます。2つ目のファイル(悪意のあるPHPスクリプト)は、2番目のループを通過して公開フォルダに書き込まれます。Elementor Proはタイムスタンプを使用してアップロードされたファイル名を命名するため、攻撃者はファイル名を予測し、後でそのファイルを直接リクエストしてコードを実行することが可能です。

脆弱性の発生原因

この二重ループの設計は、検証と保存を独立させることを目的としていましたが、共通の整合性チェックが欠如していたため、空の名前を利用したトリックを許してしまいました。このバグは、サイト所有者が訪問者向けにその機能を有効にしているかどうかにかかわらず、Formsウィジェットのファイルアップロードフィールドを使用しているすべてのインストール環境に影響します。

リスクのある対象

Elementor Pro 4.2.1以前のリリースがインストールされているすべてのWordPressサイトが危険にさらされています。このエクスプロイトは認証を必要としないため、管理者アクセスを制限しているサイトであっても脆弱です。攻撃に成功すると、攻撃者はホスティング環境を完全に制御できるようになり、データの窃取、サイトの改ざん、あるいはランサムウェアの展開を招く恐れがあります。

今すぐすべきこと

  • WordPress CLIコマンドを使用して、インストールされているバージョンを確認してください:

    wp plugin list --name=elementor-pro --field=version
    
  • 出力が4.2.1以下である場合は、直ちに4.2.2以降にアップデートしてください。このアップデートでは、欠陥のあるアップロードロジックが、空の名前によるバイパスを阻止する、単一のアトミックな「検証および保存」ルーチンに置き換えられます。

  • アップグレード後、アップロードディレクトリを監査し、プラグインが使用しているタイムスタンプのパターンに一致するPHPファイルがないか確認し、それらを削除してください。

  • パッチが適用されるまで、特にトラフィックの多いサイトでは、公開フォームのファイルアップロードフィールドを無効にすることを検討してください。

反論・補足

一部の開発者は、このエクスプロイトにはFormsウィジェットに公開アクセス可能なファイルアップロードフィールドが設定されている必要があるため、リスクは限定的であると主張しています。しかし、Elementorベースのサイトの多くは、問い合わせ、求人応募、またはユーザー生成コンテンツのためにそのようなフォームを公開しており、その条件は脆弱性が「致命的」と見なされるほど一般的です。

今後の注意点

セキュリティ研究者は、より多くのサイトから攻撃の試みが報告されるにつれて、追加のアドバイザリ(勧告)が発表されると予想しています。追加のパッチや緩和策について、Elementorの公式通知や信頼できる脆弱性データベースを注視してください。

結論: Elementor Pro 4.2.1以前におけるRCEの脆弱性は、深刻度が高く、ログイン不要で攻撃可能なベクトルです。4.2.2へのアップデートが唯一の確実な防御策であり、対応を遅らせることはサーバーとデータを深刻なリスクにさらすことになります。