PHP 8.2.x 低于 8.2.35 版本受 CVE-2026-109618/CVE-2026-109619 影响,需通过 php -v、phpinfo() 和 php-fpm -v 精确核验版本,重点检查 multipart 请求、upload_progress 启用及 Apache + mod_php 部署风险,升级至 8.2.35 或禁用 upload_progress 并加固 WAF。

排查 PHP 8.2 项目上传接口的逻辑漏洞,不能只盯着业务代码是否校验了文件后缀或 MIME 类型,更要关注底层运行环境是否受已知高危漏洞影响——尤其是 2026 年 10 月曝出的两个 Critical 级 RCE 漏洞(CVE-2026-109618 / CVE-2026-109619)。它们直接影响上传路径的内存处理机制,且无需登录即可触发。
确认当前 PHP 版本是否在危险范围内
PHP 8.2.x 中,所有低于 8.2.35 的版本均受影响。仅靠“用了 8.2”不等于安全,必须精确到小版本:
- 在命令行执行
php -v查看 CLI 环境版本 - 在 Web 环境中新建一个
info.php文件,写入<?php phpinfo(); ?>,通过浏览器访问,确认实际提供服务的 PHP 版本(常与 CLI 不同) - 若使用 PHP-FPM,还需运行
php-fpm8.2 -v或检查ps aux | grep php-fpm对应进程所加载的配置与二进制路径
重点检查上传流程是否触发漏洞利用链
这两个漏洞并非传统意义上的“业务逻辑错”,而是由特定上传行为触发的内核级状态异常。以下情况需高度警惕:
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
- 接口接收
multipart/form-data请求,但未设置或绕过了post_max_size限制(例如构造无Content-Length的畸形请求) - 启用了
session.upload_progress.enabled = 1(PHP 默认开启),且上传请求中携带了PHP_SESSION_UPLOAD_PROGRESS字段——该功能会在 session 初始化前就介入内存分配,是 CVE-2026-109619 的主要入口 - 使用 Apache + mod_php 部署形态(比 Nginx + PHP-FPM 更危险),因为其请求失败后仍会强制执行 shutdown 流程,放大内存状态错乱风险
快速验证是否存在可利用痕迹
不依赖 PoC 扫描器,可通过日志和配置交叉判断:
立即学习“PHP免费学习笔记(深入)”;
- 检查 PHP 错误日志中是否频繁出现
Allowed memory size exhausted或Out of memory,尤其伴随Segmentation fault或 worker 进程崩溃重启 - 查看
php.ini中log_errors = On和error_log路径是否生效;同时确认display_errors = Off(生产环境必须关闭) - 搜索项目中是否直接调用
unserialize()处理上传后的临时文件名、元数据等用户输入——这虽属另一类漏洞,但在上传上下文中极易与内存破坏形成组合利用
修复与缓解必须分层落地
升级是最根本手段,但过渡期需同步加固:
- 立即升级至 PHP 8.2.35 或更高版本(官方已发布,地址:php.net/archive/2026.php)
- 若暂无法升级,禁用高危组件:
session.upload_progress.enabled = 0,并重启 PHP-FPM 或 Apache - 对上传接口增加 WAF 规则:拦截含
PHP_SESSION_UPLOAD_PROGRESS的请求头或参数;限制 multipart 中 header 数量与单 header 长度 - 避免在上传回调、钩子函数中执行复杂对象反序列化或动态类加载操作


















