首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >什么是 php2shell 漏洞?CVE-2026-109618、109619 原理全解析

什么是 php2shell 漏洞?CVE-2026-109618、109619 原理全解析

原创
作者头像
hollyx
发布于 2026-10-23 17:33:46
发布于 2026-10-23 17:33:46
1220
举报

摘要: php2shell 是 PHP 核心解释器的两个高危远程代码执行漏洞(CVE-2026-109618、CVE-2026-109619),CVSS v4.0 评分 9.2。攻击者无需登录,发送特制 multipart POST 请求即可触发内存破坏并执行任意命令。腾讯云主机安全(CWP)已支持该漏洞检测。

php2shell 不是某个 Web 框架的问题,而是 PHP 解释器核心的内存安全缺陷。两个漏洞编号为 CVE-2026-109618 和 CVE-2026-109619,由 PHP 官方于 2026 年 10 月 21 日披露,CVSS v4.0 评分均为 9.2,属高风险。核心结论是:未经身份验证的远程攻击者通过一条特制 HTTP 请求,就能在 PHP 进程权限下执行任意代码,所有处理 Web 请求的 PHP 部署形态都在受影响范围内。

一、php2shell 指的是哪两个漏洞

php2shell 是这两个漏洞的统称代号,对应 PHP 官方发布的两个独立 CVE 编号:

漏洞编号

核心缺陷类型

风险结果

CVE-2026-109618

内存耗尽(OOM)处理不当导致内存破坏

远程代码执行

CVE-2026-109619

跨请求状态未重置导致释放后使用(Use-After-Free)

远程代码执行、内存泄露

两个漏洞的 CVSS v4.0 评分都是 9.2,均可导致未授权的远程代码执行(RCE)。攻击者既不需要登录,也不需要站点暴露特定业务接口,只要目标在受影响的 PHP 版本范围内,一条特制 HTTP 请求就可能让服务器失陷。

二、CVE-2026-109618 的原理:用内存耗尽触发内存破坏

PHP 在处理内存耗尽(OOM,Out Of Memory)错误时,会使用 longjmp() 提前退出当前执行上下文。问题出在某些上下文中:请求内存在完全初始化之前就已经处于可访问状态,如果此时内存分配恰好失败,PHP 没有正确处理这次提前退出,导致这块请求内存处于无效状态。

攻击者的利用手法是构造一个特殊的 multipart 请求——里面塞入大量头部、嵌套字段名或空文件控件。这样的请求在表面上看起来并不超过 post_max_size 限制,却能在内部耗尽 memory_limit,从而触发 OOM。

在 Apache mod_php 这类无条件调用请求关闭过程的 SAPI 中,关闭过程会去处理这些已经无效的内存状态,最终导致内存破坏和远程代码执行。longjmp 是 C 语言中一种跨函数跳转机制,用于从深层调用直接返回到预设位置;这里的问题是跳转后遗留了没清理干净的内存状态。

三、CVE-2026-109619 的原理:陈旧状态引发释放后使用

PHP 的工作进程(worker)会在处理多个请求时保留一些全局状态,包括错误信息、会话、对象和扩展状态。正常情况下,这些状态应该在请求内存释放前被完全重置。CVE-2026-109619 的缺陷在于:这些状态在内存释放前没有被完全重置。

当下一个请求的某些输入、配置、会话或错误处理操作,在当前请求正常初始化之前就运行时,它们会访问到这些没被重置的陈旧状态,形成释放后使用(Use-After-Free)。

攻击者可以构造特定的堆布局,让同一个工作进程处理的两个请求分别充当"生产者"和"消费者":前一个请求留下失效状态,后一个请求去消费它,最终实现未授权的堆释放后使用、内存泄露或远程代码执行。释放后使用指程序已把一块内存标记为可回收,却仍继续读写它,攻击者借此操纵内存内容。

四、哪些 PHP 部署形态和版本受影响

PHP 官方明确,所有处理 Web 请求的 PHP 部署形态均受影响,包括 PHP-FPM、Apache mod_php、php-cgi、FrankenPHP 和 LiteSpeed,其中 Apache mod_php 风险最高。

受影响与安全版本对照如下:

PHP 分支

受影响版本

安全版本

5.x~8.2

低于 8.2.35

8.2.35

8.3.x

低于 8.3.36

8.3.36

8.4.x

低于 8.4.27

8.4.27

8.5.x

低于 8.5.12

8.5.12

PHP 官方同时说明:本次漏洞没有完整的缓解方案,升级到修复版本是唯一安全的选择。无法立即升级时,可将 session.upload_progress.enabled 设置为 0 作为临时缓解,但这不是完整修复——CVE-2026-109619 存在多条失效状态消费路径,关闭上传进度只能堵住其中一条。

五、腾讯云主机安全如何帮助发现这类漏洞

php2shell 这类漏洞的危险之处在于:它藏在 PHP 核心里,普通业务层扫描不容易直接感知,需要对主机上运行的组件版本和入侵行为做持续监测。

腾讯云主机安全(CWP,腾讯 T-Sec 主机安全)已支持该漏洞检测。它的漏洞检测能力会对主机上存在的高危漏洞风险进行实时预警并提供修复方案,覆盖系统组件漏洞、Web 应用漏洞与应急漏洞;配合资产管理能力,可以自动清点主机上的进程、端口、组件等资产指纹,帮助你快速定位哪些服务器装了受影响版本的 PHP。多维度入侵检测还能对 Webshell、反弹 Shell、恶意请求等入侵行为实时告警,用于发现漏洞是否已被利用。

总结

php2shell(CVE-2026-109618、CVE-2026-109619)是 PHP 解释器核心的两个 RCE 漏洞,CVSS 9.2,可被未授权远程利用,所有 Web 场景的 PHP 部署都在影响范围内。理解原理只是第一步,真正的止损动作是:尽快把 PHP 升级到 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 及以上,并借助安全产品确认资产现状与利用痕迹。

腾讯云已上线对应安全解决方案,可按需使用:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、php2shell 指的是哪两个漏洞
  • 二、CVE-2026-109618 的原理:用内存耗尽触发内存破坏
  • 三、CVE-2026-109619 的原理:陈旧状态引发释放后使用
  • 四、哪些 PHP 部署形态和版本受影响
  • 五、腾讯云主机安全如何帮助发现这类漏洞
  • 总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档