GiveWP WordPress 捐赠插件曝未认证 CVSS 10.0 RCE:10 万站点面临完整服务器接管威胁

事件概述

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 等魔法方法调用链,可调用任意系统命令。

完整利用链需要满足以下前置:

  1. WordPress 站点已激活 GiveWP 且至少存在一个已发布的捐赠表单;
  2. 至少一个支付网关已启用;
  3. 站点至少存在一个不含 formBuilderSettings 的“传统”表单,常见于历史站点升级、选项式表单编辑器或导入旧表单的场景;
  4. 受影响版本区间: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 等。

修复建议

  1. 立即在 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;
  2. 升级后建议立即轮换 WordPress 管理员密码、数据库口令、SMTP 凭据与支付网关 secret;
  3. 检查 wp_users 是否出现非管理员创建的陌生账户、wp_give_sessions 表中是否存在超长反序列化字符串、Web/PHP 错误日志中是否出现异常未捕获异常的 HTTP 500;
  4. 在 WAF/CDN 端拦截针对 ?give_action=user_register 的非预期 POST 请求,并阻止 Cookie 内携带 O: 序列化标记的访问;
  5. 梳理所有使用传统表单(非 Block Editor)的捐赠页面,使用 GiveWP 自带的 Form Migration 工具迁移到新版 Form Builder;
  6. 为捐赠者发布公开通告,提示其关注信用卡与邮箱异动。

参考来源