CVE-2025-11166CVE-2025-11166是WordPress的WP Go Maps(原WP Google Maps)插件中存在的一个跨站请求伪造(CSRF)漏洞。该漏洞影响所有9.0.46及以下版本,由Wordfence安全团队的安全研究员发现并报告。
WP Go Maps是一款广受欢迎的WordPress地图插件,允许用户在网站上嵌入Google地图并添加自定义标记、几何图形等地图元素。由于该插件在实现上存在安全缺陷,暴露了REST API端点用于状态变更操作,但未对CSRF令牌进行充分验证,同时部分破坏性操作可通过GET请求直接访问且没有设置permission_callback权限检查。
该漏洞的CVSS 3.1评分为5.4分,属于中危级别。其攻击向量为网络攻击(AV:N),攻击复杂度低(AC:L),无需权限(PR:N),但需要用户交互(UI:R)。该漏洞对机密性影响较低(C:L),对完整性和可用性影响均为低(I:L, A:L)。
该漏洞的危害在于:未认证的攻击者可以通过构造恶意页面,诱使已登录的管理员点击链接,从而执行创建、更新或删除地图标记及几何要素的操作。此外,匿名用户还可以通过不安全的GET请求触发大量标记的批量删除操作,对网站地图数据造成破坏。
该漏洞的核心问题在于WP Go Maps插件的REST API实现存在多处安全缺陷:
1. **CSRF令牌验证缺失**:插件通过AJAX桥接机制暴露了REST API端点用于处理状态变更操作(如创建、更新、删除标记和几何要素),但这些端点未对CSRF令牌(nonce)进行充分验证。WordPress中的CSRF保护通常通过wp_nonce_field生成令牌并在服务端验证,但该插件的REST路由绕过了这一机制。
2. **permission_callback缺失**:根据WordPress REST API规范,自定义路由应当实现permission_callback函数来验证请求者的权限。然而,插件中部分路由(特别是涉及破坏性操作的路由)未设置此回调函数,导致任何用户(包括未认证的匿名用户)都可以调用这些端点。
3. **GET请求处理破坏性操作**:REST API规范建议GET请求仅用于读取操作,不应用于状态变更。但该插件的破坏性操作(如批量删除标记)可通过GET方法触发,这违反了REST设计原则,并使得CSRF攻击更加容易实施(因为GET请求可简单地通过<img>标签触发)。
攻击利用方式:攻击者可以构造一个包含恶意GET请求URL的网页(如<img src="https://target-site.com/wp-json/..." />),当已登录的管理员访问该页面时,浏览器会自动发送请求并附带管理员的认证Cookie,从而在管理员不知情的情况下执行状态变更操作。对于批量删除操作,甚至不需要管理员登录,匿名用户即可直接发送GET请求触发。