本文使用的 Docker 镜像
发布日期: 2026 年 10 月 21 日
更新日期: 2026 年 10 月 22 日
更新内容: 已确认在野利用,公开披露前已有攻击尝试。修复版本不变,请尽快升级并重启 worker。不要用 WAF 代替补丁。
更新日期: 2026 年 10 月 22 日
更新内容: 升级后必须重启全部 PHP worker,只 reload 不够。CISA 已要求立即修补。不要用 WAF 代替升级。
风险等级: 严重(Critical)
漏洞编号: CVE-2026-109618 · CVE-2026-109619
涉及镜像: library/php — 轩辕镜像 · Docker Hub
CVSS: 9.2(Critical,CVSS 4.0,PHP 官方);NVD CVSS 3.1 为 9.8
披露时间: 2026 年 10 月 21 日
相关公告: GHSA-w8hw-w9fx-j79w · GHSA-6wmf-4rv5-p3rp · CISA 告警
一、漏洞概述
2026 年 10 月 21 日,PHP 官方同时发布两枚严重漏洞。业界通报里常称为 php2shell。两条都是未认证远程代码执行,官方 CVSS 4.0 均为 9.2。凡是对外处理 Web 请求的 PHP 都在范围内,包括 PHP-FPM、Apache mod_php、php-cgi、FrankenPHP 和 LiteSpeed。官方认为 mod_php 风险最高:未登录请求可以在应用代码运行之前触发。
CVE-2026-109618: 内存耗尽(OOM)之后的清理不当。请求数据只初始化了一部分,就被当成有效状态回收,进而造成内存破坏。
CVE-2026-109619: 请求结束后,进程里的全局状态没有清干净(use-after-free)。同一个 worker 上的下一个请求可以读到上一请求留下的状态。
10 月 20 日 PHP 安全组预告将于 10 月 21 日 14:00 UTC 发补丁。披露前已有技术细节外泄,官方仍按原定时间发出安全版,并同步四条仍在维护的发布线。英国 NCSC 等国家 CERT 已要求立刻升级。
阿里云 AVD 的标题把 session.upload_progress 记在 CVE-2026-109618 上。处置以 php.net 与 GHSA 为准:这个开关只缓解 CVE-2026-109619 里已经确认的路径。109618 的问题在内存耗尽后的清理。
二、漏洞状态
统计截止: 2026 年 10 月 22 日(UTC+8)
| 项目 | 状态 |
|---|---|
| 漏洞细节 | 已公开(PHP 官方、两条 GHSA、NVD) |
| 官方补丁 | 8.5.12、8.4.27、8.3.36、8.2.35,2026 年 10 月 21 日发布 |
| 官方镜像 | Docker Hub library/php 的上述小版本,以及对应 -cli、-fpm、-apache,推送时间在 10 月 21 日下午(UTC) |
| 在野利用 | 已确认。Amazon MadPot 约在 2026 年 10 月 17 日(公开披露前)记录到利用尝试;补丁公开后多家机构确认利用已经铺开。仍未列入 CISA KEV。不要用 WAF 代替升级 |
| CISA KEV | 未列入(catalogVersion 2026.10.21)。同日另有 立即修补告警 |
| CVE | GHSA | 要点 |
|---|---|---|
| CVE-2026-109618 | GHSA-w8hw-w9fx-j79w | 内存耗尽后的错误清理,可内存破坏并执行代码 |
| CVE-2026-109619 | GHSA-6wmf-4rv5-p3rp | 请求结束后全局状态未清干净,同一 worker 的下一请求可读到残留状态 |
三、影响范围
1. 版本线
| 当前版本线 | 升到 |
|---|---|
| 8.5 | ≥ 8.5.12 |
| 8.4 | ≥ 8.4.27 |
| 8.3 | ≥ 8.3.36 |
| 8.2 | ≥ 8.2.35 |
| 8.1、8.0、7.4 及更早 | 官方已停更。因严重性提供了最小范围的源码补丁。更稳妥是迁到仍在支持的 8.2 及以上,并升到上表的小版本 |
发行版的安全包可能已经提前带上补丁,版本号不一定显示成上游的小版本号。以该发行版的安全通告为准。依赖志愿者仓库 rpms.remirepo.net 的,披露当天可能还没有对应包,应改用发行版安全包,或按官方源码构建。
2. 运行形态
| 形态 | 说明 |
|---|---|
| PHP-FPM、php-cgi、Apache mod_php | 每个对外 worker 都要换到新版本并重启 |
官方镜像 library/php | 换成带上述小版本号的标签,然后重建容器 |
| FrankenPHP、LiteSpeed 等 | 运行时里的 PHP 同样受影响,换成已基于补丁版本构建的镜像或软件包 |
只跑命令行、不处理外部 HTTP 请求的 php 二进制,不走这两条 Web 请求路径。同一台机器上只要还有 FPM、Apache 或 cgi 在对外服务,那些进程仍要升级。
四、修复建议
1. 按版本线升级(唯一可靠修复)
官方写明没有完整缓解,WAF 也不能代替补丁。下面四档是仍在维护的发布线。容器改用对应标签并重建;系统包安装的,安装厂商安全更新。然后重启全部 PHP worker(FPM、Apache、php-cgi)。只 reload 不够,旧进程仍在跑有漏洞的代码。
| 用途 | 标签 |
|---|---|
| 8.5 FPM | 8.5.12-fpm |
| 8.4 FPM | 8.4.27-fpm |
| 8.3 FPM | 8.3.36-fpm |
| 8.2 FPM | 8.2.35-fpm |
同一小版本的 -cli、-apache 以及不带后缀的版本标签(如 8.3.36)已在 Docker Hub 上。Apache 镜像用 8.3.36-apache 这种带版本号的标签,不要留在旧的 8.3-apache 上。
以 8.3 的 FPM 为例:
bashdocker pull docker.xuanyuan.run/library/php:8.3.36-fpm
其他版本线把标签换成上表中的对应项。latest 在 10 月 21 日已更新,它跟随 8.5 线,不能拿来代替 8.2、8.3、8.4 的修复标签。
Docker Hub: library/php
轩辕镜像: library/php
官方镜像更新:docker-library/php #1694、official-images #22541。
2. 升级后核对
在宿主机或容器里执行 php -v,确认已经是本线的修复小版本。FPM 容器进入容器再执行一次,避免只看到宿主机上的另一份 PHP。
发行版回移植包若版本号仍显示旧的上游小版本,对照该发行版的安全公告,确认安装的是已包含这两条修复的软件包,然后重启 worker。
3. 升级不能消除已经失陷的主机
补丁只挡住后续请求。升级之后仍要查看异常请求、进程崩溃和网页目录里的文件变化。发现可疑痕迹时,按主机和容器可能已经执行过代码处理:下线、轮换这台 PHP 能读到的凭据,并用干净镜像或干净系统包重建。
五、临时缓解措施
这些做法不能代替升级,也挡不住全部路径。官方说明只覆盖已经确认的触发条件。
CVE-2026-109618(内存耗尽):
- 在管理面把
memory_limit设为-1,使应用代码不能再把它改小。这只减少这一条的触发方式,不能当作长期配置。 - 压低
post_max_size。 - 用 cgroup 限制该服务的内存。不要用
RLIMIT_AS或RLIMIT_DATA代替。
CVE-2026-109619(残留全局状态):
- 在管理面关闭
session.upload_progress.enabled,并重启全部 worker。应用里的ini_set不够。 - PHP 8.5 可再关闭
fatal_error_backtraces。 - 去掉会在请求初始化之前输出诊断信息的陈旧 INI。
做完缓解仍然要升级。只改配置、不换 PHP 二进制或镜像,worker 里的漏洞代码还在。
六、与轩辕镜像用户的相关说明
轩辕镜像提供的是镜像加速与拉取服务,不替代 PHP 的版本修复。加速拉取旧标签不会带上 10 月 21 日的补丁。
- 站内页:library/php。按版本线拉取,例如
docker.xuanyuan.run/library/php:8.3.36-fpm。 - 换标签后重建容器,并在容器内用
php -v确认。 - 配置与排错见 轩辕镜像使用手册、镜像拉取 FAQ。
七、参考链接
- PHP 安全公告:2026-10-21
- GitHub Advisory:GHSA-w8hw-w9fx-j79w · GHSA-6wmf-4rv5-p3rp
- NVD:CVE-2026-109618 · CVE-2026-109619
- 英国 NCSC:Critical security issue affecting PHP
- CISA:Critical Vulnerabilities in PHP Require Immediate Patching
- 在野利用:AWS MadPot · Cloudflare · SecurityWeek
- 腾讯云:php2shell 风险通告
- 阿里云:AVD-2026-109618
- 官方镜像更新:docker-library/php #1694 · official-images #22541
- Docker Hub:library/php
- 轩辕站内镜像页:library/php
轩辕镜像安全团队
2026 年 10 月 22 日
评论交流
免责声明
本博客文章所提供的内容、技术方案、配置示例及部署指南等信息,仅供学习交流和技术参考使用。文章内容基于发布时的技术环境和版本信息编写,可能因时间推移、技术更新或环境差异而存在不适用的情况。
用户在参考本博客内容进行部署操作前,应当充分了解相关技术风险,并建议在测试环境中进行充分验证和测试,确认无误后再考虑在生产环境中使用。生产环境部署前,请务必进行数据备份,并制定相应的回滚方案。
用户因使用本博客内容进行部署操作而产生的任何损失、数据丢失、系统故障、安全风险或其他问题,均由用户自行承担全部责任。轩辕镜像官方不对因使用本博客内容而产生的任何直接或间接损失承担责任。
本免责声明的最终解释权归轩辕镜像官方所有。
