CVE-2026-5113WordPress的Gravity Forms插件在2.10.0及以下版本中存在严重的存储型跨站脚本(XSS)漏洞。该漏洞源于Consent字段隐藏输入中存在缺陷的状态验证机制。由于验证逻辑存在“失效开放”问题,当输入被wp_kses()清理时,仅当原始输入和清理后输入的哈希值均与原始状态不匹配时才会失败。攻击者可以利用wp_kses()会剥离的标签(如<svg>)注入XSS载荷,恶意原始值被保留并保存到数据库中。当管理员查看条目列表页面时,存储的恶意同意标签被检索并在未转义的情况下输出,导致XSS载荷执行。未经身份验证的攻击者可利用此漏洞在管理员访问条目列表时注入任意Web脚本。
该漏洞的核心在于Gravity Forms插件的状态验证逻辑设计缺陷。插件在处理Consent字段的隐藏输入时,会生成两个哈希值:一个是原始输入的哈希,另一个是经过wp_kses()函数(WordPress的HTML清理函数)处理后的输入哈希。验证机制仅在两个哈希值都与原始状态不匹配时才拒绝保存,这意味着只要其中一个哈希匹配,验证就会通过。
攻击者利用这一逻辑漏洞,注入包含被wp_kses()剥离的恶意标签(例如SVG标签)的XSS载荷。由于wp_kses()移除了危险标签,清理后的输入可能符合预期,导致清理后的哈希匹配验证通过。然而,插件错误地将未经清理的原始恶意值保存到了数据库中。
当管理员登录WordPress后台并访问受影响表单的Entries List(条目列表)页面时,系统会从数据库中检索这些条目。由于输出时缺乏足够的转义处理,存储在数据库中的恶意脚本代码被直接渲染在管理员浏览器中。这使得未经身份验证的攻击者能够劫持管理员会话,执行任意操作,甚至接管网站权限。