堇意科技 堇意科技 AI智能体 · 数字化转型
获取免费报价

我们通常在几小时内回复(GMT+8)。

安全公告与实战复盘

PHP2Shell 紧急响应:两个 CVSS 9.2 的 PHP 远程代码执行漏洞

2026 年 10 月 21 日,PHP 在 14:00 UTC 发布紧急修复。我们从公告核实、香港生产节点排查、版本升级,到 Linux/Windows 自动检查与可回滚修复工具,完整记录这次响应。

三分钟结论

01

问题在 PHP 本身

升级 WordPress、Laravel 或插件不能修复漏洞,必须升级 PHP 运行时。

02

补丁后必须重启

FPM、Apache、IIS 和容器中的旧 worker 不会因为软件包更新自动消失。

03

先快照再修复

脚本备份只覆盖它管理的 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.128.5.12
PHP 8.4< 8.4.278.4.27
PHP 8.3< 8.3.368.3.36
PHP 8.2< 8.2.358.2.35
PHP 8.1 及更早上游 EOL升级或使用厂商回溯补丁
发行版可能保留旧版本号但已经回溯修复。不能只看 php -v,必须核对发行版的 CVE 公告和软件包变更记录。

为什么不能只升级网站程序

攻击发生在应用代码运行之前的 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 不做盲改。

修复模式要求:理解风险、已创建整机快照、已验证备份和回滚。三句确认中任何一句不匹配,脚本立即停止。

本次响应工具

扫描器只做无害版本与配置盘点;服务器修复脚本默认只检查,修复前要求三次确认并生成回滚文件。

Windows PC 扫描器GitHub Release · PHP2ShellScanner-PC.exe 本地 Web 扫描器GitHub Release · 127.0.0.1 Linux + Windows Server 脚本GitHub Release · Linux .sh · Windows Server .ps1 GitHub 源码与文档scriptsnet / php2shell-security-toolkit

SHA256 校验值

HTTP 扫描看不到隐藏版本;不能把“未识别”当作“安全”。

权威来源

产品判断优先采用 PHP 官方与 GitHub Security Advisory;CISA、CERT-EU、NCSC-NL 和云厂商公告用于交叉核验。

  1. PHP official security advisory · 2026-10-21
  2. CVE-2026-109618 · GHSA-w8hw-w9fx-j79w
  3. CVE-2026-109619 · GHSA-6wmf-4rv5-p3rp
  4. PHP 8.2.35 official release record
  5. NCSC-NL · php2shell operational information
  6. CISA CSAF/VEX · VA-26-295-01
  7. Canadian Centre for Cyber Security · AL26-026
  8. CERT-EU Security Advisory 2026-018
  9. Cloudflare · php2shell WAF protection

HTTP 扫描看不到隐藏版本;不能把“未识别”当作“安全”。

获取免费报价
与无轩在线聊天
WhatsApp 免费方案