CVE-2025-11281CVE-2025-11281是Frappe LMS 2.35.0版本中存在的一个访问控制不当漏洞。该漏洞位于Unpublished Course Handler(未发布课程处理器)组件中,具体涉及/courses/路径下的未知功能函数。攻击者可以通过远程方式利用该漏洞绕过正常的访问控制机制,访问到本应处于未发布状态的课程内容。
Frappe LMS是一个基于Frappe框架构建的开源学习管理系统(LMS),广泛用于在线教育平台和企业培训场景。该系统允许管理员创建、发布和管理课程内容,其中未发布的课程通常仅供内部预览或编辑使用,不应对普通用户或低权限用户开放。然而,由于Unpublished Course Handler组件中的访问控制逻辑存在缺陷,未经授权或低权限的用户可以通过特定请求访问到这些未发布的课程内容。
该漏洞的CVSS 3.1评分为5.0,属于中危级别。虽然攻击需要低权限认证(PR:L),且利用复杂度较高(AC:H),但攻击可通过网络远程发起(AV:N),无需用户交互(UI:N)。漏洞的机密性、完整性和可用性影响均为低级别,但泄露未发布课程内容可能导致知识产权损失、商业机密泄露或课程内容被恶意篡改等风险。
该漏洞已于2025年10月5日公开披露,漏洞发现者通过VulDB平台报告了该问题。供应商Frappe已被提前告知总共四个安全问题的存在,并确认这些问题已得到修复,但GitHub上的发布说明中并未提及这些修复内容。
该漏洞的核心问题在于Frappe LMS的Unpublished Course Handler组件未对用户权限进行充分的验证检查。当用户请求/courses/路径下的课程内容时,系统未能正确区分课程的发布状态与用户的访问权限,导致低权限用户可以访问到标记为未发布(unpublished)的课程内容。
从技术实现角度来看,Frappe LMS使用Frappe框架的文档模型(DocType)来管理课程数据,每个课程文档包含一个published字段用于标识其发布状态。正常的访问控制流程应该是:当用户请求课程详情时,系统首先检查课程的published状态,如果课程未发布,则进一步验证用户是否具有管理员或课程创建者权限。然而,在存在漏洞的版本中,Unpublished Course Handler在处理课程请求时,仅验证了用户的基本认证状态,而未对课程的发布状态进行二次权限校验。
攻击者利用该漏洞时,首先需要拥有Frappe LMS的低权限账户(如学生或普通用户角色),然后通过构造特定的HTTP请求访问/courses/路径下的课程标识符。由于服务器端未对课程发布状态进行访问控制检查,攻击者即使不具备查看未发布课程的权限,也能够成功获取课程的详细信息,包括课程描述、教学内容、附件资源等。
该漏洞的利用复杂度被评定为高(AC:H),这可能是因为攻击者需要事先了解目标系统中未发布课程的具体标识符,或者需要通过枚举等方式获取有效的课程ID。此外,漏洞披露的PoC中提供了详细的复现步骤,攻击者可以按照步骤构造相应的请求来验证漏洞的存在。