CVE-2025-14984Gutenverse Form是WordPress的一个流行表单构建插件,广泛用于创建各种联系表单、调查问卷和用户注册表单。该插件在2.3.2及之前的所有版本中存在一个严重的存储型跨站脚本(XSS)漏洞。漏洞的根本原因在于插件的框架组件通过WordPress的upload_mimes过滤器将SVG文件格式添加到允许上传的MIME类型列表中,但并未实现对SVG文件内容的任何安全清理或消毒措施。SVG文件格式本身支持内联JavaScript代码,这意味着攻击者可以构造包含恶意JavaScript payload的SVG文件并上传到服务器。由于该漏洞允许存储型XSS攻击,任何访问或查看该SVG文件的用户都会在其浏览器上下文中执行攻击者植入的恶意脚本,可能导致会话劫持、敏感数据窃取、管理后台权限提升等严重后果。攻击者只需要拥有WordPress网站的Author级别(作者)权限即可实施攻击,这在多用户博客或协作编辑环境中尤其危险。
该漏洞的技术根源在于Gutenverse Form插件框架组件中的文件上传处理逻辑。具体来说,插件通过以下代码路径将SVG添加到允许的MIME类型:调用upload_mimes过滤器钩子,将'image/svg'和'image/svg+xml'添加到WordPress允许的文件上传类型白名单中。然而,插件在处理SVG文件上传时缺少关键的安全验证步骤。首先,插件没有对SVG文件内容进行XML解析和恶意脚本检测;其次,没有使用DOMPurify等专业库对SVG中的JavaScript进行清理或移除;最后,缺少Content-Disposition头的正确设置来防止浏览器将SVG作为可执行脚本处理。攻击者可以构造如下SVG payload:包含<script>标签或SVG特有的事件处理器(如onload、onerror)来执行任意JavaScript代码。由于SVG文件通常会被WordPress存储在wp-content/uploads目录下,并通过直接URL访问,当受害者(包括管理员)访问这些SVG文件时,浏览器会解析SVG并执行其中的恶意脚本。攻击者可以利用此漏洞窃取管理员的认证cookies、创建新的管理员账户、或在网站前端注入恶意内容。