关于 PHP 远程代码执行漏洞 PHP2Shell(CVE-2026-109618、CVE-2026-109619)的安全通告
观安MSS运营团队
观安MSS运营团队
观安无相实验室
2026年10月22日 14:16
上海
去阅读
| 项 | 值 |
| 发布日期 | 2026年10月22日 |
| 漏洞等级 | 严重(Critical) |
| CVSS v4.0 | 9.2 / 9.2 |
| 涉及组件 | PHP 解释器(非应用插件或框架) |
| 处置时限 | 对公网提供 Web 服务的系统,立即升级并重启 |
一、概述
2026年10月21日,PHP 官方发布紧急安全更新,修复两个可导致未授权远程代码执行的高危漏洞,统称 PHP2Shell:
• CVE-2026-109618:内存耗尽处理不当,造成请求状态损坏
• CVE-2026-109619:请求结束后全局状态残留,造成释放后使用
两个漏洞位于 PHP 引擎本身。攻击者只需向运行 PHP 的 Web 服务发送特制HTTP 请求,即可在 Web 进程权限下执行代码,或读取该进程内存中的口令、令牌和密钥。应用层登录校验不能阻断此问题。Apache mod\_php 上,攻击可在业务代码运行之前完成。
官方修复版本为 PHP 8.5.12、8.4.27、8.3.36、8.2.35。升级后必须重启 Apache、PHP-FPM、LiteSpeed 或对应容器。配置缓解只覆盖部分路径,不能替代升级。
二、影响范围
受影响的是所有处理 Web 请求的 PHP,包括:
• PHP-FPM(Nginx + PHP-FPM 同样受影响)
• Apache mod\_php(风险最高)
• php-cgi
• FrankenPHP
• LiteSpeed(LSAPI)
版本范围如下。
| 分支 | 状态 | 处置 |
| 8.5.12 以下的 8.5 | 受影响 | 升级到 8.5.12 |
| 8.4.27 以下的 8.4 | 受影响 | 升级到 8.4.27 |
| 8.3.36 以下的 8.3 | 受影响 | 升级到 8.3.36 |
| 8.2.35 以下的 8.2 | 受影响 | 升级到 8.2.35,并安排脱离 8.2(安全支持止于 2026-12-31) |
| 8.1、8.0、7.4 | 官方无正式版 | 向发行版或 LTS 厂商获取回植,或使用官方最小化源码回植后立即规划升级 |
| 7.3 及更早、PHP 5 | 官方无修复 | 升级到受支持版本;在此之前限制对公网暴露 |
研究人员认为相关代码可追溯至PHP 5.4。官方明确发布修复包的范围是 8.2 及以上仍维护分支。
下列位置容易漏检,需单独清点:
• 宝塔、cPanel、phpStudy、XAMPP、WAMP、HestiaCP 等面板或集成环境自带的 PHP
• Docker、Kubernetes 镜像中的 PHP
• 虚拟主机、应用加速节点、跳板机上的独立 PHP
• 只随业务系统打包、不走操作系统软件源的 PHP
仅用于命令行、不处理 HTTP的 PHP 优先级较低,仍应纳入升级计划。不含 PHP 的系统不受本次漏洞影响。
三、漏洞说明
CVE-2026-109618。 PHP 在内存耗尽时会中断当前处理。若此时请求内部数据只初始化了一部分,后续清理会把无效数据当作有效数据使用,从而造成内存破坏和代码执行。官方已在 Apache mod\_php、默认限制、多 worker 条件下验证未授权代码执行。PHP-FPM 在源码层面同样存在风险;官方尚未给出针对 FPM 的完整利用,但不能据此视为不受影响。
CVE-2026-109619。 worker 进程会保留指向上一个请求内存的全局状态。致命错误或内存耗尽可能使这些状态在内存释放后仍然留下。同一个worker 处理下一个请求时,会在正常初始化之前使用该状态,造成释放后使用、内存泄露和代码执行。官方已确认的入口包括默认开启的会话上传进度(session.upload\_progress),以及 PHP 8.5 的致命错误回溯(fatal\_error\_backtraces)。该会话路径已在 mod\_php 和 PHP-FPM 上验证。关闭错误显示不能阻断此问题。
成功利用后,攻击者获得 Web服务账户权限,并可读取进程内存中的数据库口令、API 密钥和会话密钥。
四、修复要求
1. 从 php.net 自行编译或使用官方 Windows 构建
升级到 8.5.12、8.4.27、8.3.36 或 8.2.35。下载页:PHP Downloads。升级后重启承载站点的全部 PHP 进程。
2.面板、镜像和第三方源
• 面板内的PHP 用面板自身的版本管理升级,再重启该面板的 PHP-FPM。操作系统升级不会修改面板目录中的 PHP。
• 容器镜像需重新构建并滚动发布,确认旧 Pod 已退出。官方 Docker Hub 镜像覆盖 8.2 及以上;更旧标签不会随宿主机补丁自动更新。
• 2026-10-21 当天,rpms.remirepo.net 尚无更新。使用该源的系统改为发行版包或自行编译,并复核该源随后是否已跟上。
3.已停止上游支持的版本
PHP 项目不为 8.1 及更早版本发布正式包。7.4、8.0、8.1 仅提供最小化源码回植,分支名为 PHP-7.4-CVE-2026-109618-109619、PHP-8.0-CVE-2026-109618-109619、PHP-8.1-CVE-2026-109618-109619。回植只覆盖本次问题,这些分支上的其他已知漏洞仍然存在。
五、暂时无法升级时的缓解
以下措施写入 php.ini、FPM 池或 Apache 配置,并用管理员级指令禁止应用覆盖。修改后重启全部 worker。ini\_set() 和 .user.ini 在请求解析之后才生效,不能用于本次缓解。
针对 CVE-2026-109618:
| 配置项 | 取值 | 说明 |
| memory\_limit | -1 | 去掉可被稳定触发的内存上限失败点。会取消 PHP 自身内存上限,只允许在升级前短时间使用 |
| post\_max\_size | 8M | 无上传业务使用 8M;必须接收上传时使用 32M |
| upload\_max\_filesize | 2M | 保持低于 post\_max\_size |
在 Nginx、Apache 或网关同时限制解码后的请求体大小、字段数量、multipart 部件数量、单个部件的头部数量和嵌套深度。不接收表单上传的站点,在入口直接拒绝multipart/form-data。
不要使用 RLIMIT\_AS、RLIMIT\_DATA 或 ulimit -v 代替内存限制。容器可用 cgroup memory.max 限制单个 worker。
针对 CVE-2026-109619:
| 配置项 | 取值 | 说明 |
| session.upload\_progress.enabled | 0 | 关闭默认开启的会话上传进度。补丁完成后,业务若不使用该功能,继续保持关闭 |
| fatal\_error\_backtraces | 0 | 仅 PHP 8.5。关闭已确认的致命错误回溯路径 |
| pm.max\_requests | 1 | 可选。缩短同一 worker 连续处理多个请求的时间,只削弱 CVE-2026-109619 |
同时删除会在请求初始化前产生告警的过时配置。
六、修复核验
1. 发行版确认更新日志含这两个 CVE。Debian / Ubuntu:apt changelog php8.3-common 后检索 CVE-2026-109618 与 CVE-2026-109619。RHEL 系:rpm -q --changelog php-common 做同样检索。包名按实际安装的 PHP 分支替换。
2. 确认 php-fpm、apache2或 httpd的启动时间晚于软件包安装时间。
3. 确认容器镜像摘要已更新,线上不再保留旧副本。
4. 对2026年10月20日至重启完成之前对公网开放的系统,轮换数据库口令、云 API 密钥、应用密钥、会话盐和对象存储密钥,并废止已有会话。
七、入侵排查
若升级前已对公网提供服务,同步检查是否已有落地痕迹:
• Web 运行账户是否派生出 shell 或异常子进程
• 上传目录、临时目录、会话目录是否新增 PHP 文件
• 是否存在新增计划任务、系统服务、SSH 公钥或系统用户
• Web 账户是否有异常外联
• PHP-FPM 子进程是否在短时间内大量崩溃并重启
八、参考
• PHP 官方公告:php.net 2026-10-21
• CVE-2026-109618:GHSA-w8hw-w9fx-j79w
• CVE-2026-109619:GHSA-6wmf-4rv5-p3rp
• PHP ChangeLog:ChangeLog-8
• Ubuntu:USN-8948-1、USN-8948-2
• Wiz 分析:PHP2Shell
• Datadog:Security Labs
来源:观安MSS运营团队
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。












评论