WPForms是一款在超过600万个WordPress网站上使用的插件,最近被发现存在一个严重的安全漏洞。该漏洞允许拥有订阅者级别权限的用户执行任意Stripe退款或取消订阅操作。这个漏洞被追踪为CVE-2024-11205,并被归类为高严重性问题,因为它的利用需要认证。
受影响的WPForms版本从1.8.4开始,一直到1.9.2.1。幸运的是,开发团队已经在1.9.2.2版本中发布了补丁,修复了这一问题。WPForms是一款易于使用的拖放式WordPress表单构建器,支持创建联系表单、反馈表单、订阅表单和支付表单,并支持Stripe、PayPal、Square等多种支付方式。
漏洞的根源在于WPForms插件错误地使用了`wpforms_is_admin_ajax()`函数来判断请求是否为管理员AJAX调用。该函数虽然检查请求是否来自管理员路径,但并未强制执行基于用户角色或权限的能力检查。这使得任何经过认证的用户,即使是订阅者,也能调用敏感的AJAX函数,如`ajax_single_payment_refund()`(执行Stripe退款)和`ajax_single_payment_cancel()`(取消订阅)。
CVE-2024-11205的利用可能会给网站所有者带来严重后果,包括收入损失、业务中断和客户信任问题。安全研究人员Villu Orav发现了这一漏洞,并通过Wordfence的漏洞赏金计划报告了该漏洞,获得了2376美元的奖励。Wordfence随后验证了报告并确认了提供的漏洞利用方法,将详细信息发送给了供应商Awesome Motive。Awesome Motive于11月18日发布了修复版本1.9.2.2,增加了适当的权限检查和授权机制。
根据wordpress.org的统计数据,大约一半使用WPForms的网站甚至不在最新的发布分支(1.9.x)上,因此至少有300万个网站面临风险。Wordfence尚未检测到CVE-2024-11205在野外的活跃利用,但建议尽快升级到1.9.2.2版本或从网站上禁用该插件。