漏洞编号:CVE-2026-109618 / CVE-2026-109619/CVE-2026-115560
CVSS v4.0:9.2(严重)
披露时间:2026年10月21日 14:00 UTC
利用状态:补丁发布后 19 分钟内即出现野外利用尝试,已确认为活跃利用
影响范围:PHP 8.2.x < 8.2.35、8.3.x < 8.3.36、8.4.x < 8.4.27、8.5.x < 8.5.12
发布单位:快页信息技术有限公司AIMSS安全运营中心
PHP2Shell 是 PHP 解释器层面的两个关键内存破坏漏洞,与应用程序代码无关——即使应用本身编写完全规范,只要运行在受影响版本的 PHP 上即存在风险。攻击者无需认证即可通过构造的 HTTP 请求在 Web 服务器权限下执行任意代码。
在内存不足(OOM)场景下,PHP 的内存管理逻辑可能在请求数据尚未完整时终止处理,导致请求关闭阶段对无效数据进行后续处理。攻击者可通过发送消耗大量内存的 Multipart 请求触发该条件,在 Apache mod_php 环境下已确认可利用。
PHP 的全局状态在内存释放后仍引用前一个请求的数据。当同一 Worker 处理后续请求时,可能重新使用残留数据。攻击者可精心编排多个请求由同一 Worker 处理,结合 Session Upload Progress 等机制触发代码执行,PHP-FPM 和 Apache mod_php 均受影响。
这是唯一彻底消除 PHP2Shell 风险的措施。不存在有效的临时绕过方案。
当前分支 升级至
PHP 8.5.x 8.5.12
PHP 8.4.x 8.4.27
PHP 8.3.x 8.3.36
PHP 8.2.x 8.2.35
操作要点:
使用 php -v 检查 CLI 版本,但务必同时确认 Web 服务器实际加载的 PHP 版本(CLI 版本可能与 FPM/mod_php 不一致)
升级后必须重启 Apache 或 PHP-FPM 进程,确保新解释器生效
PHP 8.1 及更早版本已停止支持,无官方补丁,必须迁移至 8.2+
容器化部署需拉取包含修复的新镜像并重新部署,而非仅更新标签
2026年10月23日,PHP 追加披露了 CVE-2026-115560:在“配置中设为 php_binary 或 php_serialize,但应用代码在 session_start() 前用 ini_set() 切回 php”的非典型场景下,Session Upload Progress 机制仍存在 RCE 路径。PHP 尚未发布针对此问题的补丁。
立即缓解措施:
在 php.ini 中设置:
session.upload_progress.enabled = 0
或在 PHP-FPM 池配置(如 www.conf)中设置:
php_admin_flag[session.upload_progress.enabled] = off
在 php.ini、FPM pool 配置或服务器级别设置,不可依赖 ini_set() 或 .user.ini
设置后重启所有 PHP Worker
如果应用从不动态切换 session.serialize_handler,可暂时保留该功能开启;但若不确定,关闭是最安全的选择
注: PHP 下一次常规 bugfix 发布,届时将提供完整修复
结合以下迹象进行日志审查:
排查维度 | 可疑迹象 |
HTTP 请求 | 异常的大型 Multipart POST;出现 Allowed memory size exhausted 错误后紧接可疑请求 |
进程行为 | PHP 进程意外崩溃、重启,或出现无法解释的子进程 |
文件系统 | Web 根目录下出现非部署产生的 .php 文件;session.save_path 中存在无法按当前序列化器正常解码的会话记录 |
会话异常 |
若发现上述迹象,按已失陷处置:隔离主机、轮换该主机可访问的所有凭据(数据库密码、API 密钥、云凭证)、审查横向移动痕迹。
在升级前,先确认以下系统是否在受影响范围内:
· 所有面向互联网的 PHP 应用(Apache mod_php 最高风险,已确认无需认证即可 RCE)
· PHP-FPM 后端(特定条件下可利用)
容器镜像与 Docker 基础镜像
· 托管控制面板(cPanel 等)内置 PHP
已停止维护的遗留系统(PHP 8.1 及以下)
第三方设备/应用捆绑的 PHP 运行时
注意:仅升级 CMS 或框架不能修复此漏洞——漏洞位于 PHP 解释器本身。
如果生产环境因兼容性测试等原因无法在数小时内完成升级,可采取以下部分缓解:
WAF 规则:部署针对异常大型 Multipart 请求的拦截规则,限制单请求内存消耗。Microsoft 建议 Azure WAF 托管规则可作为补偿性防护
关闭 Session Upload Progress:session.upload_progress.enabled = 0,同时覆盖 CVE-2026-109619 的部分利用路径和 CVE-2026-115560
限制暴露面:将 PHP 服务置于反向代理之后,对请求体大小和并发连接数施加严格限制
进程隔离:确保 PHP-FPM Worker 以最小权限运行,降低 RCE 成功后的影响
必须明确:上述措施均为部分缓解,CVE-2026-109618 的 OOM 触发路径和 CVE-2026-109619 的 Worker 复用路径无法被完全阻断。升级仍是唯一根治手段。
时间 | 事件 |
10月21日 14:00 UTC | PHP 发布修复版本 |
10月21日 14:19 UTC | |
10月21日 | |
10月23日 | PHP 追加披露 CVE-2026-115560(未修补) |
攻击者已在补丁发布后立即行动,PoC 已公开传播。未升级的 PHP2Shell 暴露系统应视为正在被主动扫描和尝试利用。
确认版本:通过 phpinfo() 或 php -i | grep "PHP Version" 验证 Web SAPI 版本
确认进程重启:检查 Apache/PHP-FPM 进程启动时间晚于升级时间
确认 session.upload_progress.enabled 状态符合预期
复查访问日志中是否有升级前的可疑 Multipart 请求模式,评估是否需要启动失陷排查
参考来源:PHP 官方安全公告、CERT-AGID、CERT.UG、ThaiCERT、Microsoft Learn、Brandefense、Mallory 威胁情报。本指南基于 2026 年 10 月 24 日前公开信息编制。