WordPress:未认证路径遍历导致条件性 RCE
一个新披露的 WordPress 漏洞允许未认证路径遍历,并在特定配置下可能导致远程代码执行,尤其是在与常见主题结构以及不安全的 PHP 环境(如官方 Docker 镜像)结合时。评论者就实际风险覆盖面展开争论,指出许多主题遵循了 WordPress 自身的目录建议,而且核心补丁现已回补到旧版本。该事件再次引发对 WordPress 安全模型、插件生态以及依赖 CVSS 基础分的广泛批评;一些人认为组织应当隔离或彻底替换 WordPress,而另一些人则强调,只要配置得当并做好加固,它仍然可以相当安全。
漏洞与影响
- 核心问题:对
get_page_template/locate_template的未清理使用,允许路径遍历,从而包含服务器上已存在的任意 PHP 文件。 - 主要前提:主题包含顶层的
page-*目录(例如page-templates/),而 WordPress 文档明确推荐这样做。几位评论者认为,这使得大量主题都存在漏洞,而不只是“寥寥几个”。 - 在全新安装中,随机用户无法上传 PHP,但攻击者可以滥用系统上任何现有的“可执行命令的 PHP”。
条件与利用链
- 示例利用链:将此缺陷与插件中众多未认证文件上传漏洞之一结合,以达到条件性 RCE;攻击者可能更偏好这种方式,而不是直接上传 webshell,以规避加固配置和日志。
- 官方 PHP Docker 镜像历史上随附启用了
register_argc_argv且未设置open_basedir的pearcmd.php,一旦实现路径遍历,这就成了一个强大的目标。 - 有人认为,在使用热门主题并搭配默认 Docker 或共享主机设置的网站上,这实际上是“可驱动式利用”的。
补丁状态与部署
- 已在 WordPress 7.1.2 中修复,并“出于礼貌”回补到 4.7 之后的分支(一个有问题的自动更新版本除外)。
- 一位评论者起初怀疑打补丁后主题是否仍需审计,但最终认为核心修复应足以消除主题行为带来的问题。
- WordPress 并不提供真正的 LTS;较旧分支依赖选择性回补,未知漏洞仍可能未被修复。
CVSS 评分争议
- 一派观点:CVSS 分数是“通灵板”式数字,容易被操纵,而且常与现实风险不符;用它们来筛选该读什么是危险的。
- 另一派观点:基础 CVSS 是衡量技术影响的有用第一步;组织应结合各自环境使用计算器和补偿性控制进行重新评分。
- 对比示例:这个 WordPress RCE(9.x)与 Hugo 工具链漏洞(同样 9.3)——数值严重性相同,但实际暴露面截然不同。
对 WordPress 安全性的评价
- 强烈批评: “RCE-as-a-Service”、“一坨垃圾”、代码混乱、类型不佳、许多未文档化 API、不安全的默认模型(站点可以写入自己的代码;上传内容常常可执行;插件极大扩大攻击面)。
- 反驳意见:它极其流行,包括高价值站点;只要有专业知识、加固和严格的插件使用纪律,仍然可以安全运行。问题往往源于低成本承包商和非专家把插件与主题“乐高式拼接”起来。
- 有人认为,流行度和可扩展性不可避免地会吸引攻击者;也有人说,仅靠流行并不能解释 WordPress 的漏洞历史。
替代方案与迁移
- 多位参与者表示已从 WordPress 迁移到静态生成器(Hugo、Astro)或大多静态的自定义 PHP,并描述:
- 运维复杂度和安全焦虑大幅降低。
- 摆脱插件冗余、黑箱行为和脆弱升级的束缚。
- 不过,即使静态工具也可能存在高 CVSS 漏洞(Hugo 例子);区别在于生成的网站是静态 HTML,因此运行时暴露要低得多。
- 对静态站点来说,评论系统仍然是难点;建议包括第三方服务和自托管的轻量系统。
更广泛的安全观察
- 路径遍历被视为一种反复出现的漏洞类别,源于糟糕的文件系统抽象;一位评论者主张通过库支持来缓解这一问题。
- 公共服务器日志显示持续存在对 PHP 漏洞的扫描,WordPress 路径和泄露的
.env文件经常成为探测目标。 - 有人推测,AI 驱动的代码分析可能会大幅增加所有生态中的已发现漏洞数量,从而挑战人们对哪类软件“最易被利用”的假设。