Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2023-1430 — WPManageNinja製FluentCRMにおける未修正の脆弱性の責任ある開示 | Kitploit
ツール/GitHubGitHub/karlemilnikka/cve-2023-1430
認証と認可脆弱性分析ウェブセキュリティ論文と研究設定ミス学習と教育
GitHubkarlemilnikka/cve-2023-1430

CVE-2023-1430

WPManageNinja製FluentCRMにおける未修正の脆弱性の責任ある開示

リポジトリを見る
12年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

更新 2023-06-12: スニペットはもう必要ありません。WPManageNinja は公開開示から2時間後(報告から93日後)に脆弱性を修正しました。

更新 2024-01-27: 永続的なハッシュ値に関する関連問題は現在完全に解決されました。

WPManageNinja の FluentCRM における未修正脆弱性 CVE-2023-1430 の責任ある開示

tl;dr 攻撃者は FluentCRM 内の連絡先詳細を表示および編集できます。WPManageNinja は90日間の責任ある開示期間内に脆弱性を修正していません。公式パッチを待つ間、脆弱性の悪用を防ぐための緩和スニペットを提供します。

  • 脆弱性: CVE-2023-1430 認証制御としてのハッシュの不十分な使用
  • CVSS: 6.5 (Medium)
  • ソフトウェア: FluentCRM
  • 影響を受けるバージョン: バージョン2.7.40で脆弱性を確認
  • 修正バージョン: 2.8.02
  • 開発者: WPManageNinja
  • 研究者: Karl Emil Nikka, Nikka Systems (Wordfence 経由で報告)
  • 公開日: 2023-06-12
  • 最終更新日: 2023-06-12

概要

本日、WPManageNinja による人気の WordPress プラグイン FluentCRM で発見した脆弱性に関する情報を公開します。この脆弱性 CVE-2023-1430 は、FluentCRM が認証制御としてメールアドレスのハッシュを不十分に使用していることに起因します。私は Google Zero の脆弱性開示ポリシーに従い、責任を持って開示しました。WPManageNinja は90日間の期間内にパッチを提供せず、期間延長の要請も行いませんでした。

本レポートにおいて、contact は FluentCRM の連絡先オブジェクトを指し、user は WordPress のユーザーオブジェクトを指します。連絡先はユーザーにリンクされる場合もありますが、必須ではありません。脆弱性の悪用に関する詳細は、公式パッチが利用可能になるまで開示しません。セキュリティ専門家は完全なレポートについて私に連絡できます ([email protected])。

全体的な影響と必要な措置

FluentCRM が実行されているサイトでは、攻撃者は連絡先のメールアドレスを知ることで、その連絡先の名前、メールアドレス、リスト設定を表示および編集できます。連絡先の名前は多くの場合、マージタグを通じてニュースレターに含まれるため、攻撃者は連絡先の名前を不適切な言葉に置き換え、ウェブサイト所有者に下品なニュースレターを送信させることができます。ウェブサイト管理者が FluentCRM のショートコード (設定管理用) を有効にし、公開ウェブページに追加した場合、攻撃者は公開されたすべての個人情報 (敬称、電話番号、生年月日、住所など。FluentCRM の設定に依存) を表示および編集できます。

FluentCRM は 30,000 以上のサイトにインストールされています。FluentCRM サイトの管理者は、私の緩和スニペットを子テーマの functions.php ファイルに追加することで、脆弱性の悪用を防ぐことができます。

このスニペットは脆弱性を修正するものではありません。FluentCRM の購読解除ページ (unsubscribe.php) と設定管理ページ (manage_subscription.php) 上の脆弱なコンテンツを、連絡先にメールで連絡するよう促すエラーメッセージに置き換えます。エラーメッセージ内のメールアドレスはサイトの管理者メールアドレスです (スニペットから変更可能)。この緩和スニペットは、ログインしていない訪問者が FluentCRM の脆弱なショートコード (fluentcrm_pref) をレンダリングできないようにもします。ログインしていない訪問者には、ログインを促すエラーメッセージが表示されます。すべての文字列は、付属の POT ファイルを使用して翻訳可能です。

必要な措置

