CVE-2026-3445WordPress的ProfilePress插件(付费会员、电商等插件)在所有4.16.11及以下版本中存在严重的逻辑漏洞。该漏洞源于`process_checkout()`函数中缺少对`change_plan_sub_id`参数的所有权验证。这允许经过身份验证的攻击者(订阅者级别及以上)在结账过程中引用其他用户的活跃订阅。通过操纵按比例计算逻辑,攻击者可以利用`ppress_process_checkout` AJAX操作,无需支付即可获取付费的终身会员计划。
该漏洞的核心原理是不安全的直接对象引用(IDOR)与业务逻辑缺陷的结合。在插件处理会员计划变更的结账流程中,`process_checkout()`函数接收用户提交的`change_plan_sub_id`参数,该参数代表用于计算价差的旧订阅ID。然而,代码逻辑未验证当前登录用户是否为该订阅ID的合法持有者。
攻击者首先注册一个低权限账号,然后构造特定的AJAX请求发送给`/wp-admin/admin-ajax.php`。在请求中,攻击者将`change_plan_sub_id`设置为目标管理员或其他高级用户的有效订阅ID。由于系统误以为攻击者正在从该高级订阅进行“变更”或“升级”,按比例退款或升级计算逻辑会基于该高级订阅的状态执行。通过精心构造请求,攻击者可以将应付金额调整为0或负数,从而绕过支付环节,直接获得付费会员资格。