CVE-2026-4406WordPress的Gravity Forms插件在所有2.9.30及以下版本中存在反射型跨站脚本(XSS)漏洞。该漏洞是因为`gform_get_config` AJAX接口的`form_ids`参数处理不当。系统使用`GFCommon::send_json()`输出数据时,将JSON包裹在HTML注释中并设置`Content-Type: text/html`,导致JSON字符串内的尖括号未被转义。未认证的攻击者可构造恶意链接诱导用户点击,利用公开且固定的`config_nonce`绕过验证,进而注入并执行任意恶意脚本。虽然该漏洞无法攻击已认证用户,但仍可被用于篡改页面内容,对用户构成安全威胁。
漏洞的根本原因在于Gravity Forms插件在处理AJAX请求时,错误地将JSON数据以HTML格式输出。具体而言,`GFCommon::send_json()`方法在输出时使用了HTML注释包裹(`<!-- ... -->`),并且HTTP响应头被错误地设置为`Content-Type: text/html`而非`application/json`。这导致浏览器将响应内容解析为HTML文档而非纯数据。由于WordPress核心的`wp_json_encode()`函数仅负责将数据编码为JSON字符串,并不会对字符串内部的尖括号(`<`、`>`)进行HTML实体转义,攻击者便可以在`form_ids`参数中注入恶意的HTML或JavaScript标签。此外,该接口依赖的`config_nonce`虽然用于验证,但其值由`wp_create_nonce('gform_config_ajax')`生成,且被公开嵌入在每一个包含Gravity Forms表单的页面中。对于未认证的访客,这个nonce在12小时的时间窗口内是完全相同的。这意味着攻击者只需访问一次页面获取nonce,即可在12小时内针对任何未认证用户构造有效的恶意请求,执行反射型XSS攻击。