ウェブサイト所有者には、私が提供する緩和措置、または独自の同等の緩和措置を実装することを推奨します。また、ウェブサイト所有者は FluentCRM の連絡先データの整合性を確認し、可能であればログをチェックして潜在的なデータ漏洩がないか確認する必要があります。ログのチェックは、以下のサイトで特に重要です。

  • 連絡先の登録名が機密情報であるサイト
  • FluentCRM の設定管理用ショートコードが、ログインしていない訪問者向けの公開ページに現在または過去に存在するサイト
  • リスト管理が有効で、連絡先が購読しているリストの名前が機密情報であるサイト

ウェブサイトのデータ管理者は、該当する法域の法律および規制に従って、個人情報の潜在的なデータ漏洩を処理する責任を負います。

追加の潜在的な影響

FluentCRM が連絡先の設定を対応するユーザーと同期するように設定されている場合、攻撃者はユーザーの名前を変更できます。幸い、FluentCRM は連絡先からユーザーへのメールアドレスの同期は行いません。もし同期していた場合、この脆弱性によりサイトの完全な乗っ取りが可能になっていたでしょう。攻撃者はサイト管理者のメールアドレスを変更し、その後管理者のパスワードをリセットすることで権限を取得できたはずです。

ただし、他のソリューション (例: WP Fusion や FluentCRM の API) は、連絡先からユーザーへすべてのメタデータを同期できます。WP Fusion は、CRM (例: FluentCRM) と WordPress 間で連絡先のメタデータを同期するための最も一般的なサードパーティプラグインです。幸い、現バージョンの WP Fusion は、脆弱なフォームから開始されたメタデータ変更にはフックしていません。私は WP Fusion の開発者に通知しましたが、彼らは WPManageNinja が脆弱性を修正するまでこの制限に対処しないと述べています。

FluentCRM の API を使用して連絡先およびユーザーデータを更新することもできます。FluentCRM の API を使用してユーザーのメールアドレスを更新しているサイト所有者は、FluentCRM のページまたは設定管理用ショートコードから開始された場合、この更新を無効にする必要があります (または、脆弱なフォームから設定が更新されないように、私の緩和スニペットを追加してください)。

脆弱性の悪用

FluentCRM では、連絡先が公開ウェブページから購読解除や設定管理を行うことができます。これらのページへのリンクはすべてのニュースレターに含まれています。これらのページで行われた変更は、URL パラメータとして渡される連絡先のメールアドレスの MD5 ハッシュによって認証されます。メールアドレスの MD5 ハッシュは秘密ではなく、誰でも計算できます。攻撃者はハッシュの不適切な使用を悪用して、特定の連絡先を購読解除したり、既知のメールアドレスを持つ連絡先を大量に購読解除したりできます。

購読解除ページは認証に MD5 ハッシュのみに依存しているのに対し、設定管理ページには ce_id と呼ばれる追加の URL パラメータが必要です。この場合、ce_id は fc_subscribers テーブル内の連絡先の ID を指します。この ID は増分整数です。したがって、ce_id の値は、可能なすべての値をテストすることで簡単に見つけられます (探索空間はサイトにこれまで登録された連絡先の数です)。管理者ユーザーはおそらく低い値を持っています。

設定管理ページから、攻撃者は連絡先の secure_hash 値も抜き出すことができます。連絡先のメールアドレスを更新すると、その連絡先の "secure_hash" 値が fc_hash_secure という Cookie に保存されます。この Cookie があれば、攻撃者は FluentCRM の設定フォームショートコードによって利用可能にされたすべての連絡先情報を表示できます。

関連する軽微な問題: 永続的なハッシュ値

前述の "secure_hash" は、FluentCRM が(状況によって)MD5 メールアドレスハッシュの代わりに、または代替として依存する値です。FluentCRM 2.8.0 のリリース以降、購読解除ページは認証に secure_hash 値のみに依存するようになりました。設定管理ページは、新しい secure_hash 値と古い MD5 メールアドレスハッシュの両方を認証に受け入れます。

