11 月 3 日,CISA 把 CVE-2026-119977 列入已知被利用漏洞目录(KEV),要求联邦民事机构在 11 月 6 日前完成修复。这是一个 CVSS 3.1 评分 8.1 的 TOCTOU 竞态条件漏洞,位置在 WordPress 核心的整包升级流程里:升级期间会生成可预测、且能被 Web 直接访问的暂存目录,未认证攻击者只要在升级窗口内抢到暂存路径,就能在服务器上执行任意代码。影响 WordPress 4.7 至 7.1.3,修复版本 7.1.4 已于 10 月 28 日发布,并向仍在维护的旧分支回补。
事件概述
漏洞由 WordPress 安全团队修复,GitHub 安全公告编号 GHSA-4w3m-c66w-69mg。CISA 的描述很直接:「WordPress 核心包含一个 TOCTOU 竞态条件漏洞,可能允许未认证攻击者在升级窗口期间于服务器上执行代码。原因是整包核心升级过程中使用了可预测、可通过 Web 访问的暂存路径。」
技术细节
WordPress 做整包升级时,会先把新版本下载并解压到 wp-content/upgrade/ 下的临时目录,再由安装程序接管、迁移文件、更新数据库。问题出在两个地方叠在一起:目录名可预测,且这个目录默认没有被挡在 Web 根之外。
攻击者不需要任何账号。从公开披露的探测特征看,打的正是暂存目录里的 setup-config.php——这个文件是 WordPress 首次安装时的配置向导,一旦被外部触发,等于让站点在攻击者的引导下重新走一遍安装流程。整个过程依赖「升级正在跑」这个时间差,也就是竞态;窗口一过,目录被清理,机会就没了。
真正让它变成现实威胁的是自动化程度。Wordfence 的遥测显示:漏洞公开后的头 21 小时,针对暂存 setup-config.php 安装路径的请求超过 18500 次;截至 11 月 4 日,过去 24 小时内被拦截的利用尝试仍有 12632 次。Previdian 的蜜罐在 10 月 30 日记录了 3 次来自英国 IP 的利用尝试。
影响评估
CVSS 8.1,网络可达、不需要认证,但需要「升级窗口」这个前置条件,单次窗口通常只有几十秒到几分钟。这决定了它不会像插件漏洞那样一夜之间打穿一片,却对两类站点格外危险:
- 开启了自动更新的站点——升级窗口随机出现,运维完全不知情,等于把机会主动递出去
- 升级中途失败、暂存目录长期残留的站点——窗口是常开的,本质退化成普通的目录暴露
考虑到 WordPress 在国内建站市场的占有率,这条漏洞的实际暴露面比评分看上去更大。已经确认被利用,就不能只当「高危漏洞」处理,要按「可能已失陷」处理。
另一个容易被忽略的放大因素与托管环境有关:一旦某个平台统一开启了自动更新,多站点的升级窗口会在相近时间出现,攻击者要做的就从「猜窗口」变成了「等窗口」。这也是为什么这条漏洞在公开披露后几小时就出现了上万次探测——自动化工具不需要知道目标是谁,只需要知道对方可能在升级。
修复建议
- 升级到 7.1.4;暂时无法升级的旧分支,打对应维护分支的安全更新
- 检查
wp-content/upgrade/下是否有残留目录,清空内容但保留目录本身,并设为禁止外部访问 - Nginx 加
location ^~ /wp-content/upgrade/ { deny all; };Apache 用<Directory>配合Require all denied - 日志里检索
wp-content/upgrade与setup-config.php返回 200/302 的记录,重点看 10 月 28 日之后 - WAF 侧对
/wp-content/upgrade/路径直接拦截,正常访客没有任何理由访问它
打完补丁还要补一轮取证:查 wp_users 里陌生的管理员账号、wp_options 里被改动的 siteurl 与 home,以及 wp-config.php 的修改时间。攻击者一旦跑通了安装向导,第一件事就是给自己建管理员,这一步留下的痕迹比 WebShell 更容易发现。