CVE-2025-60507CVE-2025-60507是Moodle平台的GeniAI插件(local_geniai)2.3.6版本中存在的一个高危跨站脚本(XSS)漏洞。该漏洞由安全研究员onurcangnc发现并报告,CVSS评分为8.9分,属于高危级别漏洞。该漏洞的核心问题在于插件在处理用户上传的PDF文件时,未对文件链接进行适当的输出编码和净化处理,导致恶意攻击者可以将包含JavaScript代码的PDF文件上传到服务器,并通过聊天助手功能将恶意链接分发给其他用户。
具体而言,具有Teacher角色的认证用户可以上传一个嵌入了恶意JavaScript代码的PDF文件。当该用户通过GeniAI聊天助手与系统交互时,系统会生成一个指向该上传文件的直接HTML链接,并将该链接展示给其他用户(包括Student和Administrator角色)。由于链接未经任何净化处理就直接以HTML形式输出,当其他用户点击该链接时,嵌入在PDF中的JavaScript代码将在他们的浏览器中执行,从而实现跨站脚本攻击。
此漏洞的危害性较高,因为它允许低权限的Teacher角色用户对高权限的Administrator用户发起攻击。攻击者可以窃取管理员的会话cookie、获取敏感信息、执行未授权操作,甚至可能完全控制受影响的Moodle系统。此外,由于该漏洞涉及存储型XSS特性,恶意载荷一旦上传就会持续影响所有访问相关页面的用户,具有较强的传播性和持久性。
该漏洞的技术原理涉及PDF文件中的JavaScript嵌入和Moodle插件的输出处理缺陷两个关键环节。
**PDF中的JavaScript嵌入机制**:PDF格式本身支持嵌入JavaScript代码,这些代码可以在用户使用PDF阅读器(如Adobe Reader)打开文件时执行。攻击者可以使用各种工具(如PDF编辑器或专门的脚本)将恶意JavaScript代码嵌入到PDF文件的OpenAction或附加事件处理器中。当用户在浏览器中点击PDF链接并打开文件时,嵌入的JavaScript会在PDF阅读器的上下文中执行。
**Moodle插件的输出缺陷**:GeniAI插件(local_geniai)2.3.6版本在处理用户上传的PDF文件时,存在以下关键缺陷:
1. **缺乏文件内容验证**:插件未对上传的PDF文件进行内容安全检查,未检测或过滤其中嵌入的JavaScript代码。
2. **输出未净化处理**:当聊天助手需要引用上传的文件时,系统直接生成HTML链接(如`<a href="uploaded_file_url">文件链接</a>`),未对URL或链接文本进行HTML实体编码或安全过滤。
3. **信任域问题**:由于链接指向的是用户上传的文件,且Moodle站点与上传文件位于同一域下,浏览器会将PDF中的JavaScript视为同源内容执行,绕过了浏览器的某些安全限制。
**攻击利用方式**:攻击者首先以Teacher身份登录Moodle系统,通过GeniAI插件上传一个精心构造的包含恶意JavaScript的PDF文件。然后,通过聊天助手功能触发系统生成包含该PDF链接的响应。当其他用户(特别是管理员)查看聊天记录并点击该链接时,恶意代码将在他们的浏览器中执行,实现会话劫持、权限提升或数据窃取等攻击目的。