CVE-2026-3368WordPress Injection Guard插件在1.2.9及之前版本中存在存储型XSS漏洞。由于sanitize_ig_data()函数未清理数组键值,且ig_settings.php模板缺少输出转义,未经身份验证的攻击者可通过恶意查询参数名称注入任意Web脚本,当管理员查看日志页面时触发执行。
该漏洞核心在于插件对用户输入的处理逻辑存在缺陷。插件首先通过$_SERVER['QUERY_STRING']获取完整的查询字符串,使用esc_url_raw()函数进行处理。该函数虽然用于清理URL,但保留了如%3C、%3E、%22等特殊字符的URL编码形式。随后,插件调用parse_str()函数解析字符串,该函数会将URL编码的字符还原,导致原本编码的HTML/JavaScript代码被解码并存入数组的键名中。这些恶意键名随后通过update_option('ig_requests_log')被持久化存储在数据库中。当管理员访问后台日志页面时,ig_settings.php模板直接从数据库读取并输出这些键名,且未经过任何HTML实体转义(如esc_html()或esc_attr())。因此,未经身份认证的攻击者只需构造包含恶意参数名的URL发送请求,即可将XSS Payload存储于服务器端,一旦管理员查看日志,Payload便会在其浏览器上下文中执行。