本文へ移動
English version →
重大 9.1 急ぎ度: 至急

ELEX HelpDeskの任意ファイル削除脆弱性、修正版未確認

WordPressのELEX HelpDeskプラグイン3.3.8以前に、ログインなしでサーバー上のファイルを削除できる脆弱性があり、問い合わせ窓口を公開しているサイトが対象です。修正版の有無を開発元の告知で確かめ、確認できるまでは無効化を検討してください。

CVE-2026-114630 公開 更新 執筆・監修: 佐々木 航 人が監修しながらAIを活用して執筆
画像は生成 AI で作成したイメージです

急ぎ度: 至急

CVSS v3は9.1で、認証なしにネットワークから攻撃でき、wp-config.phpが消されるとコード実行にもつながるうえ、修正版の公開を確認できていないためです。

関係があるか

WordPressにELEX WordPress HelpDesk & Customer Ticketing Systemを入れているサイトが対象です。顧客向けの問い合わせフォームを公開して使っている組織は、とくに注意が必要です。

製品影響を受ける版修正版
ELEX WordPress HelpDesk & Customer Ticketing System(プラグイン) 3.3.8以前のすべての版 修正版の版番号は確認できていません。開発元の告知とWordPress.orgのプラグインページで確かめてください

確かめ方

  1. 1WordPressの管理画面でプラグイン一覧を開き、ELEX WordPress HelpDesk & Customer Ticketing Systemの有無と版を確認します。無効化されていても入っていれば一覧に出ます。
  2. 2WP-CLIが使える環境では、次のコマンドで版を確認できます。3.3.8以前なら該当します。
  3. 3複数のサイトを預かっている場合は、サイトごとにプラグイン一覧を洗い出します。ホスティング事業者や制作会社が管理しているサイトも、見落としやすいので確認しておくと安心です。

何が起きたか

ELEX WordPress HelpDesk & Customer Ticketing Systemに、ログインしていない第三者がサーバー上の任意のファイルを削除できる脆弱性があります。

原因は、プラグインの初期化(ファクトリーリセット)機能が、実行してよい利用者かどうかを確認しないまま、保存済みのファイルパスを使って削除を行うことです。削除するパスの検証も不十分で、問い合わせチケットの添付先として保存された値が、そのまま削除対象になります。CWEはCWE-22(パストラバーサル)です。

配布元の説明によると、wp-config.phpのような重要なファイルが削除されると、リモートコード実行に発展しやすいとされています。CVSS v3のベクターではC:N/I:H/A:Hで、情報の読み取りより、改ざんと停止の影響が大きい脆弱性です。

攻撃の流れ

  1. 1

    公開フォームに接続

    ログインしていない攻撃者が、サイトの問い合わせ窓口を通じてチケットを送信します。

  2. 2

    削除先を保存

    送信時に、プラグインが保存する添付ファイルのパスへ、任意の値を紛れ込ませます。

  3. 3

    リセット機能を起動

    管理者かどうかを確認しないリセット機能を、外部から呼び出します。

  4. 4

    ファイルが削除される

    保存された値のとおりにファイルが消され、wp-config.phpなどが対象ならサイトの停止や乗っ取りにつながります。

公開されている情報をもとにした流れの例です。

どう悪用されるか

攻撃にアカウントは要りません。インターネットからサイトに到達できれば足り、利用者の操作も必要ありません。

配布元の説明では、チケット送信に使う確認トークン(nonce)が[wsdesk_support]ショートコードを通じて公開ページに出てしまうため、攻撃者が自力で入手できるとされています。管理画面側のリセット機能は、リクエストが管理画面向けかどうかを見るだけで、利用者の権限を確認していません。

成功すると、Webサーバーの権限で削除できるファイルが消されます。wp-config.phpを失えばサイトが動かなくなり、再構成の状況によってはコード実行に至るおそれがあると説明されています。

