WordPressのPaid Membership Subscriptionsプラグインに重大なセキュリティ問題が発見されました。このプラグインは、1万以上のサイトで会員管理や定期支払いのために使用されています。
バージョン2.15.1以前には、認証不要のSQLインジェクション脆弱性(CVE-2025-49870)が存在します。
この脆弱性により、攻撃者はログイン認証なしで悪意のあるSQLクエリをデータベースに注入することが可能です。
Patchstack Allianceの研究者ChuongVN氏がこの問題を特定し、バージョン2.15.2で修正されたことを確認しました。
脆弱性の仕組み
このバグは、プラグインがPayPalの即時支払い通知(IPN)を処理する方法に起因しています。
トランザクション処理時、プラグインはユーザーから提供されたデータから直接支払いIDを抽出し、適切な検証を行わずにデータベースクエリに挿入します。
この入力を操作することで、攻撃者は機密情報への不正アクセスや保存データの改ざんが可能となります。
SQLインジェクション脆弱性について詳しく読む:CISAとFBIがSQLインジェクション脆弱性の排除強化を呼びかけ
この問題を解決するため、開発者はバージョン2.15.2で以下のような変更を行いました:
-
支払いIDが数値であることを使用前に確認
-
脆弱なクエリの連結をプリペアドステートメントに置き換え
-
ユーザー入力の取り扱いに関する保護を強化
プリペアドステートメントを使用することで、攻撃者がデータベースクエリの構造を変更することを防ぎ、インジェクションのリスクを排除します。
SQLインジェクションのリスク
SQLインジェクションは、データベース全体が危険にさらされる可能性があるため、長年にわたり最も危険なウェブセキュリティ問題の一つとされています。
Patchstackのアドバイザリでも、「SQLクエリ処理の際は、常に安全なエスケープとユーザー入力のフォーマットを行ってからクエリを実行してください。最善の方法は、常にプリペアドステートメントを使用し、使用する各変数を意図した用途にキャストすることです」と述べられています。
プラグイン利用者は、悪用からサイトを守るため、できるだけ早くバージョン2.15.2へのアップグレードが強く推奨されます。
画像クレジット:Wirestock Creators / Shutterstock.com
翻訳元: https://www.infosecurity-magazine.com/news/sqli-threat-wordpress-memberships/