CVE-2026-3358Tutor LMS插件在3.9.7及之前的版本中存在安全漏洞,导致未经授权的私人课程注册。该漏洞源于`enroll_now()`和`course_enrollment()`函数中缺少对课程`post_status`的验证。尽管系统验证了nonce和用户身份,但未检查课程是否为私有状态。这使得拥有订阅者及以上权限的认证攻击者,能够通过发送特制的POST请求强行注册私人课程,导致课程信息在用户仪表盘中泄露。
该漏洞源于WordPress插件Tutor LMS在处理课程注册请求时的逻辑缺陷。具体而言,`enroll_now()`和`course_enrollment()`函数仅实现了基本的身份验证和购买能力检查,但未验证目标课程的`post_status`属性。在正常逻辑下,私人课程的注册应被限制在拥有`read_private_posts`权限的用户范围内。然而,由于此验证缺失,任何经过身份验证的低权限用户(如订阅者)都可以通过构造包含目标课程ID的POST请求,调用注册接口。服务器接收到请求后,会错误地处理该请求并在数据库中生成注册记录。虽然WordPress核心的访问控制机制会阻止用户直接查看私人课程内容(返回404),但注册记录的创建导致课程标题和注册状态在用户的个人仪表盘中暴露,违反了最小权限原则,造成了信息的未授权披露。