PHP2Shell 二更:条件吃风水,ThinkPHP 受影响,先升级
原创
MessFeel
MessFeel
MessFreeSecurity
2026年10月21日 23:07
北京
去阅读
PHP 官方已发布修复版本;实际复现我的判断很吃风水,也可能是我比较水。
10 月 21 日,PHP 官方披露了两项可导致未授权远程代码执行的严重漏洞:CVE-2026-109618 和 CVE-2026-109619。官方将所有处理 Web 请求的 PHP 部署纳入风险范围,包括 PHP-FPM、Apache mod\_php、php-cgi 等;其中,mod\_php 风险最高,已有攻击在应用代码执行前触发的验证。PHP 在框架启动前已处理请求;单看框架版本无法判断风险。PHP 官方公告
两个漏洞,坏在两个不同的时间点
第一个漏洞发生在同一次请求的清理阶段。PHP 接收表单和文件上传时,会先解析请求体,再把结果交给应用。解析过程中,某些内部数据可能已被引用,却尚未完成初始化。如果这时内存分配失败,旧的内存不足处理会直接跳出当前流程;随后清理代码又把半成品当成有效对象处理。CVE-2026-109618 就出在这段“初始化被打断,清理却继续”的缝隙里。官方确认:在 Apache mod\_php 下,即使请求启动失败,清理仍会执行;攻击链因此可以发生在业务脚本开始之前。官方还确认了默认 PHP 输入与内存限制、正常多工作进程 prefork 配置下的 HTTP 远程代码执行。PHP 对 CVE-2026-109618 的技术通告
第二个漏洞跨越前后两次请求。PHP 工作进程会反复处理请求,而每次请求的内存本应在结束时释放。某些错误、会话等全局状态却可能留下指向上一请求内存的引用。下一次请求如果在常规初始化之前使用它,就会访问已经释放的内存。CVE-2026-109619 的必要链路是:前一请求留下状态、请求内存被释放、同一工作进程接到后一请求、早期处理逻辑使用旧引用。官方已确认“会话上传进度”等路径;在 mod\_php 中,相关状态建立和异常中断可发生于请求解析阶段。PHP-FPM 的启动失败处理方式不同,官方验证的 FPM 路径还依赖应用执行阶段存在合适的触发条件,不能把两种运行方式说成同一条利用链。PHP 对 CVE-2026-109619 的技术通告
这也是“PHP2Shell”容易引起误解的地方:它不是一个 函数调用漏洞,也不是只要上传文件就能执行命令。它涉及 PHP 解析、异常退出、清理和工作进程复用;能否把内存错误稳定转化为代码执行,还受 PHP 构建、扩展、前端代理和内存布局影响。但官方已经确认了实际的远程代码执行影响,不能因为利用链复杂就把风险降为“理论问题”。官方漏洞影响说明
ThinkPHP 最新版会不会受影响?
会,前提是它运行在受影响且未修复的 PHP 环境中。以 ThinkPHP 8 官方应用骨架为例,public/index.php 才开始加载 Composer、创建应用并运行 HTTP 请求处理;PHP 对请求体的自动解析发生在这之前。框架路由、控制器、鉴权和参数校验尚未获得执行机会,就不能替 PHP 的启动阶段兜底。ThinkPHP 8 官方入口文件
因此,对“最新版 ThinkPHP + 未打补丁的 PHP + Apache mod\_php”这组条件,应该按 PHP 运行时漏洞暴露处理。升级 ThinkPHP 依赖,不能修复 PHP 二进制和 SAPI 中的缺陷。反过来同一 PHP 环境里,换成其他框架或简单脚本,仍可能经过相同的运行时路径。PHP 官方适用范围
官方是否要求升级?答案很明确
PHP 官方用语是“强烈建议所有 PHP 用户立即更新”,并明确指出:只有更新才是完整解决方案。修复版本分别是 PHP 8.5.12、8.4.27、8.3.36、8.2.35。通过发行版或商业长期支持渠道安装 PHP 的,应确认供应商是否已回移这两项补丁;PHP 8.1 及更早版本已不再获得 PHP 项目的常规更新,需要核对供应商修复或迁移到受支持版本。PHP 官方升级说明
如果业务无法当天完成升级,官方列出的请求体限制、会话上传进度开关和内存相关配置,只能降低部分已知路径的暴露。隐藏错误输出、加一条 WAF 规则,或单独关闭某个功能,都不能替代补丁。处置时先核对实际服务 Web 请求的 PHP 版本和运行方式,再确认已安装官方修复版或供应商回移补丁,并重启相关工作进程使更新生效。PHP 官方临时缓解措施
应用框架无法覆盖运行时在应用启动前做的工作。ThinkPHP 站点排查应先记录 PHP 版本与 SAPI,再核对框架版本。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论