WPForms是一个流行的WordPress表单生成器插件,其活跃安装量超过600万,该插件中发现的一个关键漏洞(CVE-2024-11205)使网站面临重大财务风险。该漏洞的 CVSS v3.1 基础分值为 8.5,允许拥有用户级或更高权限的经过验证的攻击者执行未经授权的 Stripe 付款退款和 Stripe 订阅取消。
WPForms 是一款广泛使用的表单生成器插件,WordPress 网站所有者可以通过拖放界面创建联系表单、反馈表单、订阅表单和付款表单。
问题出在插件的 SingleActionsHandler 类中的 ajax_single_payment_refund() 和 ajax_single_payment_cancel() 函数上。这些函数管理 Stripe 支付操作,并依赖 wpforms_is_admin_ajax() 函数来验证管理员 AJAX 请求。但是,该函数不执行能力检查,从而造成了严重的安全漏洞。
尽管该漏洞受非密钥保护,但通过验证的攻击者仍可获取必要的非密钥,从而执行未经授权的操作。如果没有额外的验证,这些功能可被用于以下目的
- 退还 Stripe 付款。
- 取消使用中的 Stripe 订阅。
这为依赖 WPForms 进行订阅和付款管理的企业带来了潜在的收入损失和运营中断。
对于使用 WPForms 管理 Stripe 付款的企业,该漏洞可能导致
- 未经授权的退款,导致收入损失。
- 订阅服务中断,可能破坏客户关系。
- 处理和逆转未授权行为的管理费用增加。
CVE-2024-11205 漏洞影响 WPForms 1.8.4 至 1.9.2.1 版本。安全研究员 “villu164 ”通过 Wordfence Bug Bounty Program 发现并负责任地披露了该漏洞,并获得了 2376.00 美元的赏金。Wordfence 及时提醒了 WPForms 开发团队,该团队迅速解决了这一问题,并发布了 1.9.2.2 补丁版本。