WordPress 这周又修了个核心洞,编号 CVE-2026-119977。它有点意思的地方是位置——不在哪个函数里,而在「正在升级」的那几分钟。

先把结论摆出来。影响 WordPress 核心 4.7 到 7.1.3;未认证、可远程;Wordfence 报的 CVSS 3.1 是 8.1(AV:N/AC:H/PR:N/UI:N)。11 月 3 号这条被 CISA 收进了 KEV(已知被利用目录),联邦机构的整改截止日给到 11 月 6 号。要修的话,升级到 7.1.4,或者升到自己那条分支的最新维护版。

机制说清楚一点,因为它跟一般的「某函数没校验参数」不是一回事。WordPress 走全量包升级时,会把新文件先解包到 wp-content/upgrade/ 底下的一个暂存目录。问题出在这个目录名是可预测的,而且很多服务器上这个路径Web 是能直接访问到的。于是升级窗口那几分钟里,一个没登录的人掐着点去请求暂存的 installer,就有可能把它推进到执行 PHP。NVD 把根因归在 CWE-367(TOCTOU,检查时与使用时不一致)——查的时候还是「文件在我这」,用的时候已经变成「公网可构造的路径」了。

这就是反差所在:平时你会觉得升级是最该做、最安全的一个动作,偏偏在这一下,它把临时目录亮出来了。修法也很直接——7.1.4 起把 staging 目录名随机化,并加了 index 防护,那条可预测路径就没了。

影响版本 / 修复版本:核心 4.7.0–7.1.3 受影响,各分支的修复版是

  • 7.1 线 → 7.1.4
  • 7.0 → 7.0.8;6.9 → 6.9.11;6.8 → 6.8.12;6.7 → 6.7.11;6.6 → 6.6.11
  • 6.5 → 6.5.14;再往下 6.x / 5.x / 4.x 各分支也都各发了一个维护版(4.7 → 4.7.39 那批)

一句话:不是只 7.1 有事,是从 4.7 一直到 7.1 全被覆盖了,「我版本不算太老」在这条上不成立。

自查(有 WP-CLI 最省事):

wp core version

# 没有 CLI,就直接读版本文件:
grep "wp_version =" wp-includes/version.php

查版本之外,顺手做两件事:看一眼 wp-content/upgrade/ 有没有残留的安装包目录,再在 Web 层(nginx/Apache 或宝塔的站点配置)把这个目录的直接访问禁掉。就算暂时排不上升级窗口,先把这层挡上,暴露面也小一截。

再说在野。有安全厂商统计,补丁出来之后 24 小时里针对这个洞的攻击尝试就过了 6 万次;Wordfence 也说自己观测到了利用尝试。所以这条不是「等等再修」的类型。

它跟前几天那条 WordPress 核心 RCE(另一个洞,走的是模板解析那条路)不是一回事,两条互不影响,只升一个另一个还在。前阵子 PHP2Shell 那条从公开到被人打出真 shell 只隔了几天也一样——未认证 RCE 这类洞,从「补丁发布」到「有人在打」的窗口,现在通常短得超出直觉。

来源:WordPress 官方 7.1.4 安全发布、CISA KEV 目录(CVE-2026-119977,2026-11-03 收录)、Wordfence 威胁情报。

自查命令输出示例:wp core version 显示 7.1.3,check-update 提示 7.1.4 可用