secure_hash 値はメールアドレスから導出できませんが、FluentCRM の使用法は適切なセキュリティ慣行に従っていません。secure_hash 値は連絡先ごとに一度生成されます。決して更新されることはなく、期限が切れることもありません。secure_hash 値はすべてのニュースレターに含まれているため、これは問題です。攻撃者が連絡先の受信箱にアクセスした場合、その連絡先の設定を無期限に変更できます。影響を受ける連絡先が管理者権限を持つユーザーにリンクされており、FluentCRM から WordPress へのメールアドレス変更が同期されている場合、この連絡先に送信されるすべてのニュースレターには、サイトを乗っ取るための期限切れにならないトークンが含まれることになります。

私はこの関連問題を2023年3月15日に WPManageNinja に報告しました。2ヶ月後(2023年5月15日)、WPManageNinja は、セキュリティアドバイザーが静的な secure_hash 値を問題と見なしていないと返答しました。WPManageNinja のセキュリティアドバイザーは、「連絡先を識別するために、この種の一度生成されたトークンを使用しても問題ない」と述べ、「これは SaaS サービスの API トークンに似ており、他の連絡先には配信されず、メールアドレスを所有する実際の連絡先にのみ送信される」と説明しました。

WPManageNinja は柔軟な姿勢を示し、それでもセキュリティ上の懸念があると思われる場合は知らせてほしいと述べたため、私はそのようにしました。secure_hash 値を API トークンと比較できない理由を説明しました。(API トークンは TLS 接続でのみ送信されるようにでき、アクセスを制限できます。メール内の平文値ではそうはいきません。最も重要なのは、API トークンは無効化できるのに対し、連絡先が secure_hash 値を無効化する方法がないことです。)

同日遅く、WPManageNinja は感謝を述べ、メールレコード ID とハッシュを組み合わせることを検討していると述べました。これにより、古い(時間ベースの有効期限)または以前の(カウンターベースの有効期限)secure_hash 値の自動無効化と併せて実装されれば問題は解決します。この機能はまだ実装されていませんが、この CVE の一部として静的なハッシュ値の使用を問題とは見なしていません。

タイムライン

  • 2023-03-11 脆弱性を WPManageNinja に報告しました。この時点では、購読解除ページでのみ脆弱性を発見していました。
  • 2023-03-13 WPManageNinja が報告の受領を確認しました。
  • 2023-03-14 WPManageNinja の開発者は、認証にメールアドレスの MD5 ハッシュを使用していることを否定し、wp_generate_uuid4 トークンを使用していると述べました。
  • 2023-03-14 彼らがメールアドレスの MD5 ハッシュに依存していることを説明し、証明しました。
  • 2023-03-15 WPManageNinja の最初の対応を受けて、さらに調査し、設定管理ページでも同じ脆弱性を発見しました。調査結果を WPManageNinja に報告し、脆弱性の深刻度が増す理由を説明しました。また、Wordfence に報告書を提出し、CVE を申請しました。
  • 2023-03-16 WPManageNinja が更新された報告の受領を確認しました。
  • 2023-03-16 Wordfence が脆弱性を確認し、CVE-2023-1430 を割り当てました。
  • 2023-04-10 WPManageNinja に30日間のリマインダーを送信しました。
  • 2023-04-14 WPManageNinja が FluentCRM 2.8.0 をリリースしましたが、セキュリティパッチについては言及されていませんでした(単に「改善とバグ修正」と記載)。
  • 2023-04-22 WPManageNinja に、2.8.0 アップデートは購読解除ページの脆弱性のみを修正し、設定管理ページでは脆弱性が存続することを伝えました。
  • 2023-04-24 WPManageNinja が更新された報告の受領を確認しました。
  • 2023-05-14 WPManageNinja に60日間のリマインダーを送信しました。
  • 2023-05-15 WPManageNinja は翌週に修正済みベータ版を送付すると述べました(実際には送付されませんでした)。
  • 2023-06-01 WPManageNinja に、公開開示前に WP Fusion の開発者に事前通知すべきか尋ねました。WPManageNinja は、翌週にアップデートをリリースするため必要ないと答えました(リリースされませんでした)。
  • 2023-06-08 WPManageNinja に、当初の公開開示日が週末に近いため、2023年6月12日まで公開を延期すると伝えました。
  • 2023-06-09 WPManageNinja に、90日間に達したこと、次の責任あるステップとして脆弱性に関する情報を公開し、全員が待機中に緩和策を実装できるようにすることであると伝えました。また、WP Fusion の開発者には、WPManageNinja が脆弱性を修正するまで同期制限に対処しないよう依頼しました。
  • 2023-06-09 Wordfence が脆弱性に関する初期詳細を公開し、脆弱性が修正されたと誤って記載しました。これは私と Wordfence の間の連絡ミスによるものです。
  • 2023-06-12 悪用詳細を伏せた本レポートを公開しました。
  • 2023-06-12 WPManageNinja が公開開示から2時間後(報告から93日後)に脆弱性を修正しましたが、変更ログに脆弱性についての言及はありませんでした(「購読設定ページで MD5 の代わりに Secure Hash を使用」とのみ記載)。
  • 2023-06-12 パッチおよび以前は伏せていた詳細に関する情報を本レポートに更新しました。
  • 2023-06-12 WPManageNinja がプラグインの変更ログに CVE に関する情報を追加しました。
  • 2024-01-17 WPManageNinja が私に連絡し、永続的なハッシュ値の問題に対する解決策について意見を求めました。
  • 2024-01-27 WPManageNinja が FluentCRM 2.8.40 をリリースし、永続的なハッシュ値の問題に対処し、私の提案した改善が実装されました。
  • 2024-01-27 WPManageNinja が FluentCRM 2.8.41 をリリースし、接続された WordPress ユーザーがパスワードを変更した際に、連絡先の古い認証ハッシュが無効化されるようにしました。
  • 2024-01-27 私は、永続的なハッシュ値に関する関連する軽微な問題は対処されたと判断しました。

