二次更新 | php2shell RCE 的最新验证结果
原创
微步情报局
微步情报局
微步在线研究响应中心
2026年10月22日 15:46
北京
去阅读
最新结论
目前微步情报局已复现mod\_php部署下的稳定崩溃和完整RCE。
但PHP-FPM部署时的RCE限制较多,该场景下的完整RCE利用链正在进一步分析中。
关于PHP不同部署方式的验证效果
PHP 主流的部署方式有:
1. 最主流的部署方式是nginx/Apache + PHP-FPM。目前发行版、官方php:fpm 仓库和各类面板(宝塔、1Panel、Plesk等)基本都是这种方式。
2. Apache mod\_php:主要是部分老 LAMP、部分共享主机,以及部分应用(例如wordpress Docker)还在使用这种方式。
3. 其他方式:L SAPI(商业虚拟机较多)、FrankenPHP等。
PHP官方已经验证的部署方式和漏洞效果:
| 部署方式 | CVE-2026-109618 | CVE-2026-109619 |
| mod\_php | 已验证完整RCE | 已验证完整RCE |
| PHP-FPM | 源码分析认为受影响,但RCE未证实 | 已验证完整RCE |
目前微步情报局已经验证的部署方式和漏洞效果:
| 部署方式 | CVE-2026-109618 | CVE-2026-109619 |
| mod\_php | 已验证CRASH POC | 已验证完整RCE |
| PHP-FPM | 根据现有信息,完整RCE限制条件较多,完整利用链在进一步分析中 |
漏洞原理
PHP 处理一次 HTTP 请求时,可能在应用代码尚未执行(解析请求体)阶段就 OOM,并经 zend\_bailout() longjmp 中断。被跳过的是中断点之后尚未完成的初始化或扩展 RSHUTDOWN,request shutdown 在 mod\_php 上仍会执行。由此出现两类独立缺陷:
-
CVE-2026-109618(同一请求内):OOM longjmp 后请求内存可能尚未初始化完成;request shutdown 将这份无效状态当作有效对象访问。这是PHP引擎在 “一次请求从启动到 shutdown” 过程中的缺陷,不依赖具体应用代码。
-
CVE-2026-109619(跨请求):这是引擎处理跨请求状态的缺陷。一次请求期间,worker 进程中的全局状态(session、错误回溯等)会保存指向该请求堆的指针;请求结束本应先重置这些全局状态,再释放请求堆。若此时发生 fatal 或 OOM longjmp,扩展的请求清理(RSHUTDOWN)可能被跳过,重置不会发生,而请求堆仍会被释放,指针悬空。shutdown 开始后的非 fatal 诊断也可能再次写入错误相关的全局状态。同一 worker 的下一请求在正常初始化之前访问这些过期指针,即构成 UAF。
漏洞处置优先级(VPT)
综合处置优先级:高风险
| 基本信息 | 微步编号 | XVE-2026-84070 XVE-2026-84069 |
| CVE编号 | CVE-2026-109618 CVE-2026-109619 | |
| 漏洞类型 | 远程代码执行 | |
| 利用条件评估 | 利用漏洞的网络条件 | 远程 |
| 是否需要绕过安全机制 | 否 | |
| 对被攻击系统的要求 | 无 | |
| 利用漏洞的权限要求 | 无需权限 | |
| 是否需要受害者配合 | 否 | |
| 利用情报 | 是否有POC | 是 |
| 已知利用行为 | 暂未捕获 |
漏洞影响范围
*PHP*8.5.x: < 8.5.12 受影响
**PHP8.4.x: <8.4.27 受影响
**PHP8.3.x: <8.3.36 受影响
**PHP8.2.x: <8.2.35 受影响
PHP 8.1 及更早版本也受影响。PHP 8.1 及更早的版本 PHP 项目不再发版本。官方给了仅供自行编译的最小 backport 分支:
- PHP 7.4:https://github.com/php/php-src/tree/PHP-7.4-CVE-2026-109618-109619
- PHP 8.0:https://github.com/php/php-src/tree/PHP-8.0-CVE-2026-109618-109619)
- PHP 8.1 :https://github.com/php/php-src/tree/PHP-8.1-CVE-2026-109618-109619
漏洞复现
CVE-2026-109619:在 PHP 8.4.26 的 Apache mod\_php上(prefork 单工作进程,memory\_limit=8M、post\_max\_size=64M),对任意 PHP 页面发送特殊的 multipart POST 请求,实现远程任意代码执行。
CVE-2026-109618:在PHP 8.5.11 的 Apache mod\_php(prefork,单工作进程)上,对任意 PHP 页面发送特殊的 multipart POST 请求,造成内存损坏,工作进程 SIGSEGV 并产生 core dump。
修复方案
官方修复方案
PHP 安全团队已发布安全版本修复上述漏洞,具体通告链接:
- https://www.php.net/archive/2026.php#2026-10-21-5
- https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w
- https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp
临时缓解措施
以下为PHP官方提供的临时缓解措施: * 对于PHP-FPM,禁用会话上传进度session.upload_progress.enabled=0并进行设置memory_limit=-1。 * 对于mod_php,设置memory_limit=-1。 但PHP官方建议这些更改无法完全取代补丁,并且设置memory_limit=-1会移除 PHP 的内存限制,增加内存耗尽的风险,建议最好通过升级的方式来缓解漏洞。
微步产品支撑
微步漏洞情报于2026年10月21日收录该漏洞。
微步下一代威胁情报平台NGTIP及X情报中心已于漏洞收录时向漏洞订阅用户推送该漏洞情报,并将持续推送后续更新;对于已经录入资产的用户,支持实时自动化排查受影响资产。
微步威胁感知平台TDP已于2026年10月22日支持检测,检测ID: S3100185607、S3100185611、S3100185616,模型/规则高于:20261022100000可检出。
微步威胁防御系统OneSIG已支持防护规则ID为:3100185607、3100185611、3100185616。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论