CVE-2026-4120Info Cards是WordPress平台上一款用于在卡片布局中添加文本和媒体的插件。该插件在2.0.7及以下所有版本中存在严重的存储型跨站脚本(Stored XSS)漏洞。漏洞根源在于插件对Info Cards块的btnUrl参数缺乏充分的URL协议验证,特别是未对javascript:协议进行过滤。虽然服务端render.php使用esc_attr(wp_json_encode())转义了HTML属性,但JSON数据中的URL协议并未被验证。当客户端view.js渲染按钮链接时,直接将btnUrl值作为href属性输出,导致攻击者可以注入恶意javascript:协议链接。由于该漏洞需要Contributor级别权限,攻击者可在WordPress文章或页面中插入包含恶意链接的Info Cards块,当其他用户点击该链接时,恶意JavaScript代码将执行,可能导致会话劫持、敏感信息窃取或管理员账户被接管等严重后果。
漏洞的技术根源在于前后端数据处理链中的协议验证缺失。首先,插件的block.json配置文件(line 35)定义了btnUrl参数,但未设置任何URL协议白名单或验证规则。其次,render.php(line 8)虽然使用esc_attr()和wp_json_encode()对属性进行转义处理,防止了直接的HTML属性注入,但这仅是客户端防护,无法验证JSON数据内的URL协议合法性。最后,view.js(line 2)在前端渲染时,直接将btnUrl值赋值给anchor元素的href属性,完全缺乏协议类型检查。攻击者利用此漏洞的典型方式是构造形如javascript:alert(document.cookie)的btnUrl值。由于存储型XSS的特性,恶意脚本会被永久保存在数据库中,所有访问该页面的用户都会触发漏洞。攻击者通常利用此漏洞窃取用户会话cookie、冒充合法用户操作或进一步提升权限。