skelersecurity/wordpress-skelersecurity-core-security-CVE-2026-63030
GitHub: skelersecurity/wordpress-skelersecurity-core-security-CVE-2026-63030
该插件为 WordPress 站点提供应用层的临时防护,要求 REST Batch API 路由必须经过身份验证,以缓解 wp2shell 漏洞链的威胁。
Stars: 0 | Forks: 0
# SkelerSecurity 核心安全插件
[](https://wordpress.org/)
[](https://www.php.net/)
[](LICENSE)
## 概述
**SkelerSecurity 核心安全插件** 要求在 WordPress 处理发往核心 REST Batch API 路由的请求之前进行身份验证:
- `/wp-json/batch/v1`
- `/?rest_route=/batch/v1`
它被设计为一种针对 WordPress REST Batch API 漏洞链(通常被称为 **wp2shell**)的深度防御控制手段,作用范围较窄。该插件使用 WordPress 的 `rest_pre_dispatch` filter 来拒绝匿名的 batch 请求并返回 HTTP `401 Unauthorized`,同时保留已通过身份验证的 WordPress 和 REST API 用户的访问权限。
## 威胁背景
公开报告描述了一个关键的 WordPress Core 漏洞链,涉及 REST Batch API 路由混淆(**CVE-2026-63030**)和相关的 SQL 注入问题(**CVE-2026-60137**)。受影响的 endpoint 可以通过美观固定链接(pretty-permalink)和查询字符串 REST 路由两种形式访问。
报告受影响的核心版本包括:
| 分支 | 受影响的版本 | 已修复版本 |
|---|---:|---:|
| WordPress 6.9 | 6.9.0–6.9.4 | 6.9.5 |
| WordPress 7.0 | 7.0.0–7.0.1 | 7.0.2 |
WordPress 6.8 分支也在 **6.8.6** 中收到了相关的强化。请为您的环境使用最新可用的受支持 WordPress 版本,而不是将版本范围视为延迟更新的理由。
## 插件的功能
- 要求 `/batch/v1` REST 路由具有经过身份验证的有效 WordPress 用户。
- 同时覆盖 `/wp-json/batch/v1` 和 `?rest_route=/batch/v1`,因为 WordPress 会将两者解析为同一个 REST 路由。
- 对匿名请求返回带有 HTTP 状态 `401` 的标准 REST 错误。
- 在 REST 分发早期运行(`rest_pre_dispatch` 优先级为 `-1000`)。
- 允许经过身份验证的 REST 请求,包括 WordPress 识别的有效 REST 身份验证方法。
- 提供 **工具 → SkelerSecurity Core** 设置页面。
- 包含一个可选的、最大程度保护隐私的拦截尝试审计日志。
- 当从 WordPress 中删除该插件时,删除其选项和日志。
## 插件*不*做的事情
- 它**不会**修补 WordPress Core 或消除底层漏洞。
- 如果 WordPress 在插件加载之前发生故障,它**无法**保护安装。
- 它**不能**替代 WAF、反向代理、服务器强化、监控、备份或事件响应。
- 它**无法**确定站点之前是否遭到入侵。
- 它**不会**拦截整个 REST API。
为了获得最强的临时覆盖范围,请将此插件与 WAF 或反向代理规则结合使用,以拦截对上述列出的两种 endpoint 形式的匿名请求。
## 要求
- WordPress 5.6 或更高版本
- PHP 7.2 或更高版本
- 需要管理员权限以安装和激活插件
## 安装说明
### 选项 1:WordPress 后台上传
1. 将项目下载为 ZIP 压缩包,或使用发布包。
2. 在 WordPress 后台中,打开 **插件 → 安装插件 → 上传插件**。
3. 选择 ZIP 压缩包并选择 **立即安装**。
4. 激活 **SkelerSecurity Core Security Plugin**。
5. 打开 **工具 → SkelerSecurity Core** 以确认已启用保护。
### 选项 2:文件系统 / SSH / FTP
1. 将 `skelersecurity-core-security` 目录复制到:
wp-content/plugins/
2. 在 **插件 → 已安装的插件** 中激活该插件。
3. 在 **工具 → SkelerSecurity Core** 查看插件状态。
### 选项 3:WP-CLI
```
wp plugin activate skelersecurity-core-security
```
## 配置
该插件在激活后立即启用。访问 **工具 → SkelerSecurity Core** 进行管理:
| 设置 | 默认值 | 描述 |
|---|---:|---|
| Batch API 保护 | 已启用 | 要求对核心 REST Batch API 路由进行身份验证。 |
| 最小化审计日志 | 已启用 | 记录匿名 Batch API 请求被拦截的时间。 |
| 保留条目数 | 50 | 本地审计条目的保留限制;可配置为 10 到 200。 |
### 审计日志隐私
可选的审计日志仅存储:
- UTC 时间戳
- HTTP 方法
- REST 路由(`/batch/v1`)
它故意**不**记录 IP 地址、cookie、authorization header、request body、用户名或其他敏感的请求数据。
## 预期行为
| 请求类型 | 启用保护时的预期结果 |
|---|---|
| 对 `/wp-json/batch/v1` 的匿名请求 | 被 HTTP 401 拦截 |
| 对 `/?rest_route=/batch/v1` 的匿名请求 | 被 HTTP 401 拦截 |
| 对 `/batch/v1` 的已验证 WordPress/REST 请求 | 允许进行正常的 WordPress 授权处理 |
| 对其他 REST 路由的请求 | 不受此插件影响 |
匿名拦截响应使用的错误代码如下:
```
rest_batch_authentication_required
```
## 推荐的紧急部署计划
1. **立即更新 WordPress Core。** 这是真正的修复方案。
2. 确认生产环境、预发布环境、活动环境和旧站点上的 Core 版本均已更新。
3. 仅在需要时将此插件作为临时的应用层缓解措施启用。
4. 在 WAF、CDN、反向代理或 Web 服务器上,拦截符合以下两项的匿名请求:
- `/wp-json/batch/v1`
- `rest_route=/batch/v1`
5. 检查访问日志、管理员账户、已安装的插件/主题、上传文件和必须使用插件(must-use plugins),以寻找入侵迹象。
6. 如果发现可疑活动,请将主机视为可能已遭到入侵,并遵循您的事件响应流程。
7. 在 Core 补丁修补和验证之后,决定您的环境是否仍然需要临时的 endpoint 限制。
## 兼容性和操作注意事项
WordPress 管理工作流、插件、主题、移动客户端或外部集成可能会使用 Batch API。经过身份验证的请求仍然被允许,但在启用插件后,请测试关键业务功能。
潜在的影响可能包括有意向 Core Batch API 提交**未经身份验证的**请求的集成。如果需要该行为,请仔细评估风险并实施经过适当身份验证的集成,而不是广泛暴露 endpoint。
## WAF 和反向代理指南
网络层的缓解措施应覆盖两种路由样式。仅拦截 `/wp-json/batch/v1` 是不够的,因为 WordPress 也可以通过 `rest_route` 查询参数路由请求。
推荐的规则逻辑:
- 拒绝规范化路径为 `/wp-json/batch/v1` 的匿名请求(允许可选的尾部斜杠)。
- 拒绝带有查询参数 `rest_route=/batch/v1` 的匿名请求。
- 使用适当的规则 ID 和标准请求元数据记录拦截决定。
- 除非政策要求并受到保护,否则避免在日志中保留敏感的 request body 或凭证。
请在您的环境中测试该规则。如果无法立即部署 WAF 更改,此插件非常有用,但它不应阻止您修补 WordPress Core。
## 安全报告
请**不要**通过公开的 GitHub issue 报告安全漏洞。
请将疑似漏洞私下报告给您的安全联系人或仓库所有者。包括清晰的描述、受影响的版本、可重现的概念验证(PoC)和影响评估。请勿包含凭证、个人数据或破坏性的 payload。
## 参考文献
- Hadrian — [wp2shell:WordPress Core REST API 中的认证前 RCE](https://hadrian.io/blog/wp2shell-a-pre-authentication-rce-in-wordpress-cores-rest-batch-api)
- Patchstack — [WordPress Core 7.0.2 中修复的未认证 SQL 注入](https://www.patchstack.com/articles/unauthenticated-sql-injection-in-wordpress-core-fixed-in-7-0-2/)
- Cyber Insider — [WordPress 针对严重的“wp2shell”RCE 漏洞发布紧急更新](https://cyberinsider.com/wordpress-releases-emergency-update-for-critical-wp2shell-rce-flaw/)
## 许可证
该项目基于 [GNU General Public License v2.0 或更高版本](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) 获得许可。
标签:CISA项目, OpenVAS, PHP, REST_API安全, Web安全, WordPress插件, 恶意软件收集, 文件完整性监控, 漏洞防护, 蓝队分析