CVE-2025-60511CVE-2025-60511是Moodle OpenAI Chat Block插件3.0.1版本(2025021700)中存在的一个不安全直接对象引用(IDOR)漏洞。该漏洞位于插件的API端点/blocks/openai_chat/api/completion.php中,由于对blockId参数缺乏充分的验证和授权检查,导致经过身份验证的低权限用户(如学生)可以通过修改请求中的blockId参数,冒充其他用户(包括管理员)的聊天块配置来发送查询请求。
当低权限用户成功利用该漏洞后,其发送的查询请求将以被冒充用户(通常是管理员)的聊天块配置进行处理。这意味着攻击者可以访问管理员专属的"Source of Truth"(知识源)条目,这些条目通常包含敏感信息或仅限管理员访问的内容。此外,攻击者还可以改变AI模型的行为参数(如系统提示词、温度等),并可能滥用与该聊天块关联的OpenAI API资源,导致API费用异常消耗或配额被恶意消耗。
该漏洞的CVSS评分为4.3,属于中危级别。虽然漏洞本身不直接导致代码执行或数据破坏,但其信息泄露和资源滥用的风险对使用该插件的教育机构和企业构成了实质性威胁。特别是考虑到Moodle作为广泛使用的学习管理系统(LMS),许多高校和企业依赖其进行在线教学和培训,该漏洞可能影响到大量组织的AI聊天功能安全性。
该漏洞的核心问题在于/blocks/openai_chat/api/completion.php端点对blockId参数的验证不足。具体技术原理如下:
1. **漏洞端点**:插件的API文件/blocks/openai_chat/api/completion.php负责处理聊天补全请求,接收用户发送的消息并通过OpenAI API获取AI响应。
2. **参数验证缺陷**:该端点在处理请求时,直接使用请求中传入的blockId参数来确定使用哪个聊天块的配置(包括系统提示词、API密钥、模型参数、Source of Truth条目等),但未验证当前认证用户是否有权访问或使用该blockId对应的聊天块。
3. **攻击方式**:攻击者首先需要拥有一个有效的Moodle账户(最低权限即可,如学生账户)。然后,攻击者拦截正常的聊天补全请求,将请求中的blockId参数修改为管理员或其他高权限用户的聊天块ID。由于服务器端缺少权限检查,服务器会使用被冒充聊天块的配置来处理请求。
4. **影响范围**:通过此漏洞,攻击者可以:(a) 读取管理员聊天块中配置的Source of Truth条目,可能包含敏感信息;(b) 利用管理员的API配置发送请求,消耗管理员的OpenAI API配额;(c) 通过管理员的系统提示词改变AI的响应行为,可能导致信息误导。
5. **权限模型缺陷**:正常的权限模型应当验证当前用户是否为指定blockId的所有者或被授权使用者,但该插件的实现中缺少这一关键的安全检查,导致了典型的IDOR漏洞。