补丁来了!PHP 9.2 分严重漏洞「php2shell」今晚修好,所有版本都要升,赶快更新!

💡 原文中文,约3100字,阅读约需8分钟。
📝

内容提要

PHP官方发布紧急补丁,修复两个9.2分严重漏洞(CVE-2026-109618、CVE-2026-109619),可导致远程代码执行。所有处理Web请求的PHP安装均受影响,其中mod_php风险最高且已有利用程序。修复版本为8.5.12、8.4.27、8.3.36、8.2.35,升级后须重启worker。无法升级者可临时设置memory_limit=-1、限制post_max_size、关闭session.upload_progress等缓解,但升级才是完整解决方案。

🔎

延伸解读

mod_php 风险最高,安全插件来不及拦截

官方明确指出 mod_php 风险最高,且已有可演示的利用程序:未授权请求可在任何应用代码运行前触发攻击。这意味着依赖 auto_prepend_file 加载的 WordPress 安全插件,在攻击发生时尚未执行,无法提供防护。使用 mod_php 的站点应优先评估升级,不能把安全插件当作缓冲。

残留全局状态漏洞:每次请求都可能影响下一次

CVE-2026-109619 的机制是请求内部状态在内存释放后仍可能存活,同一 worker 处理的下一个请求可能在初始化重置前使用这份残留状态。因此,打补丁前的每次请求都可能为下一次请求埋下风险。升级后必须重启所有 worker,否则旧进程仍可能带着残留状态继续服务。

缓解措施只降低暴露面,不是安全方案

官方提供的临时措施包括设 memory_limit=-1、限制 post_max_size、关闭 session.upload_progress.enabled 等,但公告强调只有更新才是完整解决方案。这些设置仅能挡住已确认的特定攻击路径,无法让安装变得安全。例如 memory_limit=-1 只消除内存限制被触发的失败点,底层分配失败仍可能走到漏洞路径。

共享主机与 remi 用户需主动确认修复版本

共享主机用户无法自行升级,应催促服务商确认安装的是 8.3.36、8.2.35 等修复版本,而非只问“有没有升 PHP”。使用 rpms.remirepo.net 的用户,官方明确该仓库当天不会有更新,并强烈建议改用发行版自带包或从源码构建。PHP 7.4、8.0、8.1 仅有最小化源码 backport,需自行编译,共享主机拿不到。

❓

Q&A

PHP 9.2 分漏洞影响哪些 PHP 运行方式?

所有处理 Web 请求的 PHP 安装都受影响,包括 PHP-FPM、Apache 加 mod_php、php-cgi、FrankenPHP 和 LiteSpeed。其中 mod_php 风险最高,且已有可用的利用程序。

CVE-2026-109618 和 CVE-2026-109619 的漏洞机制分别是什么?

CVE-2026-109618 通过内存耗尽(OOM)损坏实现 RCE:OOM 处理可能在内部请求数据只初始化一部分时打断,后续清理把无效数据当有效数据用。CVE-2026-109619 通过残留全局状态实现 RCE:某个请求的内部状态在内存释放后仍存活,同一 worker 的下一个请求可能在初始化重置前使用这份残留状态。

修复这两个漏洞需要升级到哪些 PHP 版本?

升级到 PHP 8.5.12、8.4.27、8.3.36 或 8.2.35。源码和 Windows 二进制在 php.net 下载页;Linux 发行版和 LTS 厂商可获取更新包。PHP 7.4、8.0、8.1 有最小化源码 backport,需自行编译。

升级 PHP 后为什么必须重启 worker?

因为 CVE-2026-109619 涉及残留全局状态:打补丁前的每次请求都可能给下一次请求埋雷。升级后重启 worker 才能清除残留状态,确保修复生效。

暂时无法升级 PHP 时有哪些官方缓解措施?

针对 CVE-2026-109618:设 memory_limit=-1(用 php_admin_value 等方式)、设较低 post_max_size(无上传 8M,需上传 32M)并保持 upload_max_filesize 更低、用容器或 cgroup 限制作为可用性边界。针对 CVE-2026-109619:设 session.upload_progress.enabled=0 并重启 worker、PHP 8.5 上设 fatal_error_backtraces=0 并重启 worker、移除按请求生效的无效诊断设置、修复可触发的致命错误和执行超时。注意这些只能降低暴露面,升级才是完整解决方案。

WordPress 站点应该怎么应对这次漏洞?

先查 PHP 版本(后台工具→站点健康→信息或 wp cli)。VPS/独立服务器按修复版本升级;共享主机需催服务商确认安装的是修复版本(如 8.3.36 / 8.2.35),升不了则让服务商加上 session.upload_progress.enabled=0,或自己在站点根目录放 .user.ini。

🏷️

标签

➡️

继续阅读