Nikka Systems Academy (Project Opal) は影響を受けません

2023年第1四半期、私たちは以前のニュースレターツール (Sendy) から FluentCRM への移行を開始しました。FluentCRM を Nikka Systems Academy (Project Opal) と統合する際に脆弱性を発見しました。FluentCRM の購読管理システムをカスタムプラグインに置き換えたため、FluentCRM の脆弱なフォームが私たちのサイトや顧客のデータに影響を与えることは一度もありません。

WPManageNinja への推奨事項

FluentCRM は優れたプラグインですが、WPManageNinja の脆弱性開示への対応には改善の余地が多くあります。以下のリストは、WPManageNinja が状況を改善するための私の提案です。

  • サードパーティの監査人を依頼して、現在のコードベースを監査することを推奨します。CVE-2023-1430 脆弱性は、ハッシュを使用すべきでない方法の典型的な例です。WPManageNinja が認証に MD5 メールアドレスハッシュを使用していることを最初に否定したことと合わせて、コードベースのサードパーティ監査の時期が来ていると考えます。
  • security.txt ファイル (RFC 9116) を公開し、セキュリティ研究者が開発者に直接連絡できるようにすることを推奨します。カスタマーサポート部門を通じて脆弱性を報告せざるを得ず、最初に脆弱性報告が誤って却下されたため、重要な緩和日数を逃しました。
  • 脆弱性をタイムリーに修正するためのより良い手順を確立することを推奨します。このような簡単に修正できる脆弱性は、30日以内に対処されるべきです。90日間の責任ある開示期間内にパッチが準備できていないことは受け入れられません。
  • 対処した脆弱性や実装したセキュリティ改善は常に変更ログに開示し、顧客がアップデートの重要性を理解できるようにすることを推奨します。

とはいえ、私は依然として WPManageNinja を信頼しています。すべてのソフトウェアにはバグがあり、単一の不適切に管理された脆弱性報告がプラグインの使用をやめる理由にはなりません。

更新 2023-06-12: 彼らが依然として変更ログで脆弱性を隠そうとしているという事実は、私に真の懸念を抱かせます。 (現在は CVE を追加しています。)

変更ログ

  • 2023-06-12 初版公開。
  • 2023-06-12 パッチの可用性および以前は伏せていた悪用詳細に関する情報を更新。
  • 2023-06-12 タイムラインに追加: WPManageNinja がプラグインの変更ログに CVE に関する情報を追加。
  • 2023-06-12 スペルミスを修正。CVSS が Wordfence によって 6.5 に引き上げられる。
  • 2024-01-27 FluentCRM 2.8.40 および 2.8.41 が永続的なハッシュ値に関する関連する軽微な問題に対処した情報を追加。
ツールをダウンロード