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 核心安全插件 [![WordPress](https://img.shields.io/badge/WordPress-5.6%2B-21759B?logo=wordpress&logoColor=white)](https://wordpress.org/) [![PHP](https://img.shields.io/badge/PHP-7.2%2B-777BB4?logo=php&logoColor=white)](https://www.php.net/) [![License](https://img.shields.io/badge/License-GPL--2.0--or--later-blue.svg)](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插件, 恶意软件收集, 文件完整性监控, 漏洞防护, 蓝队分析