安全与回归测试指南 · CVE-2026-109618 · CVE-2026-109619

PHP 严重漏洞:修复版本与回归测试方法

了解 CVE-2026-109618 和 CVE-2026-109619,向服务提供方确认更新,并检查应用在修复后能否正常运行。

资料核对日期:2026 年 10 月 21 日。更新前请查看 PHP 官方公告。

先确认实际处理请求的 PHP 运行环境

PHP 已为受支持的分支发布修复。发行版和托管服务可能在不更改版本号的情况下回移补丁。判断软件包是否仍受影响前,请先查看服务提供方的公告。

PHP 公告说明了什么

2026 年 10 月 21 日,PHP 项目发布了 CVE-2026-109618 和 CVE-2026-109619 的修复。这两项严重运行时漏洞在特定条件下,可能让处理 Web 请求的 PHP 环境遭到未认证的远程代码执行。PHP 建议在确认版本和服务方补丁前,把处理 Web 请求的安装视为存在风险。

CVE-2026-109618 与内存不足时内部状态损坏有关。CVE-2026-109619 描述了全局状态可能保留上一个请求的内存引用。无需尝试复现攻击;重点是有计划地更新,并确认应用仍能正常工作。

公告特别提到 Apache 使用 mod_php 时的风险,也列出了 PHP-FPM、php-cgi、FrankenPHP 和 LiteSpeed。实际影响取决于运行环境、配置和应用路径,不要假设所有部署都面临相同情况。

受影响版本与修复版本

表格汇总了 PHP 于 2026 年 10 月 21 日发布的上游版本。“修复起始版本”是该分支首个包含官方修复的版本。操作系统软件包、服务方镜像和托管 PHP 可能已回移补丁,但显示的版本号不变;请同时查看服务方公告。

PHP 8.2 的安全支持计划于 2026 年 12 月 31 日结束。8.2.35 修复了该分支中的这些 CVE,但也应计划迁移到仍受支持的分支。PHP 不再为 8.1 及更早版本发布常规版本。7.4、8.0 和 8.1 有最小源码补丁,一些服务方也会维护自己的软件包。请确认实际安装的软件包。

PHP 分支受影响版本修复起始版本安全支持
8.5< 8.5.128.5.12支持中
8.4< 8.4.278.4.27支持中
8.3< 8.3.368.3.36支持中
8.2< 8.2.358.2.35截至 2026-12-31
8.1、8.0、7.4受影响;已结束常规支持最小源码补丁或服务方软件包向服务方确认
7.3 及更早版本受影响;已结束支持公告未列出上游版本迁移;不要假设已有补丁
各 PHP 分支的修复版本
PHP 8.5
更早版本8.5.12 已修复
PHP 8.4
更早版本8.4.27 已修复
PHP 8.3
更早版本8.3.36 已修复
PHP 8.2
更早版本8.2.35 已修复

请在同一分支内比较版本。发行版软件包可能包含回移补丁,因此显示不同的版本号。

更新前:盘点并做好准备

找出所有使用 PHP 的位置:服务器、容器、基础镜像、托管面板、内置 PHP 的产品、后台任务和测试环境。同一网站可能运行多个版本。确认哪个服务接收流量,以及谁负责更新。

记录版本和软件包来源、操作系统、Web 服务器、运行环境、镜像(如适用)、应用、环境、负责人,以及出问题时如何恢复到上一个版本。不要公开 `phpinfo()`,其中可能包含敏感配置。请使用内部清单和获准使用的服务方工具。

如果要切换 PHP 分支,请先阅读服务方说明和迁移指南。准备维护窗口、可恢复的备份和明确的回退步骤。使用托管服务时,请服务方确认实际版本,以及是否需要重启或重新部署。

安全更新步骤

  1. 优先处理可从互联网访问的服务,并确认服务方是否已提供修复包。
  2. 按照操作系统、托管服务或镜像提供方的说明,先在接近生产环境的环境中更新。
  3. 使用已修复的镜像重新构建并部署容器;更新主机不会自动更改镜像中的 PHP。
  4. 按照服务方流程重启或替换 PHP 进程,确保它们加载新版本。
  5. 在实际接收流量的环境中确认版本,不要只在另一台终端检查。
  6. 执行基本检查和优先级较高的回归测试。
  7. 在约定的观察时间内查看应用错误、日志和指标。
  8. 如果关键功能失败,暂停部署,记录情况,并按计划恢复到上一个版本。WAF 或临时规则不能替代补丁。
  1. 01盘点 PHP 环境
  2. 02应用补丁
  3. 03确认运行进程
  4. 04测试业务流程
  5. 05检查结果
  6. 06决定是否部署

制定回归测试计划

补丁后的回归测试用于发现应用和集成中意外出现的问题。它不能证明 PHP 没有漏洞,也不能替代安全扫描、依赖项分析或配置检查。

明确变更范围:PHP 版本、服务、配置、扩展、依赖项和环境。找出使用 PHP 的流程,以及共享进程、会话、缓存、文件或队列的组件。根据业务影响、暴露程度和恢复难度安排优先级。未知依赖项应记录为待确认风险。

把测试分成三层:检查可用性和关键功能的基本测试;针对变更路径或依赖项的重点回归;以及覆盖高影响组件的扩展测试。记录版本、环境和测试数据,方便调查并重现结果。

测试用例示例

请根据系统架构和业务规则调整这些示例。它们不是通用测试包:删除不适用的内容,并补充自己的流程、扩展和集成。使用测试账号和虚构数据,不要使用真实密码或个人信息。

范围示例检查内容建议保留的证据
可用性启动、健康检查和主页面进程状态、预期响应和依赖服务版本、环境、时间和脱敏日志
身份验证登录、退出和会话过期会话有效性和退出行为虚构账号及结果;不要记录密码或 Cookie
权限按角色允许或拒绝访问有效权限和未授权访问的处理角色、资源和实际结果
表单创建或修改重要数据校验、保存和业务规则虚构数据和脱敏截图
API成功、错误和超时响应状态码、字段、认证和错误处理已清理敏感信息的请求与响应
文件上传、读取和下载类型、大小、存储和权限测试文件和结果
后台任务队列、定时任务和重试最终状态和错误处理任务 ID、时间和脱敏输出
数据与会话跨请求和进程的数据保持一致性和用户隔离虚构 ID 与前后状态

何时可以结束测试

开始前先确定哪些失败会阻止部署。如果登录、权限、关键操作、数据完整性或必要集成失败;无法确认修复版本;或新错误仍未查明,就不要继续。因环境或数据问题而无法执行的测试不算通过。

结束时,将测试覆盖范围与变更范围对照,检查失败、阻塞、待办项目、证据和剩余风险。全部通过只能说明已执行的用例通过,不能证明所有服务器都已安装修复。

检查清单

  • 清单涵盖服务器、容器和服务方环境。
  • 已记录软件包来源和用于确认修复的公告。
  • 按服务方建议重启了实际接收流量的进程。
  • 每项结果都记录了版本、环境和虚构测试数据。
  • 失败、阻塞和剩余风险都有负责人。
  • 证据中已移除密码和个人信息。

保存便于复查的测试证据

团队可以用 Treseko 整理用例、测试套件、版本、执行结果、缺陷和附件,查看已检查的内容和仍存在的风险。测试需要团队在自己的环境中配置和执行。Treseko 不会安装补丁,也不会自动发现所有 PHP 环境。

官方来源与参考资料

本指南用于 QA 学习,不替代 PHP、操作系统、容器或托管服务提供方的说明。最后核对日期:2026 年 10 月 21 日。