WordPress 备份迁移插件 Prime Mover – Backup and Migration 被披露一枚 CVSS 3.1 评分 9.8 的 PHP 对象注入漏洞,编号 CVE-2026-115806,影响 2.2.1 及之前所有版本。该插件活跃安装量在 1 万以上,Wordfence 作为 CNA 于 10 月 22 日发布公告。
事件概述
漏洞形态比较少见:不是攻击者直接打穿,而是把两步拆开。第一步完全不需要账号 —— 任何访客通过标准评论接口,就能把一段 base64 编码的序列化对象写进 wp_comments 表的 comment_content 字段。第二步由管理员触发:当他执行一次常规的导出或还原,插件里的 recursiveUnserializeReplace() 会把这个值 base64 解码后直接交给 unserialize(),且没有 allowed_classes 限制。
换句话说,攻击者负责埋,管理员负责引爆,中间可以隔几天甚至几周;评论审核拦不住存储,停用插件也清不掉已经躺进库里的载荷。
技术细节:Gadget 不用外借
很多对象注入要靠第二个插件或主题提供 gadget chain,这个漏洞不用外借。插件自带的 Freemius 库就够:FS_Clone_Manager::__set 触发 FS_Option_Manager::set_option,进入 store(),最终落到 update_option(),从而完成任意 WordPress option 写入。
CVSS 向量为 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H。UI:N 技术上成立 —— 受害者没有点击任何东西;但实际利用要等管理员发起迁移动作,这个时间差既是限制,也是检测窗口。
必须说清楚:CVE 记录写的是「任意 option 写入」,并未确认代码执行。把 9.8 换算成「必定 RCE」是过度解读,但改站点地址、改默认角色、写序列化的插件配置,都能往上继续走。
影响评估
- 攻击入口:wp-comments-post.php,无需账号、无需交互
- 触发条件:管理员执行 Prime Mover 导出或还原
- 利用状态:未入 CISA KEV,暂无公开在野利用记录
- 版本争议:Wordfence 记录 10 月 24 日仍显示「未修复」,而 2.2.2 的 changelog 已写明加固 unserialize 并更新 Freemius SDK
修复建议
先确认装没装、装的哪个版本。有 WP-CLI 的机器直接查:
wp plugin list --field=name --status=active | grep -i prime
wp plugin update prime-mover
再查评论区有没有长串 base64(启发式查询,命中不等于中招):
SELECT comment_ID, comment_author_IP, comment_date, LENGTH(comment_content) AS len
FROM wp_comments
WHERE comment_content REGEXP '^[A-Za-z0-9+/=]{200,}$'
ORDER BY comment_date DESC;
处置口径:
- 能升级就升到 2.2.2 或更高,并核对 changelog 是否有 unserialize 加固条目
- 暂时不用就彻底删除,不是停用 —— 停用后评论照样写库,载荷还在
- 清理可疑评论记录前先备份数据库;若站点近期做过迁移还原,按已被入侵处置:轮换管理员密码与 salts、检查新增管理员账号