周末把 PHP 升了:两个 9.2 分未授权 RCE,8.5.12 / 8.4.27 / 8.3.36 / 8.2.35,没有完整缓解方案

2026-10-24 安全漏洞运维PHP补丁

这条不新,但这周不打,风险就一直挂着。周末是大部分站点的低峰,正是升它的窗口。

两个漏洞

CVEGHSA机理
CVE-2026-109618GHSA-w8hw-w9fx-j79w内存不足处理会在内部请求数据只初始化到一半时打断 PHP,随后的请求清理把无效数据当成有效数据
CVE-2026-109619GHSA-6wmf-4rv5-p3rp请求持有的内部状态在其支撑内存被释放后仍然存在,同一个 worker 处理的下一个请求可能在正常初始化重置之前就用上这份脏状态

两个都评 CVSS v4.0 9.2,都能导致未授权远程代码执行。

影响范围

所有对外提供 Web 请求的 PHP 安装都在内:PHP-FPM、Apache 的 mod_php、php-cgi、FrankenPHP、LiteSpeed。官方点名 mod_php 风险最高,并且说已经有演示 exploit——未授权请求可以在任何应用代码运行之前就触发攻击。

这句话的意思是:你的业务代码写得再干净也没用,攻击发生在它之前。

修复版本

  • PHP 8.5.12
  • PHP 8.4.27
  • PHP 8.3.36
  • PHP 8.2.35

官方原话:“There are no complete mitigations, updating is the only safe choice.”——没有完整缓解方案,升级是唯一安全的选择。

顺带两个时间节点:PHP 8.2 将在 2026 年 12 月 31 日 EOL,之后不再有安全修复。7.4、8.0、8.1 已经 EOL,官方只给了最小源码 backport(PHP-7.4-CVE-2026-109618-109619 这类分支),不再有版本号升级。

10 月 23 日追加的那份

官方又发了一份信息性公告,涉及 CVE-2026-115560(session upload progress 场景下的一个低概率 RCE 路径),完整修复要等下一个常规 bugfix 版本。在那之前,官方建议 设 session.upload_progress.enabled=0。这个设置本来就已经列在 CVE-2026-109619 公告的缓解措施里。

对我有什么用

一人公司里跑 PHP 的比例比想象中高——WordPress、Discuz、各种老客户站点、还有你自己那些”能用就别动”的内部工具。这些恰恰是最久没升级的那一批。

今天能做的判断很简单:只要你的 PHP 在对外提供 Web 请求,且版本低于上表,就该升。 没有”先看情况”这个选项,官方已经把话说死了。

泼冷水

  • 这是 10 月 21 日发的补丁,不是今天的新闻。 我把它放在今天,是因为周末是升级窗口,而且 10 月 23 日那份追加公告给了新的动作项。别理解成”今天刚爆的洞”。
  • EOL 分支没有版本号可用。 你的站点如果还在 7.4 或 8.0,这次要么自己打源码 backport,要么连着 PHP 大版本一起升——后者往往意味着主题和插件要一起动,工作量不小,但拖不过 2026 年底。
  • 缓解措施只是降低暴露面,不是修复。 官方明确说它不会让你的安装变安全。别拿调 memory_limit、post_max_size 当成交差。
  • 容器镜像不会自己更新。 如果你的站跑在 php:8.4-fpm 这种固定标签上,那要重新 docker build --pull 才会拿到新版本。镜像 ID 不变就等于没打补丁。
  • 托管面板和虚拟主机你未必能自己升。 这种情况能做的只有催服务商,以及把 session.upload_progress.enabled=0 先设上。

具体建议

  1. 先查版本:php -v(命令行)和站点里的 phpinfo()。命令行版本和 FPM 版本可能不一样,两个都查。
  2. 升到对应分支的最新版。Docker 用 docker build --pull --no-cache,别用缓存。
  3. 升完立刻在 php.ini 里加 session.upload_progress.enabled=0,等下一个常规版本再评估要不要开回来。
  4. 跑在 8.2 的,把”年底前升到 8.4 或 8.5”排进日程。12 月 31 日之后是硬墙。
  5. 跑在 7.4 / 8.0 / 8.1 的:这次要么用官方 backport 自己编,要么把大版本升级当成正经项目排期。继续拖的代价是下一次 CVE 连 backport 都没有。
  6. 控制面板型的虚拟主机,先确认面板有没有推更新;没有就开工单,并把上面那条 session.upload_progress 配好。

原文(2026 年存档,含 10 月 21 日与 10 月 23 日两份公告):https://www.php.net/archive/2026.php

原文出处 · 事实以此为准
PHP 官方 · 2026 年新闻存档与安全公告
阅读原文 ↗