WordPress 于 2026 年 9 月 22 日发布了安全公告 GHSA-7hp8-65ch-5whp,介绍 CVE-2026-87902——页面模板解析中的一个路径遍历缺陷。公告将其 CVSS v4 评分定为严重级别 9.2。最关键的限定在于,这一风险具有条件性:无需身份验证的网络攻击者或许能够让 get_page_template() 包含当前启用主题目录之外某个可读取的本地 PHP 文件,但只有在其他部署和主题条件同时满足时,才会发生远程代码执行。下文所述漏洞机制和版本清单均来自 WordPress 自身的调查结论;所提供材料不包含独立复现或其他安全报告。

CVE-2026-87902 的 WordPress 安全公告卡片
针对 CVE-2026-87902 发布的 WordPress 安全公告 GHSA-7hp8-65ch-5whp。github.com

开头段落介绍了 WordPress 公告及其严重但具有条件性的路径遍历漏洞。

利用过程始于控制模板解析,而非获取管理员账户。根据公告,当前启用的子主题或父主题必须包含一个位于顶层且名称以 page- 开头的目录,例如 page-templates。WordPress 将传统主题 Twenty Twelve 和 Twenty Fourteen 列为示例,同时指出第三方主题 Neve、Hestia 和 Sydney 也受到影响。这些名称仅用于说明该条件;公告并未表示只有这些主题能够满足条件。因此,网站所有者应检查当前主题层级,而不应只依赖主题名称清单。

仅有匹配的目录本身并不足够。还必须存在一个被选中的本地 PHP 文件,并且执行 PHP 的账户能够读取该文件。公告将 pearcmd.php 列为潜在目标之一,并说明了在 register_argc_argv 启用时已知的 PEAR 命令执行转向过程。公告特别指出,官方 PHP Docker 镜像在这方面存在风险;如果 cPanel 使用低于 8.5 版本的 PHP,其默认配置也会受到影响。这些例子解释了为何该缺陷在某些托管环境中可能达到严重级别,但并不意味着每个 WordPress 安装都暴露了必要的目标文件或 PHP 设置。

这一区别对实际运营至关重要。一旦前提条件具备,无需身份验证的请求、无需任何权限且无需受害者交互,使潜在攻击可通过网络触达,而且相对简单。然而,公告的攻击前提指标记录,必须满足相应的部署环境条件。因此,现有证据支持一种条件性风险模型:暴露程度取决于易受攻击的 WordPress 代码、符合条件的主题布局、可读取的 PHP 目标以及相关 PHP 配置之间的共同作用。这些证据并不能证明所有使用上述主题的安装都面临远程代码执行风险,所提供公告也未证明该漏洞已在野外遭到积极利用。

WordPress 表示,7.1.2 版本包含修复,并且该修复已向后移植到从 WordPress 4.7 开始的各个受支持旧分支。列出的已修复版本为 7.1.2、7.0.6、6.9.9、6.8.10、6.7.9、6.6.9、6.5.12、6.4.12、6.3.12、6.2.13、6.1.14、6.0.16、5.9.18、5.8.17、5.7.19、5.6.21、5.5.22、5.4.23、5.3.25、5.2.28、5.1.26、5.0.29、4.9.33、4.8.32 和 4.7.37。公告列出的每个紧邻其前的版本范围均被标记为受影响,最早可追溯至 4.7.0。

对管理员而言,首要的实际步骤是将已安装的 WordPress 版本与对应分支的修复版本进行比较,而不是只检查安装是否属于较新的主版本。一个较旧但已完全修补的分支,可能看起来已经过时,却仍包含这项修复;反之,如果当前主版本低于其分支的修复版本,则仍然存在漏洞。升级后,负责高价值或面向互联网系统的运维人员还应单独评估当前主题是否包含符合条件的 page-* 目录,以及 PHP 运行时是否暴露了可用于上述文件包含链的可读文件。

公告将负责任披露归功于 Robert Ressl,并将该弱点归类为 CWE-98,涵盖对 PHP include 或 require 操作中所用文件名的控制不当。该分类与所报告的故障发生在模板文件选择期间相一致。不过,这一分类并不意味着攻击者可以包含任意远程 URL,或绕过操作系统的读取权限。文档所述路径要求存在一个 Web 服务器账户能够读取的本地 PHP 目标,随后还需满足其他条件,才能将文件包含转化为代码执行。

因此,对读者而言,核心结论比标题所显示的严重程度更窄。CVE-2026-87902 值得及时修复,因为一旦环境合适,就不需要身份验证、用户交互或复杂的攻击步骤。与此同时,现有披露并不支持将所有 WordPress 网站视为具有同等暴露风险。升级到正确的修复版本会消除易受攻击的代码路径;评估主题结构和 PHP 部署条件,则有助于运维人员了解剩余风险,并优先处理那些可能曾具备完整利用链的系统。