CVE-2025-9130CVE-2025-9130是WordPress Unify插件中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞存在于Unify插件的unify_checkout短代码(shortcode)中,影响所有3.4.7及以下版本。由于插件对用户提供的短代码属性未进行充分的输入清理(input sanitization)和输出转义(output escaping),导致攻击者可以将恶意JavaScript代码注入到页面中。
该漏洞由WordPress安全团队Wordfence发现并报告,CVSS评分为6.4分,属于中危级别。虽然漏洞利用需要认证(contributor级别及以上权限),但由于其存储型特性,一旦恶意脚本被注入到页面中,任何访问该页面的用户都会自动执行恶意代码,潜在影响范围较广。
存储型XSS漏洞通常比反射型XSS更具危害性,因为恶意载荷会持久化存储在服务器端(数据库或文件中),每当受害者访问受感染页面时都会触发。这使得该漏洞可能被用于窃取用户会话Cookie、劫持账户权限、进行钓鱼攻击或传播恶意软件等多种恶意活动。
根据CVSS向量分析,该漏洞具有网络攻击向量(AV:N)、低攻击复杂度(AC:L)、低权限要求(PR:L)、无需用户交互(UI:N)、作用域变更(S:C)、低机密性影响(C:L)和低完整性影响(I:L),无可用性影响(A:N)。
该漏洞的核心问题在于Unify插件的unify_checkout短代码在处理用户输入的属性时,未能正确实施安全过滤机制。具体而言:
1. **输入验证缺失**:当贡献者(contributor)或更高权限的用户在文章或页面中使用unify_checkout短代码时,插件未对短代码的属性值进行严格的白名单验证和清理。攻击者可以在属性中注入恶意HTML标签和JavaScript代码。
2. **输出转义不足**:即使部分输入经过了处理,插件在将短代码渲染到前端页面时,也未对输出内容进行适当的HTML实体编码或转义,导致浏览器将恶意载荷解析为可执行脚本而非纯文本。
3. **利用方式**:攻击者首先需要拥有一个WordPress站点的贡献者级别账户(可通过社会工程或注册开放站点获取)。然后在创建或编辑文章/页面时,构造包含恶意JavaScript的unify_checkout短代码,例如注入onerror、onload等事件处理器或直接嵌入<script>标签。
4. **触发机制**:当普通用户(包括管理员)访问包含恶意短代码的页面时,浏览器会自动执行注入的脚本,攻击者可以借此窃取Cookie、会话令牌,或执行其他恶意操作。
5. **修复方案**:3.4.8版本中,开发者在Actions/PlatformApi.php文件的第379行附近添加了输入清理和输出转义函数(如wp_kses、esc_attr、esc_html等WordPress安全API),以确保所有用户输入的属性值在存储和渲染时都经过适当处理。