今すぐやること

  1. 1

    導入の有無と版を確認する

    管理画面のプラグイン一覧か、WP-CLIで版を調べます。3.3.8以前が入っていれば、以降の手順に進みます。

    wp plugin get elex-helpdesk-customer-support-ticket-system --field=version
  2. 2

    修正版を探し、あれば更新する

    開発元のELEXtensionsの告知と、WordPress.orgのプラグインページで、3.3.8より新しい版が出ているか確認します。出ていれば、テスト環境で動作を見たうえで、早めに本番へ適用します。

  3. 3

    修正版を確認できなければ無効化する

    更新できる版が見つからない間は、プラグインを無効化します。使っていない場合は削除します。問い合わせ受付が止まるため、代わりの連絡先をサイトに出しておきます。

  4. 4

    削除の跡がないか調べる

    wp-config.phpなど主要ファイルが残っているか、サイトが急に表示されなくなっていないかを確認します。アクセスログでは、wsdesk_factory_resetを含む管理画面側へのリクエストが、ログインしていない相手から来ていないかを調べます。

  5. 5

    バックアップを確かめる

    wp-config.phpを含むサイト一式のバックアップが、直近のものとして取れているか確認します。ファイルが消されていた場合は、バックアップから戻し、データベースのパスワードや認証用の鍵も見直します。

修正版がないあいだのつなぎ

修正版を当てられない間は、プラグインを無効化するのがもっとも確実です。どうしても使い続ける場合は、WAFやアクセス制限で、ログインしていない相手による管理画面側へのリクエストを遮断する案がありますが、このプラグインの攻撃に効くかどうかは確認できていません。単独の対策とは考えないでください。あわせて、wp-config.phpを含む全体のバックアップを取り、復旧手順を決めておきます。

背景

ELEX WordPress HelpDesk & Customer Ticketing Systemは、WordPressのサイト上に問い合わせチケットの受付と管理の仕組みを加えるプラグインです。顧客が公開ページのフォームから問い合わせを送り、担当者が管理画面で返信する、という使い方を想定しています。そのため、外部の誰でも触れる入口を、必ず公開することになります。

今回の脆弱性は、WordPressの開発で知られた落とし穴と重なります。is_admin()は、リクエストが管理画面向けかどうかを返すだけで、操作している人が管理者かどうかは示しません。権限の確認には、capabilityを調べる別の処理が必要です。ファクトリーリセットは本来、管理者が自分のプラグインのデータを初期化するための機能です。それが外部から呼べたうえ、削除先のパスも検証されなかったことで、データの初期化がサーバー上の任意ファイルの削除に変わりました。

よくある質問

Q.プラグインを無効化したまま残しているだけなら、影響を受けませんか。
A.無効化中でも安全かどうかは、確認できていません。使っていないプラグインは、更新の対象から漏れやすいこともあり、削除するのが無難です。
Q.wp-config.phpが消えていた場合は、何から手を付けますか。
A.まずサイトを止めて、アクセスを遮断できる状態にします。バックアップから元に戻し、データベースの接続情報と認証用の鍵を変更してください。そのうえで、不審なファイルや管理者アカウントが増えていないかを調べます。

この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。

影響パッケージ

種類パッケージ影響を受ける版修正版
elextensions ELEX WordPress HelpDesk & Customer Ticketing System
3.3.8 以前
—
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

The ELEX WordPress HelpDesk & Customer Ticketing System plugin for WordPress is vulnerable to arbitrary file deletion due to insufficient file path validation in the factory_reset function in all versions up to, and including, 3.3.8 This makes it possible for unauthenticated attackers to delete arbitrary files on the server, which can easily lead to remote code execution when the right file is deleted (such as wp-config.php). This vulnerability is exploitable via a two-step chain: an unauthenticated attacker first stores an arbitrary ticket_attachment_path value by submitting a ticket through the nopriv eh_crm_new_ticket_post AJAX endpoint (whose nonce is publicly exposed via the [wsdesk_support] shortcode), then triggers the factory_reset routine via a GET request to wp-admin/admin.php?page=wsdesk_factory_reset, which is guarded only by is_admin() — a request-type check — rather than a capability check, causing unlink() to be called on the attacker-supplied path.

出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory

参照URL

当サイトでは、アクセス解析と広告の効果測定のために Cookie を使います。株式会社Game のサイト共通の設定です。 詳しく