php 8.2.35 是修复 cve-2026-109618 和 cve-2026-109619 的唯一完整方案,官方明确无有效临时配置缓解措施,漏洞位于请求生命周期底层,升级并重启 worker 进程方可彻底修复。

PHP 8.2.35 就是官方为修复 CVE-2026-109618 和 CVE-2026-109619 提供的**唯一完整修复版本**。所谓“不升级版本的临时修复”,本质上不存在——你无法在保持 8.2.34(或更低)的前提下,通过配置、扩展禁用或 .htaccess 规则彻底堵住这两个漏洞。
官方已明确声明:**没有能够完整替代补丁的配置缓解方案**。所有声称“加几行配置就能防住”的做法,都只覆盖部分利用路径,且极易被绕过。
为什么不能靠 php.ini 或 Web 服务器配置“临时挡一挡”
这两个漏洞触发点在 PHP 请求生命周期最底层:一个是 OOM(内存耗尽)时 longjmp() 导致的状态撕裂,另一个是请求间残留未清理的内部结构体(“影子状态”)。它们发生在 main() 函数入口之前、应用代码甚至 php.ini 加载之后——也就是说,你在 php.ini 里关掉 file_uploads、限制 post_max_size、禁用 exif 扩展,对漏洞利用链毫无影响。
哪些“缓解措施”实际效果有限但常被误用
-
upload_max_filesize = 1M和max_file_uploads = 0:CVE-2026-109618 的 multipart 解析路径确实依赖上传,但攻击者可用极小体积的畸形字段触发 OOM,不传文件也能打 -
disable_functions = exec,passthru,shell_exec,system:漏洞执行的是任意 PHP 字节码,不是调用这些函数;它直接劫持执行流,绕过函数禁用机制 - Apache
mod_security或 Nginx WAF 规则拦截特定 UA 或参数名:已知利用样本无固定特征,且可在请求头、空 body、multipart boundary 中任意构造触发条件 - 设置
pm.max_requests = 1(FPM):对 CVE-2026-109619(跨请求状态残留)有轻微压制作用,但无法阻止单请求内触发的 CVE-2026-109618,且大幅降低性能
如果你真没法立刻升级到 8.2.35,唯一可操作的止损动作
这不是修复,而是收缩暴露面:
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
- 确认你的 PHP 实际承载方式:
php-fpm?mod_php?还是FrankenPHP?其中mod_php风险最高(已有应用代码运行前的完整 RCE 演示),应优先隔离 - 用反向代理(如 Nginx)将 PHP 端口仅放行给可信内网 IP,禁止公网直连
php-fpmsocket 或 9000 端口 - 若使用宝塔、cPanel 等面板,检查其是否已打包
8.2.35——很多厂商镜像尚未同步,别只看面板显示的“PHP 版本号”,要进终端执行php -v确认真实版本 - 临时停用非必要入口:关闭测试环境、后台 API 接口、上传接口,尤其避免接收 multipart/form-data 请求
最易被忽略的关键点
升级后必须重启全部 PHP worker 进程:systemctl restart php-fpm 或 apachectl graceful,否则旧进程仍运行着未修复的二进制。容器部署更要确认镜像层已更新,而不是只改了 Dockerfile 却没重建镜像。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










