周末把 PHP 升了:两个 9.2 分未授权 RCE,8.5.12 / 8.4.27 / 8.3.36 / 8.2.35,没有完整缓解方案
这条不新,但这周不打,风险就一直挂着。周末是大部分站点的低峰,正是升它的窗口。
两个漏洞
| CVE | GHSA | 机理 |
|---|---|---|
| CVE-2026-109618 | GHSA-w8hw-w9fx-j79w | 内存不足处理会在内部请求数据只初始化到一半时打断 PHP,随后的请求清理把无效数据当成有效数据 |
| CVE-2026-109619 | GHSA-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先设上。
具体建议
- 先查版本:
php -v(命令行)和站点里的phpinfo()。命令行版本和 FPM 版本可能不一样,两个都查。 - 升到对应分支的最新版。Docker 用
docker build --pull --no-cache,别用缓存。 - 升完立刻在
php.ini里加session.upload_progress.enabled=0,等下一个常规版本再评估要不要开回来。 - 跑在 8.2 的,把”年底前升到 8.4 或 8.5”排进日程。12 月 31 日之后是硬墙。
- 跑在 7.4 / 8.0 / 8.1 的:这次要么用官方 backport 自己编,要么把大版本升级当成正经项目排期。继续拖的代价是下一次 CVE 连 backport 都没有。
- 控制面板型的虚拟主机,先确认面板有没有推更新;没有就开工单,并把上面那条
session.upload_progress配好。
原文(2026 年存档,含 10 月 21 日与 10 月 23 日两份公告):https://www.php.net/archive/2026.php