CVE-2025-61687CVE-2025-61687 是 FlowiseAI Flowise 拖拽式大语言模型流程构建平台中存在的一个高危任意文件上传漏洞。该漏洞影响 Flowise 版本 3.0.7,允许经过身份验证的低权限用户上传任意文件而无需经过适当的验证。由于系统在文件上传过程中未对文件扩展名、MIME 类型或文件内容进行任何校验,攻击者可以将恶意的 Node.js Web Shell 脚本持久化存储到服务器上。虽然上传的 Shell 不会自动执行,但其存在为后续通过管理员误操作或与其他漏洞链式利用提供了攻击路径,可能导致远程代码执行(RCE),严重威胁系统的完整性和机密性。该漏洞的 CVSS 3.1 评分为 8.3 分,属于高危级别。截至漏洞披露时,官方尚未发布任何已知的修复版本,受影响用户应密切关注官方补丁发布动态。该漏洞由 GitHub 安全顾问团队([email protected])发现并报告,披露日期为 2025 年 10 月 6 日。漏洞涉及的核心代码位于 packages/components/src/storageUtils.ts 和 packages/server/src/controllers/attachments/index.ts 等文件中,攻击者可通过附件上传接口触发漏洞。
该漏洞的根本原因在于 FlowiseAI Flowise 的文件上传功能缺乏充分的安全验证机制。具体而言,在 packages/components/src/storageUtils.ts 的第 1104-1111 行、170-175 行以及 533-541 行代码中,文件保存逻辑未对用户上传的文件进行以下关键校验:
1. **文件扩展名校验缺失**:系统未限制可上传文件的扩展名,攻击者可以上传 .js、.ts 等可执行脚本文件。
2. **MIME 类型校验缺失**:未对 HTTP 请求中的 Content-Type 头进行验证,攻击者可伪造 MIME 类型绕过客户端检查。
3. **文件内容校验缺失**:未对上传文件的内容进行恶意代码扫描或魔术字节(magic bytes)检测。
在 packages/server/src/controllers/attachments/index.ts 和 routes/attachments/index.ts 中,附件上传路由直接调用存储工具函数,将用户上传的文件保存到服务器文件系统。攻击者利用此漏洞的步骤如下:首先以合法用户身份登录系统,获取有效的认证凭据;然后构造包含 Node.js Web Shell 代码的 JavaScript 文件,通过附件上传接口将其上传至服务器;服务器在缺少验证的情况下将恶意文件存储到可访问的目录中;最后,攻击者通过直接访问上传的 Web Shell URL,传入命令参数即可在服务器上执行任意系统命令,实现远程代码执行。整个攻击链利用了身份验证与文件上传验证之间的安全缺口,将低权限提升为完整的服务器控制权。