本文面向运维、PHP 开发者、安全工程师,介绍漏洞背景、原理、影响范围、自查与修复方案,仅用于安全学习与自查,禁止未授权攻击。
最近几天安全圈被一个名字刷屏:PHP2Shell。它不是一句话木马、不是 WebShell 工具,而是 Wiz Research 披露的一组 PHP 内核内存安全漏洞组合,包含两个 CVE:CVE-2026-109618、CVE-2026-109619,CVSS v4.0 9.2 分,属于预认证远程代码执行(Pre-auth RCE),也就是大家常说的 “不用登录、不用权限,直接打 shell”IT之家。
一、什么是 PHP2Shell
PHP2Shell 是这一组漏洞的代号,含义很直白:从 PHP 请求直接拿到服务器 Shell。 和以往我们遇到的大部分 PHP 漏洞有本质区别:
- 漏洞不在你的业务代码(WordPress、Drupal、自研 PHP 程序)里;
- 漏洞在PHP 内核本身,只要 PHP 版本有问题,哪怕只是一个最简单的
hello world页面,都存在风险php2shell….; - 默认配置下即可触发,不需要特殊开关;
- 攻击入口是普通 HTTP 请求(multipart/form-data 上传请求),不需要上传文件、不需要上传接口本身有漏洞。
两个漏洞是配套的:
- CVE-2026-109618:内存耗尽(OOM)错误处理缺陷 PHP 在内存超限触发 fatal error 时,中断流程时机异常,内部哈希表、全局状态只更新了一半,留下损坏的内存状态。
- CVE-2026-109619:请求间残留状态(Use-After-Free) PHP-FPM、worker 模式下,同一个进程会复用处理多个请求。上一次 OOM 崩溃留下的脏内存状态,会被下一个请求继续使用,形成释放后重用漏洞,最终链成 RCE。
一句话通俗理解: 攻击者构造特殊上传请求,精准卡在 PHP 即将触发memory_limit的瞬间,让 PHP 崩溃但清理不干净;同 worker 再来第二个请求,利用残留脏内存篡改内核对象,最终实现任意代码执行,拿到服务器 shell。
二、为什么这个漏洞这么吓人
- 无认证:不需要账号、密码、后台入口,公网能访问 PHP 页面就可以尝试攻击;
- 覆盖面极广:影响 PHP 5.4 之后大量版本,WordPress、Drupal、Joomla、绝大多数自研 PHP 站点都在攻击面内;Wiz 的演示直接在最新版 WP、Drupal、Joomla 容器上完成利用;
- 和业务无关:很多开发者以为 “我代码写得很安全、过滤了上传” 就没事,没用,病根在 PHP 引擎底层;
- 攻击隐蔽:看起来就是普通 POST 上传包,日志很难直接区分正常请求和攻击;
- 全球高度重视:CISA、FBI 发布预警,多国官方提醒尽快补丁,属于近期最高优先级的安全事件之一。
区分一个容易混淆的概念:php2shell ≠ php 一句话木马。一句话木马是 webshell,是业务侧后门;PHP2Shell 是内核漏洞,是从外部请求直接 RCE。
三、受影响版本 & 修复版本
修复版本(官方补丁):
- PHP 8.5 → 8.5.12
- PHP 8.4 → 8.4.27
- PHP 8.3 → 8.3.36
- PHP 8.2 → 8.2.35
低于以上版本全部受影响。
注意:很多发行版源里的 PHP 版本更新滞后,不要只看包管理器版本号,核对 PHP 官方版本号为准。
四、自查:我的服务器有没有中招
登录服务器执行:
php -v
看版本号,对照上面修复基线。
额外检查:
- 运行模式:PHP-FPM(最容易被利用)、CGI、CLI;
- 是否开启
session.upload_progress(漏洞利用链里关键组件,很多默认开启); - 是否公网暴露 PHP 服务。
快速临时缓解(不能替代补丁,只是应急):
- 关闭
session.upload_progress = Off - 严格限制上传接口、限制 POST 请求大小、收紧
memory_limit(不推荐单纯调大,反而利于攻击) - WAF / 防火墙拦截异常超大 multipart POST 包
- 高风险业务临时下线公网访问
社区有反馈:部分临时缓解方案存在绕过,最可靠方案是升级 PHP 到修复版本。
五、运维升级注意事项
- 升级前备份网站、php 配置、php-fpm pool 配置;
- 升级后重启 php-fpm、nginx/apache;
- 业务兼容性测试:部分老程序在新版 PHP 下有语法、废弃函数兼容问题;
- 容器环境:重新拉取打好补丁的官方镜像,重建容器,不要只在容器内升级;
- 多版本共存环境:逐个确认每个 php-fpm 实例的版本。
六、攻击面与防护思路总结
- 攻击面:公网可访问、使用有漏洞 PHP 版本、worker 复用模型(PHP-FPM);
- 根治:升级 PHP 到官方修复版本;
- 纵深防护:WAF、流量审计、服务器基线、最小权限运行 php-fpm 进程(不要用 root)、定期审计进程与 webshell;
- 监测:监控异常命令执行、异常进程、非预期文件写入、PHP 进程频繁崩溃重启。
七、写在最后
PHP2Shell 给我们的一个重要提醒:安全边界不止在业务代码。 哪怕你写的代码没有注入、没有上传漏洞、过滤严谨,底层语言引擎的内存漏洞依然可以直接击穿防线。过去很多人觉得 PHP 的漏洞大多是业务层的,这次是一次典型的内核级、默认配置、无认证 RCE,属于基础设施级风险。
安全没有侥幸。如果你是运维 / 站长,优先排期升级;如果你是安全从业者,建议跟进 Wiz 的技术分析,学习内存破坏漏洞的利用链。