事件概述
2026 年 8 月 27 日,Patchstack 在 CVE-2026-82222 的修复版本随 GiveWP 4.16.7.2 一同上线后披露,GiveWP WordPress 捐赠插件被曝存在一处 未认证远程代码执行漏洞,CVSS 3.1 评分 10.0 满分,CWE-502 反序列化不安全使用。GiveWP 是 WordPress 生态最流行的捐赠与筹款插件,全球安装量超过 10 万,非营利组织、慈善机构与公益项目广泛依赖其构建捐赠流程。漏洞由独立研究员 Udin Chan 于 7 月 28 日通过 Patchstack 漏洞情报平台报告,插件厂商在 8 月 27 日发布 4.16.7.2 版本进行修补。攻击者无需任何 WordPress 凭据即可访问漏洞,并最终以插件服务账户身份执行任意系统命令,植入持久 WebShell、外泄捐赠者敏感数据、横向渗透内网。
技术细节
CVE-2026-82222 是三条独立缺陷组合而成的攻击链:
- 注册动作绕过:GiveWP 暴露一个未认证注册动作
give_action=user_register,完全忽略 WordPress 全局的users_can_register设置,即便站点在Settings → General → Membership中关闭注册,攻击者仍然能创建账户并获得 WordPress 登录 Cookie; - PHP 对象注入:捐赠处理流程会把攻击者控制的数据写入
wp_give_sessions会话表,攻击者把构造好的反序列化对象植入用户资料并通过一次“捐赠”触发,unserialize()在前端请求时执行; - gadget chain:插件自带的 TCPDF 与 GiveWP 自身的
\Give\TestData测试类提供__destruct、__wakeup、__toString等魔法方法调用链,可调用任意系统命令。
完整利用链需要满足以下前置:
- WordPress 站点已激活 GiveWP 且至少存在一个已发布的捐赠表单;
- 至少一个支付网关已启用;
- 站点至少存在一个不含
formBuilderSettings的“传统”表单,常见于历史站点升级、选项式表单编辑器或导入旧表单的场景; - 受影响版本区间:4.16.6 至 4.16.7.1,4.16.5.1 及更早版本默认即可达成完整命令执行。
Patchstack 描述服务器在处理任意前端页面请求时执行反序列化,HTTP 500 + wp_give_sessions 中的恶意记录是最直接的标志。CVSS 向量 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H 表明网络可达、无需特权、无需用户交互、影响范围突破组件本身。
影响范围
- GiveWP ≤ 4.16.7.1(CVSS 3.1 10.0/CVSS 4.0 9.3),4.16.6 起默认链可达;
- WordPress 站点中超过 10 万 GiveWP 安装,多数用于教育、医疗救助、社区募捐、宗教机构、海外 NGO 等;
- 由于捐赠流程天然要接入 Stripe/PayPal 等支付网关,被攻陷站点会同时影响捐赠者数据与支付凭据;
- 漏洞基线包括 PCI DSS 4.0 / 6.2.4、NYDFS 23 NYCRR 500 / 500.08、DORA / Article 9、 NIS2 / Article 21、CISA ZTMM 2.0 ZT.AM-3 等。
修复建议
- 立即在 WordPress 后台 “Plugins → Installed Plugins” 把 GiveWP 升级到 4.16.7.2 或更高版本;如插件版本菜单未自动出现,访问 wordpress.org 手动下载最新版覆盖;可使用 WP-CLI:
wp plugin update give,并用wp plugin get give --field=version校验 ≥ 4.16.7.2; - 升级后建议立即轮换 WordPress 管理员密码、数据库口令、SMTP 凭据与支付网关 secret;
- 检查
wp_users是否出现非管理员创建的陌生账户、wp_give_sessions表中是否存在超长反序列化字符串、Web/PHP 错误日志中是否出现异常未捕获异常的 HTTP 500; - 在 WAF/CDN 端拦截针对
?give_action=user_register的非预期 POST 请求,并阻止 Cookie 内携带O:序列化标记的访问; - 梳理所有使用传统表单(非 Block Editor)的捐赠页面,使用 GiveWP 自带的 Form Migration 工具迁移到新版 Form Builder;
- 为捐赠者发布公开通告,提示其关注信用卡与邮箱异动。