flawopen.com/Incidents/wordpress-stored-xss-admin-session-campaign-october-2026
●
WordPress plugin installations (campaign observations attributed to Patchstack) · CVE-2026-93836 · 2026-10-04 · CVSS 7.2 · 高危
安全研究 · FlawOpen
WordPress 存储型 XSS 攻击活动:两个插件与一条持久化链
Patchstack 观察到攻击者尝试通过 WordPress 中两个存储型 XSS 漏洞使用同一后续植入程序。请更新两个插件并排查持久化;打补丁无法清理已被入侵的网站。[1], [2], [3], [4], [5]
💡 通俗易懂的原理解析 (ELI5)
想象两个公开的意见箱,网站管理员之后会打开里面的纸条。如果网站把纸条保存为可执行标记而不是普通文本,管理员打开时,纸条就可能借用其浏览器权限。攻击活动报告称,攻击者利用两个不同插件漏洞作为入口,随后尝试在插件更新后继续保留访问权限。[1], [8], [9]
核心概念与专有名词
持久化- 修复初始漏洞后仍然存在的访问方式,例如未授权账户或文件。更新插件不会自动删除这些更改。[1]
框架映射
- 本指南所述弱点的 CWE 参考: CWE-79
- OWASP Top 10:2025 — A05:2025 Injection
事件演进时间线
2026-09-21 / 2026-09-22
2026-10-04 至 2026-10-05
Patchstack 报告观察到相同后续攻击阶段,先通过 WPC Product Bundles,后通过 Ninja Forms。Patchstack 于 10 月 6 日发布分析。[1]
攻击执行流程分解
步骤 1
步骤 2
步骤 3
源代码对比:漏洞与安全实现
这是 Ninja Forms 中 Textarea::admin_form_element() 的源代码修复,不是通用示例。3.15.3 将已存储的提交文本直接插入 textarea 的 HTML 正文;3.15.4 在输出前调用 esc_textarea(),从而避免该上下文把内容解释为标记。此处仅展示 CVE-2026-94504 的 Ninja Forms 路径,并非 WPC Product Bundles 对 CVE-2026-93836 的修复。其他 HTML 上下文应使用相应的转义函数。[13], [15], [16]
存在漏洞的实现
public function admin_form_element( $id, $value )
{
return "<textarea class='widefat' name='fields[$id]'>$value</textarea>";
}加固后的安全修复
public function admin_form_element( $id, $value )
{
return "<textarea class='widefat' name='fields[$id]'>" . esc_textarea( $value ) . "</textarea>";
}工程与系统安全加固清单
- ✓为修复
CVE-2026-93836,请将 WPC Product Bundles 至少更新至 8.6.7;截至 2026 年 10 月 11 日核查时,WordPress.org 列出的当前版本为 8.7.4。8.7.3 变更日志也提到存储型 XSS 加固,但未将其关联到此 CVE;请安装当前版本。为修复CVE-2026-94504,请将 Ninja Forms 至少更新至 3.15.4;截至 2026 年 10 月 11 日核查时,WordPress.org 列出的当前版本为 3.15.5。3.15.5 变更日志新增了针对 Paragraph Text (Rich Text) 字段提交内容的存储型 XSS 加固,这与 3.15.4 中对应 CVE 的修复不同。请核验所有生产站点安装的两个插件版本。[2], [3], [4], [5] - ✓若曾暴露易受攻击版本,在确认恢复前先调查:将数据库中的管理员账户与仪表盘列表比对,并检查异常插件,包括 must-use 插件。[1]
- ✓检查 Web、WordPress 和托管服务日志,查找异常管理员操作、插件安装,以及管理员查看订单或表单提交时发生的改动。[1]
- ✓FlawOpen 运维建议:通过可信的事件响应流程移除未授权访问;控制事件后轮换特权凭据和 WordPress 身份验证盐,并检查网站可访问的其他秘密。
- ✓FlawOpen 运维建议:保留可信备份,并在恢复服务前验证数据库、插件文件和结账/表单流程;升级版本本身不能证明持久化已清除。
参考来源
- Patchstack — Four ways back in: the WordPress XSS campaign that hides its own admin account (2026-10-06)
- CVE-2026-93836 — CVE record (Wordfence CNA)
- CVE-2026-94504 — CVE record (Wordfence CNA)
- WPC Product Bundles for WooCommerce — WordPress.org changelog
- Ninja Forms — WordPress.org changelog
- Patchstack — WPC Product Bundles advisory
- NCSA Qatar — Cybersecurity advisories (October 7, 2026)
- Wordfence CNA — CVE-2026-93836 vulnerability record
- Wordfence CNA — CVE-2026-94504 vulnerability record
- CVE-2026-93836 — WPC Product Bundles 8.6.5 source pointer: class-woosb.php
- CVE-2026-93836 — WPC Product Bundles 8.6.5 source pointer: class-backend.php
- CVE-2026-94504 — Ninja Forms 3.15.3 source pointer: Submission.php
- CVE-2026-94504 — Ninja Forms 3.15.3 source pointer: Textarea.php
- CVE-2026-94504 — Ninja Forms 3.15.3 source pointer: admin submission template
- Ninja Forms 3.15.3 to 3.15.4 changeset referenced by CVE-2026-94504
- Ninja Forms 3.15.4 源码修复 — Textarea::admin_form_element()
- MDN — 同源策略