GiveWP Donation插件中存在一个严重的安全漏洞(编号为CVE-2025-0912),该漏洞已导致超过10万家WordPress网站面临未经身份验证的远程代码执行(RCE)攻击风险。该漏洞的CVSS评分为9.8(严重),其根源在于插件在处理Donation 表单时未能正确验证用户输入的数据。
漏洞详情与利用方式
该漏洞的核心问题在于插件对Donation 表单中card_address参数的处理方式。在3.19.4及更早的版本中,插件未能对通过该字段传递的序列化数据进行验证或清理,从而导致了PHP对象注入(CWE-502)问题。在处理Donation 数据时,give_process_donation_form()函数未经验证就直接反序列化用户输入,使得攻击者能够构造恶意载荷,实例化任意PHP对象。
此外,插件代码库中存在可利用的POP(面向属性编程)链,使得攻击者能够通过串联诸如析构函数或wakeup方法等“小工具”方法,将对象注入漏洞升级为系统命令执行。据Wordfence的报告,该漏洞绕过了WordPress的安全随机数(nonce)机制,且无需身份验证,任何外部攻击者均可利用。
成功利用此漏洞可能导致以下后果:
- 任意文件删除(包括wp-config.php)
- 数据库凭据泄露
- 通过Web shell安装后门
潜在影响与应对措施
GiveWP插件广泛应用于非营利组织、宗教团体和政治活动的捐赠系统中,因此受影响的网站可能面临财务欺诈、捐赠者数据泄露以及声誉损害等风险。攻击者可能篡改网站内容、重定向捐赠款项,甚至部署加密货币挖矿程序。此外,由于该插件集成了PayPal和Stripe等支付网关,还可能导致交易系统的二次泄露。
Defiant的安全分析师警告称,尽管修复该漏洞的3.20.0版本已经发布,但仍有超过30%的受影响网站未进行更新。新版插件通过实施严格的输入验证和移除不安全的反序列化逻辑解决了这一问题。
建议的缓解措施
网站管理员应立即采取以下行动:
- 将GiveWP插件更新至3.20.0或更高版本。
- 审计服务器日志,检查是否存在针对/wp-json/givewp/v3/donations路径的可疑POST请求。
- 部署Web应用防火墙(WAF)规则,阻止包含序列化数据的card_address参数。
- 监控未经授权的文件更改或新管理员用户的创建。
对于无法立即修补的网站,暂时可通过禁用捐赠小工具或限制表单提交为经过reCAPTCHA验证的用户来缓解风险。
尽管目前尚未观察到该漏洞被主动利用,但其利用简单且影响广泛,极有可能成为勒索软件组织的目标。WordPress安全团队敦促使用GiveWP插件的组织订阅漏洞披露信息,并实施如MalCare的实时漏洞防护等原子级安全措施。
总结
鉴于WordPress驱动着全球超过43%的网站,此次漏洞再次凸显了在非营利组织等关键Web基础设施中,严格进行第三方插件审计和自动化补丁管理的必要性。