PHP 8.x漏洞频发主因是历史包袱、环境滞后与开发惯性:73%网站仍在用停更旧版(如7.7%仍跑20年未维护的PHP 5.x),漏洞实为PHP 8.2.34等未打补丁的老小版本问题,非8.x架构缺陷。

老版本长期不升级,让新版本“背锅”
截至2026年10月,约73%的PHP网站仍在使用已停止支持的版本:其中7.7%还在跑PHP 5.x(2005年发布,超20年未维护),大量站点卡在PHP 7.4(2022年底终止支持)。这些旧版本根本不会收到PHP 8.x的安全补丁,但外界一查是“PHP网站”,就容易误归为“PHP 8有问题”。实际上,漏洞出现在PHP 8.2.34、8.3.35这类未打补丁的老小版本上,而非8.x整体架构缺陷。
核心漏洞藏得深,修复需要底层重构
像最近爆发的php2shell(CVE-2026-109618/109619),问题代码可追溯至2012年的PHP 5.4.0,深埋在Zend引擎的内存管理与异常退出逻辑中。这类漏洞不是语法层错误,而是多年累积的边界处理疏漏——它不靠写错一行if就能触发,而是在OOM、session上传、多请求状态残留等极特殊组合下才暴露。AI辅助发现后,官方花了两个月才完成安全修复与回归验证,说明修复成本远高于普通bug。
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
开发者仍沿用危险模式,防护没跟上语言进化
PHP 8.x本身提供了很多安全增强能力:严格类型、allowed_classes参数强制白名单、phar.readonly=On默认开启、JIT内存隔离等。但现实中:
• 仍有项目直接include($_GET['page']),靠简单过滤防LFI,无视白名单映射原则
• unserialize()被用于接收前端传来的JSON-like字符串,而不是改用json_decode()
• open_basedir没设,allow_url_include开着,disable_functions里漏掉exec或system
• 框架停留在ThinkPHP 5.x等已停更版本,POP链未被清理
生态碎片化加剧风险暴露面
WordPress、Drupal、Laravel等主流系统都基于PHP,但它们各自维护节奏不同。一个PHP内核漏洞可能同时影响几十种CMS+插件组合;而某个插件自己写的文件包含逻辑,又会绕过PHP 8.x的任何语言级防护。再加上共享主机、宝塔面板、XAMPP等“一键部署”环境默认配置宽松,真实攻击面从来不只是PHP解释器本身,而是整个堆栈的最弱一环。


















