PHP 8.5 和 8.2 的 PHP2Shell 漏洞是同一组两个独立漏洞(CVE-2026-109618、CVE-2026-109619),技术原理、攻击面与风险等级完全一致,均为引擎层内存缺陷导致的未认证远程代码执行(CVSS 9.2),仅因各版本分支维护独立而需分别修复。

PHP 8.5 和 PHP 8.2 的 PHP2Shell 漏洞,本质不是“版本不同导致漏洞不同”,而是同一组两个独立漏洞(CVE-2026-109618 和 CVE-2026-109619)在不同 PHP 分支中均存在,且修复节奏按版本线独立发布。它们的技术原理、攻击面、风险等级完全一致,区别仅在于:
受影响的版本边界和补丁发布时间不同
- PHP 8.5 分支中,漏洞存在于所有 8.5.12 的版本;修复版是 8.5.12(2026年10月21日发布)
- PHP 8.2 分支中,漏洞存在于所有 8.2.35 之前的版本;修复版是 8.2.35(同日发布)
二者都满足以下共性:
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
- 都是引擎层内存缺陷,不依赖业务代码
- 都可通过特制 multipart POST 请求触发
- CVSS v4.0 评分均为 9.2,属于未认证远程代码执行(RCE)
- 都影响 PHP-FPM、mod_php、FrankenPHP 等全部 Web 运行模式
- 都无法被 WAF、输入校验、框架升级等应用层措施缓解
为什么需要分版本修复?
因为 PHP 的各主版本(8.2/8.3/8.4/8.5)维护分支相互独立,内存管理逻辑虽相似,但具体实现细节、结构体偏移、初始化流程存在差异。CVE-2026-109618 在 8.5 中涉及某段 JIT 缓存清理路径,在 8.2 中则落在传统 Zend VM 的请求重置环节;CVE-2026-109619 的悬空指针位置也因 GC 机制微调而不同。所以补丁必须逐分支适配、测试、发布。
实际影响上没有强弱之分
有人误以为“8.5 更新、更复杂,所以漏洞更危险”,其实相反:8.2 因长期用于稳定生产环境,存量更大;8.5 新部署多处于灰度或容器化环境,反而暴露面可能受限。真正决定风险的是——
- 是否对外提供 HTTP 服务
- 是否运行在未打补丁的版本上
- 是否使用 mod_php(官方明确指出其风险最高)
简单说:8.5.11 和 8.2.34 同样危险,就像两把锁芯不同但都能被同一把万能钥匙打开。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










