タグアーカイブ 支払い

Formidable Formsの支払い検証バイパス脆弱性——30万サイト影響と対策

Formidable Formsの支払い検証バイパス脆弱性——30万サイト影響と対策

WordPressのフォーム作成プラグイン「Formidable Forms」に重大なセキュリティ脆弱性が発見された。この脆弱性を悪用すると、攻撃者は認証なしで支払い検証プロセスをバイパスできる。低額取引の決済情報を流用し、高額商品の購入を完了させることが可能だ。

影響を受けるのはバージョン6.28までの全バージョン。インストールサイト数は30万を超える。脆弱性にはCVE-2026-2890が割り当てられ、CVSS深刻度スコアは7.5(高リスク)と評価されている。プラグイン開発元はバージョン6.29で修正をリリース済みだ。

Formidable Formsプラグインと支払い機能

Formidable Formsプラグインと支払い機能

Formidable Formsはドラッグ&ドロップでフォームを作成できるWordPressプラグインだ。コンタクトフォームやアンケート、イベント登録フォームなど多様な用途に使われる。特に重要なのが、StripeやPayPalといった決済サービスと連携した「支払いフォーム」機能である。

ECサイトでの一般的な利用シーン

このプラグインは、会員制サイトの登録料金徴収やデジタル商品の販売、有料イベントのチケット販売などに利用される。ユーザーがフォームで商品を選択し、決済情報を入力すると、プラグインが決済プロバイダーと通信して取引を処理する流れだ。

正常な支払いフローでは、ユーザーが支払うべき金額と、実際に決済プロバイダーを通じて処理された金額が一致しているか検証される。この検証プロセスが脆弱性によって不完全だったことが問題の核心だ。

Stripe連携における標準的な処理

Formidable FormsがStripeと連携する場合、PaymentIntentというStripeのオブジェクトを利用する。PaymentIntentは特定の取引の支払い意図と状態を管理する。プラグインは、ユーザーが支払いを完了した後、Stripeから返されるPaymentIntentの状態を確認して取引を完了させる。

本来ならば、プラグインは「このPaymentIntentがどのフォーム送信に対応するものか」「請求金額と実際の支払金額が一致しているか」を厳密に検証すべきだ。しかし、影響を受けるバージョンではこの検証が不十分だった。

脆弱性の技術的詳細——CVE-2026-2890

脆弱性の技術的詳細——CVE-2026-2890

この脆弱性は「支払い完全性バイパス」に分類される。システムが意図した通りの支払いが行われたことを保証するメカニズムを攻撃者が回避できる状態を指す。具体的には、`handle_one_time_stripe_link_return_url`関数と`verify_intent()`関数に実装上の問題があった。

検証不足の2つのポイント

第一の問題は、`handle_one_time_stripe_link_return_url`関数が支払い記録を「完了」とマークする判断基準だ。この関数はStripeのPaymentIntentの状態だけを確認し、そのPaymentIntentが請求された金額と、ユーザーが本来支払うべき金額を比較しなかった。

第二の問題は`verify_intent()`関数の検証範囲にある。この関数はクライアントシークレット(支払いセッションを特定する秘密の文字列)が正当なユーザーに属するかだけを確認した。PaymentIntentが特定のフォーム送信やアクションに紐づいているかの検証を行わなかった。

認証不要という重大な要素

この脆弱性が特に危険とされる理由は、攻撃に認証が不要な点だ。WordPressサイトにログインする権限がなくても、一般訪問者として悪用可能である。サブスクライバーレベルの最小権限すら必要としない。

セキュリティ企業Wordfenceの分析によれば、この組み合わせにより、認証されていない攻撃者が完了済みの低額取引のPaymentIntentを流用し、高額取引を完了済みとしてマークできるという。

実際の攻撃シナリオと影響範囲

実際の攻撃シナリオと影響範囲

攻撃は現実的な手順で実行可能だ。まず攻撃者は、標的サイトで低額の商品(例えば100円のデジタルコンテンツ)を通常通り購入する。Stripeを通じた正当な支払いが完了し、PaymentIntentが生成される。

支払い情報の流用プロセス

次に攻撃者は、同じサイトで高額商品(例えば5万円のオンラインコース)を購入しようとする。チェックアウトプロセスで、先ほど生成された低額取引のPaymentIntent情報を挿入する。プラグインはPaymentIntentの状態が「成功」であることだけを確認し、金額の不一致を検知しない。

結果として、攻撃者は100円の支払いで5万円の商品を入手できる。サイト運営者は商品を提供したにもかかわらず、4万9900円の収益を失うことになる。

リモートコード実行との違い

この脆弱性は、サーバー自体を乗っ取ったり、任意のコードを実行したりするものではない。しかしECサイトにとっては直接的な金銭的損害につながる。デジタル商品や即時提供されるサービスの場合、取引の取り消しも困難だ。

影響を受ける30万サイトの中には、オンライン予約システムを持つサービス業者、デジタルダウンロード販売者、オンラインコース提供者などが含まれる可能性が高い。これらの事業モデルでは、本脆弱性によるリスクは無視できない。

対応策と今後の予防策

対応策と今後の予防策

即時実施すべきアップデート

第一の対応はプラグインのバージョンアップだ。Formidable Forms 6.29以降ではこの脆弱性が修正されている。WordPress管理画面の「プラグイン」セクションから更新を実行できる。

更新後は、過去の高額取引について不審な点がないか確認することを推奨する。特に、低額商品の購入記録と高額商品の購入記録が同じユーザーから短時間に行われているケースは要注意だ。

代替手段の検討

Formidable Formsに依存した複雑な支払いフローを運用している場合、一時的に他のフォームプラグインや専用のECプラグインへの移行を検討する価値がある。WooCommerceのような本格的なECソリューションは、支払い検証に関してより堅牢な実装を持つ。

あるいは、フォームの受付だけをFormidable Formsで行い、決済処理は別のシステム(決済プロバイダーの直接埋め込みフォームなど)に委ねる設計も考えられる。これにより、支払い検証ロジックをプラグインの実装に依存しないようにできる。

長期的なセキュリティ対策

この事例は、サードパーティ製プラグインがビジネスの中核プロセス(決済)を担う際のリスクを浮き彫りにした。重要な機能を実装するプラグイン選定時には、開発元のセキュリティ対応実績や、過去の脆弱性開示履歴を確認すべきだ。

また、定期的なセキュリティ監査の実施も有効だ。自社サイトで利用しているプラグインについて、CVE(共通脆弱性識別子)データベースを定期的にチェックする習慣をつける。あるいは、Wordfenceのようなセキュリティプラグインを導入し、脆弱性を自動検知する環境を整える。

この記事のポイント

  • Formidable Formsプラグイン(〜v6.28)に支払い検証バイパス脆弱性(CVE-2026-2890)が存在する。
  • 攻撃者は認証なしで、低額取引の決済情報を流用して高額商品を入手可能だ。
  • 影響を受けるサイトは30万以上。CVSSスコアは7.5(高リスク)と評価されている。
  • 即時対応としてバージョン6.29以降へのアップデートが必須である。
  • EC機能をプラグインに依存する場合、開発元のセキュリティ対応実績を慎重に評価すべきだ。

出典

  • Search Engine Journal “Formidable Forms Flaw Lets Attackers Pay Less For Expensive Purchases” (2026年3月12日)
  • Wordfence Threat Intelligence “Formidable Forms Vulnerability: Unauthenticated Payment Integrity Bypass” (2026年3月)