PHP 8.2–8.5 修复版本已发布 独立社区资源 · 事实核实于 2026年10月22日

PHP2Shell 检测工具 / cve 2026 109618 缓解措施

CVE-2026-109618 临时缓解措施:PHP2Shell 升级前怎么先挡一挡

PHP2Shell(CVE-2026-109618、CVE-2026-109619)没有能替代升级的临时办法。官方设置只能挡住部分路径:针对 CVE-2026-109618 把 memory_limit 设为 -1 并调低 post_max_size;针对 CVE-2026-109619 关闭 session.upload_progress,PHP 8.5 再关闭 fatal_error_backtraces。都要写进主配置并重启全部 worker。最稳妥的是暂停网站或限制访问。

PHP2Shell.help 编辑部核实日期 官方来源 ↓

PHP2Shell 有能代替升级的临时办法吗?

没有。PHP 官方明确说临时设置不能完全消除风险。下面这些办法的作用是在你排期升级的几小时、几天里降低风险,不能当作“已经修复”,本站的 PHP 版本检测 也不会因为做了缓解就判定为安全。

CVE-2026-109618 的 memory_limit 和 post_max_size 怎么设?

这两项是 PHP 官方专门针对 CVE-2026-109618(内存不足路径)给出的临时设置:

  • memory_limit = -1:去掉 PHP 自己的内存上限,避开“超过上限”这条触发路径。注意三点:底层内存分配失败仍可能触发漏洞,所以它不是修复;要设在应用代码改不回去的地方(主配置),否则程序里一句 ini_set 就能把上限改回来;单个请求可能吃掉大量内存,要盯住服务器内存。官方还提醒,不要用系统层面的进程内存限制(RLIMIT_AS、RLIMIT_DATA)来代替。
  • 调低 post_max_size:不需要上传的网站设为 8M,需要上传的设为 32M,减少内存不足路径的暴露面。代价是比这更大的上传会直接失败。

两项都要写进网站实际使用的那套 PHP 的主配置,并重启所有 PHP worker。

关闭 session.upload_progress 怎么做才有效?

这一项针对的是 PHP2Shell 的另一个漏洞 CVE-2026-109619,能挡住已确认的一部分 session 相关路径。两个漏洞的修复版本相同,升级前通常要一起防,所以也放在这里。要真正生效,必须满足:

  1. 写进主配置:在网站实际使用的那套 PHP 的 php.ini(或 PHP-FPM 进程池的主配置)里设置 session.upload_progress.enabled = 0。
  2. 在请求解析之前生效:代码里用 ini_set() 改、或者写在 FPM 的 .user.ini 里,都来不及,等于没设。
  3. 重启所有 PHP worker:重启 PHP-FPM 或 Apache,旧进程不退出,新配置不生效。

宝塔用户注意:要改的是网站绑定的那个 PHP 版本的配置,改完重启该 PHP 服务。

代价:依赖“上传进度”显示的功能(比如某些大文件上传进度条)可能失效。

PHP 8.5 还要额外做什么?

PHP 8.5 有一项额外的临时设置(同样针对 CVE-2026-109619):把 fatal_error_backtraces 设为 0。它只针对一条已确认的 fatal backtrace 路径,挡不住其他变体,而且会减少报错时的诊断信息。同样需要写进主配置并重启。

Cloudflare、腾讯云 WAF 能挡住吗?

能挡一部分。Cloudflare 表示补丁发布前就观察到了攻击流量和不断变换的攻击请求,已为启用 WAF 的免费和付费套餐部署默认防护;腾讯云称其 Web 应用防火墙、云防火墙支持防护。但要注意:

  • 攻击者如果能绕过 CDN 直接访问你的源站 IP,WAF 就不起作用。
  • 攻击请求会变形,规则不一定都能识别。
  • 服务器上的 PHP 仍然有漏洞。

用 WAF 的同时,尽量让源站只接受 CDN 回源的流量。

维护模式插件能挡住吗?

不能指望。WordPress 之类的维护模式插件是在 PHP 已经开始处理请求之后才显示维护页,而 PHP2Shell 的部分攻击路径发生在应用代码运行之前。要“暂停网站”,应该在 Nginx、Apache 或 CDN 层面直接返回维护页,不让请求进入 PHP。

什么时候应该直接暂停网站?

日本、英国、美国的官方机构都建议:无法立即更新时,考虑暂时让网站下线。以下情况尤其应该考虑:

  • 网站用 Apache mod_php(官方认为风险最高);
  • 网站有用户账号、个人信息、支付;
  • 是停止维护的老 PHP,短期内升级不了。

暂停方式:在 Web 服务器或 CDN 层返回维护页,或只允许公司内网、固定 IP 访问。

做完缓解之后还要做什么?

  1. 把升级排进日程,按 PHP2Shell 修复 尽快完成。
  2. 升级完成后,可以按需恢复 session.upload_progress 等设置。
  3. 做一次 网站被黑检测,尤其是缓解措施生效前已经暴露过一段时间的网站。

想先确认自己是否在受影响范围,回到 PHP2Shell 检测。

依据哪些来源?

检测你的 PHP 是否受 PHP2Shell 影响

输入网站使用的 PHP 版本,我们会和该分支的首个修复版本比较,并告诉你下一步怎么做。

PHP2Shell 检测工具 →

来源

本页的核心事实(修复版本、CVE 详情、发行版软件包、官方机构的提醒)都来自官方来源;研究报告、新闻和社区讨论已分别标注。