CVE-2026-9838CVE-2026-9838是WordPress ICS Calendar插件中存在的一个反射型跨站脚本(Reflected XSS)漏洞。该漏洞由Wordfence安全团队的安全研究员发现,披露日期为2026年7月10日,CVSS 3.1评分为6.1分,属于中危级别漏洞。
ICS Calendar是一款广泛用于WordPress网站的日历插件,允许网站管理员通过iCal/ICS格式显示日历事件。该漏洞影响该插件所有12.0.9及以下版本,由于对用户输入缺乏充分的过滤和转义处理,攻击者可以通过构造恶意的'htmltagtitle'参数注入任意JavaScript代码。
该漏洞的特殊之处在于其利用路径:未认证的攻击者可以通过WordPress的wp_ajax_nopriv_r34ics_ajax AJAX动作发起攻击,该动作不需要nonce验证即可被未认证用户访问。攻击者控制的js_args值会与已存储的shortcode配置合并,从而绕过正常的shortcode白名单检查,最终使htmltagtitle键能够注入恶意脚本。
成功利用此漏洞的攻击者可以在受害者浏览器中执行任意JavaScript代码,可能导致会话劫持、cookie窃取、钓鱼攻击或进一步的攻击行为。虽然该漏洞需要用户交互(如点击恶意链接),但由于无需认证即可发起攻击,威胁范围仍然较广。
该漏洞的核心问题在于ICS Calendar插件的AJAX处理逻辑中存在多处安全缺陷:
1. **未认证AJAX端点暴露**:插件注册了wp_ajax_nopriv_r34ics_ajax动作,该动作允许未认证用户调用。正常情况下,敏感操作应该通过nonce验证或权限检查来限制访问,但该实现缺少这些保护措施。
2. **参数合并逻辑缺陷**:在r34ics-ajax.php文件中,攻击者提交的js_args参数会通过数组合并操作与存储的shortcode配置合并(如array_merge函数),这意味着攻击者可以覆盖或添加shortcode中的任意键值对。
3. **白名单绕过**:插件对shortcode属性有白名单检查机制,但htmltagtitle键不在白名单内或检查不严格,攻击者可以通过js_args注入该键并提供恶意值。
4. **输出未转义**:在templates/calendar-month.php的第40行,htmltagtitle的值被直接输出到HTML页面中,没有经过适当的HTML实体编码(如htmlspecialchars或esc_attr),导致XSS payload可以直接在浏览器中执行。
**利用方式**:攻击者构造一个包含恶意js_args参数的URL,例如:
`https://target.com/wp-admin/admin-ajax.php?action=r34ics_ajax&js_args[htmltagtitle]=<script>alert(document.cookie)</script>`
当受害者点击此链接时,恶意脚本将在其浏览器上下文中执行,可用于窃取会话cookie、重定向到钓鱼页面或执行其他恶意操作。