CVE-2025-66916CVE-2025-66916是存在于RuoYi-Vue-Plus框架snailjob任务调度组件中的一个高危安全漏洞。该漏洞影响RuoYi-Vue-Plus 5.5.1及之前的所有版本。漏洞根源在于/snail-job/workflow/check-node-expression接口在处理用户输入时,直接将用户提供的字符串作为QLExpress表达式进行解析和执行,而未对输入内容进行任何安全过滤或参数化处理。QLExpress是阿里巴巴开源的一个轻量级表达式解析引擎,类似于SpEL和MVEL,常用于动态规则配置和业务规则引擎。然而,由于该接口缺乏输入验证,攻击者可以通过构造恶意QLExpress表达式,利用Java的File类等系统资源,绕过表达式引擎的安全限制,执行任意文件读写操作,进而可能导致敏感信息泄露、服务器被完全控制等严重后果。由于该漏洞的CVSS评分高达9.4,属于严重级别,且攻击无需任何认证和用户交互,对互联网暴露的系统构成极大威胁。建议使用该框架的企业和个人开发者立即采取修复措施,避免遭受恶意攻击。
该漏洞的技术核心在于RuoYi-Vue-Plus的snailjob组件中的表达式解析机制存在严重的输入验证缺陷。具体来说,问题出在/sn-job/workflow/check-node-expression接口上,该接口原本设计用于在工作流节点中执行动态表达式以实现业务逻辑判断。然而,开发人员在实现该接口时,直接将HTTP请求中的用户输入参数传递给QLExpress引擎的ExpressionRunner进行解析执行,而没有对输入进行任何过滤或安全校验。QLExpress引擎默认允许访问Java类的公共方法,包括java.io.File类。攻击者可以通过构造类似new File('/etc/passwd').exists()或new FileInputStream('/etc/passwd')这样的QLExpress表达式,实现任意文件读取;若进一步结合文件写入操作,还可能实现远程代码执行。漏洞的利用前提条件极低,无需任何认证凭证,且可以通过HTTP直接触发,攻击复杂度低,成功率极高。攻击成功后,攻击者可以读取服务器上的配置文件、数据库凭证、源代码等敏感信息,甚至可以写入恶意文件实现持久化控制和进一步的内网渗透。