PHP 远程代码执行漏洞(php2shell,CVE-2026-109618/109619)

漏洞描述

PHP 是一种广泛使用的开源服务器端脚本语言,通常以 PHP-FPM、CGI 或 Apache 模块(mod_php)方式部署,是 WordPress、Drupal、Laravel、Symfony、Magento 等主流框架与建站系统,以及大量 Web 应用、共享主机和控制面板的常见运行环境。

2026 年 10 月,长亭安全应急响应中心监测到 PHP Core 的 session 上传进度(session.upload_progress,rfc1867 回调)处理机制存在内存破坏缺陷,公开讨论中以 php2shell 指代该组漏洞,对应 CVE-2026-109618 与 CVE-2026-109619,官方评级均为 CVSS v4.0 9.2(严重)。攻击者可通过构造特制的 multipart/form-data 请求破坏 PHP 进程内存,进而可能导致远程代码执行。

长亭已在实验环境(PHP 8.5.11 NTS + Apache 2.4.68 mod_php)完成确定性触发验证:release 构建 3/3 稳定触发 SIGSEGV,debug/ASAN 构建可观察到 zend_reference 引用计数下溢断言。截至通告发布,PHP 官方尚未公布完整受影响版本与修复版本,计划于 2026 年 10 月 21 日 14:00 UTC 发布安全更新。建议所有使用 PHP 的环境立即清点资产、准备补丁窗口,并对已停止安全支持的版本采取隔离或迁移措施。

漏洞危害

若完整利用链达成,攻击者可在 PHP 进程权限(Web 服务运行用户,如 www-data、apache)下执行任意代码,可能导致服务器被完全控制、敏感数据泄露、业务中断,或被用于部署 WebShell、建立持久化访问并以此为跳板向内网横向移动。

除远程代码执行外,该缺陷还可被用于拒绝服务:在 files 会话处理器下,rfc1867 中途重开会话会造成同一进程内 flock 自死锁,阻塞并耗尽 PHP-FPM / Apache prefork worker,实验环境中 5 个并发请求即可导致服务长时间不可用。

在会话安全层面,PHP_SESSION_UPLOAD_PROGRESS 值中含分隔符"|"时可触发会话编码失败并写入空会话文件,配合默认 use_strict_mode=0 下会话 ID 由客户端指定,可能造成会话清空或会话固定。

由于 PHP 部署面极广,WordPress、Drupal、Laravel、Symfony 等常见应用与共享主机环境均可能受影响;实际影响范围取决于目标 PHP 版本、运行方式、会话配置以及业务代码中析构路径是否调用会话 API。

修复方法

一、升级修复方案
PHP 官方计划于 2026 年 10 月 21 日 14:00 UTC 发布安全更新,修复版本以官方发布为准(https://www.php.net/archive/2026.php)。补丁发布后应优先升级互联网暴露的 Web 服务器、共享主机及控制面板/CMS 环境,并同步确认 Linux 发行版与主机商提供的回溯更新;PHP 8.1 及更早版本已停止支持,应尽快迁移或下线隔离。

二、临时缓解方案
以下措施为应急临时方案,可能影响业务功能,升级完成后应及时评估是否保留:
1、若业务不使用上传进度条,在 php.ini、.user.ini 或 .htaccess 中设置 session.upload_progress.enabled = Off,并重载 PHP-FPM 或 Web 服务器,切断已确认的中途会话生命周期路径;
2、在 WAF、反向代理或网关层收紧对 multipart/form-data 请求的检查与速率限制,重点保护不需要文件上传的业务端点;
3、启用 session.use_strict_mode = 1,避免接受攻击者指定的任意会话 ID;审计会话包装类与自定义 save handler 的重入风险;
4、审计应用代码,避免在 destruct、wakeup 等析构路径中调用 session_destroy()、session_write_close() 等会话 API;
5、对 PHP 8.1 及更早的停止支持版本,采取下线、网络隔离、VPN 或白名单访问等措施,直至完成迁移。

三、资产排查与失陷排查
1、清点互联网与内网暴露的 PHP 服务,记录 PHP 版本、运行方式(mod_php / PHP-FPM / CGI)、session.upload_progress 与 session.use_strict_mode 配置;
2、结合 Web 访问日志排查异常的 multipart/form-data 请求,重点关注携带 PHP_SESSION_UPLOAD_PROGRESS 字段、异常 SID 指定等可疑请求;
3、监控 PHP 工作进程异常退出、Web 服务器崩溃日志(如 Apache AH00051)、PHP 进程启动的异常子进程与异常文件写入,保留 Web 服务器与 PHP 日志;
4、发现可疑迹象时立即隔离主机、保存日志与镜像,并排查 WebShell、持久化与横向移动痕迹。

信息来源:雷池