CVE-2025-10186CVE-2025-10186是存在于WordPress的WhyDonate免费捐赠按钮众筹筹款插件中的一个安全漏洞。该漏洞由WordFence安全团队的安全研究员发现并报告,披露日期为2025年10月15日。该漏洞的根本原因在于插件的`remove_row`函数缺少必要的能力检查(capability check),导致未经身份验证的攻击者可以调用该函数删除数据库中的数据。具体而言,攻击者可以通过构造恶意请求,调用插件提供的AJAX接口或其他入口点,触发`remove_row`函数执行,从而删除`wp_wdplugin_style`表中的任意行数据。
该漏洞的CVSS 3.1评分为5.3分,属于中等严重等级。其攻击向量为网络攻击(AV:N),攻击复杂度低(AC:L),无需任何特权(PR:N),无需用户交互(UI:N)。从影响维度来看,该漏洞对机密性无影响(C:N),对完整性有低影响(I:L),对可用性无影响(A:N)。虽然该漏洞的影响范围有限(仅限于删除样式表中的数据行),但由于无需认证即可利用,且利用复杂度极低,仍然对使用该插件的WordPress网站构成了实质性的安全威胁。
该漏洞影响了该插件的所有版本,最高至4.0.15版本。受影响的网站可能面临网站样式被恶意篡改或删除的风险,影响网站的正常展示和用户体验。建议所有使用该插件的WordPress网站管理员尽快更新到修复版本,以消除安全风险。
该漏洞的技术根源在于WordPress插件开发中常见的安全反模式——缺少能力检查(Missing Capability Check)。在WordPress插件开发中,所有涉及数据修改的AJAX接口或管理功能都应该通过`current_user_can()`函数验证当前用户是否具有执行该操作的权限。然而,WhyDonate插件的`remove_row`函数在处理删除请求时,未对调用者的身份和权限进行任何验证。
具体利用方式如下:攻击者首先识别目标网站是否安装了WhyDonate插件(版本≤4.0.15)。然后,攻击者构造一个针对插件AJAX端点(如`wp_ajax_*`或`wp_ajax_nopriv_*`钩子注册的处理函数)的HTTP请求。由于该端点使用了`wp_ajax_nopriv_`前缀,意味着即使未登录的用户也可以访问该端点。请求中包含`action`参数指向`remove_row`对应的处理器,以及要删除的行标识符(如行ID)。当服务器接收到该请求后,插件直接执行`remove_row`函数,从`wp_wdplugin_style`数据库表中删除对应的记录,整个过程不进行任何身份验证或权限检查。
由于该漏洞无需认证(PR:N)、无需用户交互(UI:N)且攻击复杂度低(AC:L),攻击者可以编写自动化脚本批量扫描并利用存在漏洞的WordPress网站。需要注意的是,虽然该漏洞的影响仅限于完整性(数据删除),但攻击者可以通过反复删除样式数据来破坏网站的正常显示,甚至可能结合其他漏洞进行更复杂的攻击链构造。