🟠 高危 | CVE-2026-15212 — The WPO365 | Login plugin for WordPress is vulnera...
🟠 【深度分析】高危安全漏洞:CVE-2026-15212
CVSS 评分: 高危(8.8)🟠 状态: Deferred 发布时间: 2026-07-23
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-15212 |
| CVSS 评分 | 8.8 🟠 |
| 严重程度 | 高危 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
| CWE 分类 | CWE-352 |
| 发布时间 | 2026-07-23 |
| 最后更新 | 2026-07-24 |
| 状态 | Deferred |
| 数据来源 | security@wordfence.com |
CVSS 评分:8.8(高危)
CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
危害等级: 严重(可能完全接管 WordPress 站点)
📌 漏洞概述
CVE-2026-15212 是一个存在于 WPO365 | Login WordPress 插件中的跨站请求伪造(CSRF)漏洞。该漏洞允许未认证攻击者诱骗已登录的管理员执行非预期操作,从而覆盖插件配置选项,最终实现新建用户默认角色设为管理员、启用 SCIM REST 接口并植入攻击者已知的秘密令牌,进而完全控制 WordPress 站点。
漏洞在 2026 年 7 月 23 日公开,目前状态为 Deferred(暂缓),表明厂商尚未发布官方补丁。
🧩 受影响组件与版本
| 组件 | 受影响版本 |
|---|---|
| WPO365 | Login (WordPress 插件) | ≤ 43.2(包括 43.2) |
🔍 漏洞原理分析
1. 漏洞成因
漏洞根因位于 Ajax_Service::verify_ajax_request() 辅助函数。该函数负责验证 AJAX 请求的合法性,正常情况下应调用 wp_verify_nonce() 检查防伪令牌(nonce)。然而,开发者为了灵活性,将 nonce 检查开关设计成了一个名为 enable_nonce_check 的布尔选项,并通过 get_global_boolean_var() 方法读取。
问题在于:WP‑O365 的默认配置数组 wpo365_options 中并未包含 enable_nonce_check 这个键。当 get_global_boolean_var() 在数组中查找不到该键时,会将其视为 false 并返回,导致 wp_ajax_wpo365_update_settings 对应的处理函数 Ajax_Service::update_settings 完全跳过 nonce 验证。
2. 攻击路径
- 前置条件:攻击者需要欺骗一个具有
manage_options权限的管理员点击恶意链接(例如通过钓鱼邮件、社交工程等)。 - 请求伪造:攻击者构造一个跨域 POST 请求,目标为
wp-admin/admin-ajax.php,指定action=wpo365_update_settings,并附上 base64 编码的 JSON 载荷settings。 - 无 CSRF 保护:由于 nonce 检查被跳过,后端直接信任该请求的来源,将
settings载荷传入Options_Service::update_options()方法。 - 配置覆盖:
update_options()会直接将所有键值对合并到wpo365_options中,未做键名白名单过滤。攻击者因此可以写入任意插件选项。 - 关键恶意选项示例:
enable_scim→true:启用 SCIM REST 端点(/wp-json/wpo365/v1/scim/)。scim_secret_token→ 攻击者已知的密钥。new_usr_default_role→administrator:后续通过 SCIM 创建的新用户自动获得管理员权限。
- 结果:攻击者可直接调用 SCIM 接口创建管理员账户,实现站点完全控制。
⚠️ 影响评估
| 评估维度 | 分析 |
|---|---|
| 攻击复杂度(AC:L) | 低,攻击者仅需构造一个简单的 HTML 表单或图片链接,无需特殊技巧。 |
| 所需权限(PR:N) | 无需认证,但需依赖受害管理员处于登录状态(UI:R)。 |
| 用户交互(UI:R) | 必须诱骗管理员点击链接或加载恶意页面,属于典型的社会工程攻击。 |
| 影响范围(S:U) | 未改变,攻击仅针对该 WordPress 站点自身。 |
| 机密性影响(C:H) | 高,攻击者可读取任意插件配置甚至站点敏感数据。 |
| 完整性影响(I:H) | 高,可覆盖插件配置,创建管理员账户。 |
| 可用性影响(A:H) | 高,攻击者可通过修改配置导致服务不可用,或彻底接管站点。 |
总体危害评分:8.8(高危)
实际利用难度不高,且一旦成功即可获得站点最高权限,易成为针对性攻击的目标。
🔧 修复建议
官方补丁(尚未发布)
由于厂商目前尚未发布修复版本(漏洞状态为 Deferred),请持续关注插件更新页面,及时升级至 43.3 或更高版本。
临时缓解措施
强制启用 CSRF 保护
在主题的functions.php或插件代码中,手动确保enable_nonce_check默认值为true。可尝试添加如下过滤器(需插件支持):add_filter( 'pre_option_wpo365_options', function( $value ) { if ( ! is_array( $value ) ) $value = []; $value['enable_nonce_check'] = true; return $value; });禁用 SCIM 端点
如果业务不需要 SCIM 功能,可通过 Web 服务器配置(如 Nginx/Apache)阻止对/wp-json/wpo365/v1/scim/的访问,或在wp-config.php中定义常量:define( 'WPO365_DISABLE_SCIM', true );限制管理员操作
严格管理管理员账户权限,减少被钓鱼风险;部署 Web 应用防火墙(WAF)规则拦截敏感 AJAX 工厂调用。监控异常请求
在访问日志中监控admin-ajax.php?action=wpo365_update_settings请求,尤其注意来源 Referer 异常或载荷包含 base64 的情况。
📚 参考资料
| 来源 | 链接 |
|---|---|
| NVD 官方页面 | https://nvd.nist.gov/vuln/detail/CVE-2026-15212 |
| CWE-352(跨站请求伪造) | https://cwe.mitre.org/data/definitions/352.html |
| Wordfence 安全公告(原始报告) | 待补充(security@wordfence.com) |
注意:本文分析基于 NVD 公开数据,某些技术细节(如底层
Options_Service::update_options()的具体实现)来自 CVE 描述中的推断,实际可能存在差异。建议在测试环境中验证后再实施缓解措施。