三分钟结论
问题在 PHP 本身
升级 WordPress、Laravel 或插件不能修复漏洞,必须升级 PHP 运行时。
补丁后必须重启
FPM、Apache、IIS 和容器中的旧 worker 不会因为软件包更新自动消失。
先快照再修复
脚本备份只覆盖它管理的 PHP;整机快照仍是首选回滚。
发生了什么
PHP 官方修复了两个位于解释器核心、可导致未认证远程代码执行的高危漏洞。它们与应用框架无关,影响所有处理 Web 请求的 PHP SAPI:PHP-FPM、Apache mod_php、php-cgi、FrankenPHP 和 LiteSpeed。
CVE-2026-109618 利用内存耗尽时的异常退出;请求内存尚未完整初始化时,清理阶段可能把损坏数据当成有效状态。CVE-2026-109619 是跨请求的 use-after-free:前一个请求留下的全局状态在内存释放后仍被同一 worker 的后续请求使用。
哪些版本受影响
PHP 8.2、8.3、8.4、8.5 分别升级到对应修复版。PHP 8.1 及更早版本已停止上游安全维护,PHP 只提供了 7.4、8.0、8.1 的最小源码回溯补丁,没有新的官方二进制发行版。
| 分支 | 受影响 | 官方修复 |
|---|---|---|
| PHP 8.5 | < 8.5.12 | 8.5.12 |
| PHP 8.4 | < 8.4.27 | 8.4.27 |
| PHP 8.3 | < 8.3.36 | 8.3.36 |
| PHP 8.2 | < 8.2.35 | 8.2.35 |
| PHP 8.1 及更早 | 上游 EOL | 升级或使用厂商回溯补丁 |
为什么不能只升级网站程序
攻击发生在应用代码运行之前的 PHP 请求初始化、解析或清理阶段。WordPress、Drupal、Joomla、Laravel 以及安全插件的更新都不能替代 PHP 更新。
- PHP 认为 mod_php 风险最高:已演示未认证请求可在应用代码运行前触发漏洞。
- FPM 不应被当作安全。源码分析支持其易受影响,且另一个 CVE 已在 mod_php 与 FPM 上验证。
- 升级软件包不等于完成修复。旧 PHP-FPM/Apache/IIS worker 仍可能继续执行旧二进制。
- Docker 中必须先拉取已修复镜像并重建容器;docker restart 只会重启旧镜像。
我们的排查路径
我们先用只读扫描器盘点 CLI、FPM、CGI、Apache 模块、Docker、Windows 服务、扩展和相关 INI 配置,再对照实际 Web 入口确认版本,而不是只相信单条 php -v 输出。
- 检查 PATH、/www/server/php、/usr/local、/opt、FPM pool、Apache 模块、IIS FastCGI、注册表和容器。
- 核对软件包安装时间与 worker 启动时间,识别“已升级但仍运行旧进程”。
- 隐藏 PHP 版本、CDN 代理和 WAF 只能降低暴露,不能证明后端运行时已修复。
- 第三方设备、NAS、控制面板和产品内嵌 PHP 必须另外查厂商公告。
安全修复顺序
官方唯一完整修复是升级。以下顺序适用于 Linux 与 Windows Server,也适用于单机宝塔环境、IIS 和容器化部署。
- 在云厂商或虚拟化平台创建整机快照,并记录当前 PHP、SAPI、扩展、服务与 pool 配置。
- 备份 PHP 目录、php.ini、FPM/Apache/IIS 配置和现有二进制;确认生成的回滚脚本可读。
- 安装同分支官方修复版,或使用发行版明确标注 CVE 已修复的软件包。
- Docker 拉取新镜像并重建容器;虚拟机安装软件包后完整重启 FPM/Apache/IIS/长驻 worker。
- 验证登录、上传、支付、队列、缓存与关键 API,并在真实 Web 入口确认实际 SAPI 版本。
- 若升级前曾暴露公网,继续排查 webshell、异常子进程、新计划任务、异常外连与凭据访问。
无法立即升级时的临时措施
临时配置只能阻断部分已知路径,不代表系统安全。补丁和完整重启仍是唯一完整修复。
- CVE-2026-109618:在应用无法覆盖的 FPM/Apache 配置中强制 memory_limit=-1,降低 post_max_size,并在代理层限制请求体、part/header/嵌套数量。不要用 RLIMIT_AS/RLIMIT_DATA 代替。
- CVE-2026-109619:在请求初始化前设置 session.upload_progress.enabled=0,并完整重启 worker;PHP 8.5 同时设置 fatal_error_backtraces=0。
- 不要依赖 .user.ini 或 ini_set() 作为关键缓解,它们对部分攻击路径生效太晚。
- Cloudflare WAF 等边界防护只能作纵深防御,且只覆盖经过对应代理的流量。
回滚与工具边界
首选回滚始终是整机快照。服务器脚本会在 /root/php2shell-fullfix/<时间戳>/ 或 C:\ProgramData\PHP2ShellFullFix\<时间戳>\ 生成报告、备份清单和 rollback 脚本。
自动修复只覆盖可验证的宝塔 PHP、限定 Debian PHP 官方镜像容器和 Windows 官方 PHP ZIP 安装;未知源码构建、发行版包和第三方内嵌 PHP 不做盲改。
本次响应工具
扫描器只做无害版本与配置盘点;服务器修复脚本默认只检查,修复前要求三次确认并生成回滚文件。
权威来源
产品判断优先采用 PHP 官方与 GitHub Security Advisory;CISA、CERT-EU、NCSC-NL 和云厂商公告用于交叉核验。
- PHP official security advisory · 2026-10-21
- CVE-2026-109618 · GHSA-w8hw-w9fx-j79w
- CVE-2026-109619 · GHSA-6wmf-4rv5-p3rp
- PHP 8.2.35 official release record
- NCSC-NL · php2shell operational information
- CISA CSAF/VEX · VA-26-295-01
- Canadian Centre for Cyber Security · AL26-026
- CERT-EU Security Advisory 2026-018
- Cloudflare · php2shell WAF protection
HTTP 扫描看不到隐藏版本;不能把“未识别”当作“安全”。
获取免费报价