ホームページ >バックエンド開発 >PHPチュートリアル >なぜこの脆弱性が存在するのでしょうか? CVE-WPフォーム)

なぜこの脆弱性が存在するのでしょうか? CVE-WPフォーム)

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-24 22:24:19532ブラウズ

ここ数日、Wordpress WPForms プラグインの CVE-2024-11205 (CVSS 8.5) の脆弱性が多くの注目を集めていることに気づきました。主に 3 つの理由があります:

  • WPForms は広く使用されているプラ​​グインであり、600 万以上のアクティブなインストール (使用しているサイト) があります
  • これは重大度の高い脆弱性です
  • 不思議なほど簡単に理解できます

元の Wordfence の投稿では、脆弱性とその影響を説明する素晴らしい仕事がすでに行われています。したがって、ここでの私の目的は異なります。最も使用されている Wordpress プラグインの 1 つで、このような奇妙に単純な脆弱性がどのようにして 1 年以上も放置されたままになったかを理論化することです。

脆弱性

元の投稿の情報を思い出します。このプラグインは、ajax_single_payment_refund() 関数と ajax_single_payment_cancel() 関数を使用して、Stripe 支払いアクションを処理します。ただし、ログインしているユーザーにそのようなアクションを実行する権限があるかどうかは検証されません ⚰️。さらに言えば、機能は wpforms_is_admin_ajax メソッドによって「保護」されており、一部の人が考えているように、このメソッドは単にユーザーが管理者であるかどうかをチェックしません。

Por que essa vulnerabilidade existe? CVE-WPForms)

修理

脆弱性の軽減から始まり、正式な修正はバージョン 1.9.2.2 に更新することです。このバージョンのコードでは、承認検証が 2 つの機能、ajax_single_payment_refund と ajax_single_payment_cancel に追加されました。ただし、wpforms_is_admin_ajax はそのままでした?

Por que essa vulnerabilidade existe? CVE-WPForms)

脆弱性はいつ発生しましたか?

最初の脆弱なバージョンは、2023 年 11 月 28 日にリリースされた WPForms 1.8.4 です。このバージョンには、「同期ストライプ ダッシュボード」や「定期支払いロジック」などの「新しいストライプ支払いツール」が導入されています。

Por que essa vulnerabilidade existe? CVE-WPForms)

このアップデートでは、15 個の新しいファイルが追加され、64 個のファイルが削除され、425 個のファイルが編集されました。誰かが手動でレビューするのに最適なリリースのようですね ☠️.

Por que essa vulnerabilidade existe? CVE-WPForms)

なぜ脆弱性が存在するのでしょうか?

自動セキュリティツールは検出できますか?

この質問に答えるために、SAST Semgrep (私がよく使用する) と Gepeto (別名 ChatGPT) をテストしました。

セムグレップ

semgrep を実行しました。プロジェクト全体で脆弱性を検出できなかったのですか?.

Por que essa vulnerabilidade existe? CVE-WPForms)

Por que essa vulnerabilidade existe? CVE-WPForms)

結果は予想通りです。公式には、認証失敗の脆弱性はビジネス ロジックの脆弱性とみなされます。つまり、自動ツールではほとんど検出されません。

共通の弱点の列挙 CWE-862 Missing Authorization は一致しているようです。

Por que essa vulnerabilidade existe? CVE-WPForms)

ゼペット

私は ChatGPT に過去のコードの問題を特定できるかどうか尋ねました。私は彼に ajax_single_payment_refund メソッドと wpforms_is_admin_ajax メソッドだけを送信しました (その日の無料 ChatGPT を使い果たしたくないから?)。

Por que essa vulnerabilidade existe? CVE-WPForms)

そして信じられないことに、彼はレート制限なしやロギングなど、このコード内の「潜在的な脆弱性」の中でも特に脆弱性を特定し、その解決策 (実際の修正と非常によく似ていた?) を指摘することに成功しました。

Por que essa vulnerabilidade existe? CVE-WPForms)

「ああ、でも AI を指示しながら、プロジェクト全体で SAST を実行しましたね」人生って本当にこんな感じですか? ?‍♂️

なぜ脆弱性が存在するのでしょうか?

ご覧のとおり、従来のセキュリティ ツールでは認証の脆弱性をほとんど検出できません。

CWE-862 Missing Authorization によると、この脆弱性はコード レビュー、侵入テスト、脅威モデリングなどの手動分析を使用して検出できます。そして、その有効性は「中程度」のみとみなされます?

Por que essa vulnerabilidade existe? CVE-WPForms)

認可の脆弱性について述べた他の資料は、OWASP トップ 10 API セキュリティ 2019 および 2023 の 1 番目と 3 番目に認可の脆弱性があるなど、これが対処が複雑で現実世界では一般的な脆弱性のクラスであることを裏付けています。位置。

もう 1 つの点は、以前に検証として使用されていたメソッド (wpforms_is_admin_ajax) の名前が非常に悪く、この関数はログインしているユーザーが管理者であるかどうかをチェックしないため、開発者とコードレビュー担当者を混乱させるように設計されているということです。

つまり、私の理論では、この脆弱性は次の理由で存在します。1) 手動による分析がなければ、検出するのはほぼ不可能です。 2) wpforms_is_admin_ajax メソッドは、コードを分析する多くのレビュー担当者を混乱させる可能性があります。

将来的にはこのような分析を他にも​​提供したいと考えています。気に入ったら、おばちゃんやおばあちゃんと投稿を共有してください。疑問がありますか?私はいつも Bluesky、Threads、Twitter を利用しています。

以上がなぜこの脆弱性が存在するのでしょうか? CVE-WPフォーム)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。