如果你运营 WordPress、商城、企业官网或任何由 PHP 处理请求的服务,今天最有用的动作不是转发“全网拔网线”的截图,而是把生产环境里的 PHP 运行时逐个找出来,确认补丁是否真正运行在处理 Web 请求的进程里。2026 年 10 月披露的 CVE-2026-109618 与 CVE-2026-109619 都触及 PHP 内核;只更新网站插件、在控制面板里看到“已升级”,都不足以证明风险已经消失。本文给出一套面向站点负责人和运维团队的核查、升级、验证和回滚流程,并说明 AI 在发现漏洞时究竟扮演了什么角色。
PHP 官方安全公告将两项漏洞列为严重级别,给出的 CVSS v4.0 评分是 9.2。官方明确建议所有处理 Web 请求的 PHP 安装尽快更新,包括 PHP-FPM、Apache mod_php、php-cgi、FrankenPHP 和 LiteSpeed。风险最高的已验证路径是 Apache mod_php:未登录请求可以在应用代码开始运行前触发问题。这里的“最高”是优先级判断,不是其他部署方式可以忽略。
先把事实钉牢:两个编号、四组版本、一种常见误判
两项漏洞都位于 PHP 的底层状态管理。CVE-2026-109618 与内存耗尽后的状态损坏有关:请求处理中有些内部数据只初始化了一部分,异常退出后的清理流程却可能把它当成完整数据。CVE-2026-109619 与跨请求遗留的全局状态有关:同一个工作进程继续处理后续请求时,可能重新触碰已经失效的内存。研究者已在特定条件下证明远程代码执行可能发生;不能把这个结论误写成“互联网上每个 PHP 站点发一个请求就必定被接管”。
PHP 项目发布的修复版本为 8.5.12、8.4.27、8.3.36、8.2.35。在同一分支上,低于相应修复版本的上游发行版需要更新;如果使用发行商回补补丁的系统包,则不能只用上游小版本号作判断,还要查发行商的安全公告、包修订号和构建来源。PHP 8.1 及更早版本不再获得 PHP 项目的常规更新,官方同时提供了部分旧分支的最小源代码回补,供自己构建或无长期支持供应商的用户参考。这不等于旧站点自动安全,更不等于可以无限期保留无人维护的运行环境。

这张表要回答的是“我的实际 Web 运行时有无修复”,而不是“控制面板显示的最新 PHP 是多少”。一个服务器同时装着 PHP 8.2、8.4 与 8.5 很常见;CLI、FPM 池、容器镜像和不同虚拟主机也可能各用一套。判断必须落到每个对外服务的实例。
披露前流传的“满分 10.0”也需要纠正。PHP Foundation 的复盘明确说,泄露信息里有错误的评分和发布时间;实际评分是 9.2。数字从 10.0 改为 9.2,不改变紧急升级的结论,却提醒我们:应急决策要以维护者公告和发行商公告为依据,不以截图、演示视频或社交平台上的“全球全部瘫痪”作证据。
为什么更新 WordPress 或开 WAF 还不够
WordPress、Drupal、Magento 等应用坐在 PHP 运行时之上。若漏洞发生在请求进入应用逻辑之前,应用层插件根本没有机会过滤那个请求。换一套主题、更新 CMS 插件可能解决各自的安全问题,但不能替代 PHP 内核补丁。一个只输出固定文字的最小应用,在有漏洞的运行环境上也可能暴露相同的底层风险;具体可利用性仍取决于部署方式和触发条件。
WAF 是有价值的临时防线,但不能写成“开了规则就不用升级”。Cloudflare 的披露说明它向客户部署了相关保护,并看到攻击流量及攻击者调整请求形态的尝试。请求侧过滤难以覆盖所有变体;供应商因此增加把请求与源站响应结合判断的能力。即使你的入口经过 CDN 或 WAF,也要确认所有域名、API、上传入口、灰度环境和可直连源站是否都受同一规则保护;任何漏开的入口都可能绕过外围防线。PHP 官方明确指出:临时缓解只降低特定路径的暴露,完整修复仍是升级。

这张路径图把两件事分开:WAF 在请求入口附近,PHP 补丁在实际处理请求的工作进程。站点如果只给主域名接了 WAF,却让测试域名直接访问同一批 FPM 进程,入口保护的覆盖率就会被高估。反过来,升级了镜像却未重启旧工作进程,也会出现“包已更新、线上仍跑旧代码”的假完成。
30 分钟先做一张真实资产表
接到这类公告时,先不要让每个团队成员各自改配置。由一名负责人建立资产表,列出所有会把外部请求交给 PHP 的路径:公网域名、内部管理后台、API、对象存储回调、上传服务、预发布域名以及仅供合作方访问的接口。记录业务负责人、部署方式、容器或主机、运行时分支、包来源、可否直接触达源站、维护窗口和回滚负责人。生产流量不只来自“首页”。
运维可以在相应主机或容器里运行 php -v,但它只显示当前命令行解释器,不自动代表 Web 进程。对于 PHP-FPM,再确认实际 FPM 二进制、池配置和运行中的进程;对 Apache mod_php,确认加载的模块和服务进程。容器平台要同时核对镜像标签和镜像摘要、运行中 Pod/任务的镜像摘要以及发布后是否完成滚动替换。托管主机没有底层权限时,请供应商书面给出所用 PHP 构建、修复公告及生效时间。不要把 phpinfo() 永久暴露在公网用于核查;若临时启用,限制访问并在核对后删除。
可直接复制下面这份最小登记格式,按实际资产填值,空项标为“待核实”,不要用猜测补齐:
资产/域名:
业务负责人:
对外入口与可直连源站:
Web 服务器与 PHP SAPI:
Web 请求实际 PHP 版本/构建:
包或镜像来源及摘要:
是否落在维护者/发行商修复范围:
变更单、维护窗口与回滚负责人:
发布后 Web 进程复核结果:
日志与告警复查结果:
资产/域名:
业务负责人:
对外入口与可直连源站:
Web 服务器与 PHP SAPI:
Web 请求实际 PHP 版本/构建:
包或镜像来源及摘要:
是否落在维护者/发行商修复范围:
变更单、维护窗口与回滚负责人:
发布后 Web 进程复核结果:
日志与告警复查结果:

优先级不宜只按访问量排序。可以先处理“公网可达+mod_php+未修复”,随后覆盖其他公网 PHP 服务,再检查受信任网络内但可能被横向访问的实例。托管服务如果供应商无法给出补丁证明,也先视为“状态未确认”,而不是“供应商会处理”。
补丁怎么上:从测试到真实 Web 进程验收
上游四个版本是 PHP 项目的答案,实际升级包要从你的发行渠道获取。使用官方源码或官方容器时,核对发布版本与构建摘要;使用 Debian、Ubuntu、RHEL 等发行版包时,查各自安全公告,确认维护者把两项 CVE 修复回补到了哪一个包修订号;使用面板或托管商时,要求供应商提供修复范围和发布时间。不要因为镜像标签叫 latest、面板按钮显示“更新成功”,就跳过构建核对。
一个可执行的发布顺序如下:
- **冻结现场并备份。**记录当前镜像摘要、包版本、FPM 池配置、扩展清单和入口规则;备份应用与数据库,确认备份能恢复。若已观察到异常请求或进程崩溃,先保留日志与证据,再按事故流程处置。
- **在预发布复现正常业务。**至少覆盖登录、上传、支付/下单、后台管理、队列任务、计划任务与常用扩展。这里的“复现”指回归业务功能,不是运行攻击代码。PHP 的安全更新通常小,但你的扩展、框架和部署脚本仍可能带来兼容问题。
- **分批部署并替换进程。**按服务或集群逐批更新,不要一次清空全部节点。更新后重启或滚动替换所有相关 PHP 工作进程;对长生命周期的队列和定时任务,也要核对它们是否复用同一旧运行时。
- **从请求路径验证。**对每个域名走实际负载均衡、反向代理与 Web 进程,核对生效的构建。再检查健康检查、错误率、延迟、上传与会话业务。仅在发布机上运行
php -v不足以签字验收。 - **保留可回滚路径,但别回滚到有漏洞的旧版。**如果新构建出现业务回归,应优先修复配置或切换到发行商提供的另一种已修复构建;真正需要短时回退时,由安全负责人评估隔离与暂停高风险入口,并设定恢复时限。

发布完成的证据应能回答三个问题:**哪个资产更新了、正在运行哪个构建、谁验证了它。**截图一张面板“成功”页面只能证明按钮被点过。更稳妥的证据是带时间的变更单、运行中实例摘要、供应商公告引用、健康检查记录和抽样业务验证。
今天确实升不了级,缓解措施怎样用
现实里可能有旧版扩展、商用系统兼容性或托管服务尚未给出包。此时要把“临时降低暴露”和“漏洞已经修复”写成两个状态。PHP 官方公告列出针对已确认路径的临时配置措施,如限制上传入口、调整与内存耗尽及上传进度有关的设置,同时明确这些措施不构成完整保护。不要机械复制别人发来的 php.ini 参数:改动 memory_limit、上传大小或会话配置可能影响资源耗尽、业务文件上传和用户会话,必须在自己的部署方式中做兼容测试,并按官方说明确认配置是在请求解析前生效。
网络层面可以先限制不必要的公网入口、关闭无人使用的上传服务、检查源站是否能被绕过 CDN 直连;有 WAF 的团队核对规则是否覆盖所有入口,并监控误拦截。暂时无法更新的旧分支,应获得发行商或长期支持供应商针对两个 CVE 的回补证明,或安排隔离、迁移与下线。单纯把站点放进“维护模式”只有在请求确实不再到达有漏洞的 PHP 工作进程时才有意义;应用层维护页若仍由旧 PHP 渲染,就不是隔离。
如果日志出现异常重启、罕见错误、可疑上传请求或未知文件,不应仅凭这些现象断言已被攻陷,也不应因为没有明显报错就断言安全。保留 Web/WAF、系统、PHP 和部署日志,按事故响应流程评估是否需要主机取证、轮换凭据和通知相关方。安全团队应把受影响范围、已修复范围、临时例外和到期日登记在同一张表里,直到例外归零。
AI 找到了漏洞,为什么补丁仍离不开人
这次事件常被讲成“AI 一周发现了人类二十年没发现的问题”,但公开材料描述的过程更复杂。PHP Foundation 说,2024 年修复外部审计发现的问题时,维护者已注意到内存耗尽处理的隐患;那时缺少可验证的利用路径,而且修复方案在兼容性、拒绝服务风险和扩展生态之间存在困难取舍,工作因此长期停滞。2026 年,Calif 研究者、OpenAI 和 Wiz 的报告让影响边界与攻击路径更清晰,维护者才把修复提到最高优先级。这里既有人类长期积累的问题意识,也有 AI 辅助分析和验证的速度提升,不能把任何一方抹掉。
OpenAI 的公开说明称 Calif 使用 GPT-5.6 Sol 参与发现,Wiz 也独立发现并报告了两个漏洞;PHP Foundation 记录了研究者报告、独立复核与维护者修复的分工。对研发团队更有价值的经验不是“让模型自动扫描一遍就算安全”,而是建立发现—人工复核—私下报告—修复验证—协调发布—用户升级的闭环。AI 能加速检索、代码追踪和测试假设;漏洞能否复现、影响范围如何界定、补丁是否破坏生态,仍需要有责任边界的人和维护组织做决定。

披露过程也提供了反面教训:PHP Foundation 复盘说,提前流出的 CVE 编号带着错误评分,演示材料随后意外公开,发行商又抢先放出了修复镜像。过早披露会缩短防守方安装补丁的时间;但把补丁永远藏着也不可能保护用户。工程上需要提前确定谁能收到预告、谁负责保密、谁能准备回补包、何时发出面向普通运营者的清晰指令。
Codex 检查工具能帮到哪里,不能代替什么
OpenAI 同期提供了一个 PHP 版本检查 Codex Skill。它的定位是帮助运营者识别可能受影响的 PHP 版本、对照维护者和供应商的升级建议;它不是“输入网站 URL 就能证明站点没有漏洞”的在线扫描器,也不能代替真实 Web 进程的版本核对。外部网址往往看不到源站实际 PHP 构建,供应商回补还可能让简单版本比较产生误判。若将该工具纳入工作流,输出要附带发现位置、运行环境和证据,并由负责人核实。
对 Code0 或 Apito 一类面向开发者的内容工作台,这个案例也给出了可复用的发布方式:把“官方公告、版本判断、变更记录、验收结果”放进同一份可追踪文档,再由人确认文章中的版本、时间和产品能力。AI 可以帮助整理不同供应商的公告和生成检查表,但不能替代站点所有者对生产环境签字负责。
一页式验收清单:别在“已更新”三个字上停下
把下面七项放进变更单,逐项标记“已证实 / 待核实 / 不适用”,不要只写“完成”:
| 验收项 | 应看到的证据 | 常见漏项 |
|---|---|---|
| 资产范围 | 对外域名、源站、API、预发布和托管环境清单 | 只统计主站首页 |
| 版本与渠道 | Web 工作进程版本、包修订号或镜像摘要 | 只看 CLI 或面板版本 |
| 补丁对应 | 上游修复版或发行商针对两项 CVE 的回补公告 | 把 latest 当证据 |
| 发布替换 | 所有 FPM/Apache/容器实例已滚动替换 | 旧 worker 仍服务流量 |
| 业务回归 | 登录、上传、会话、关键交易与后台测试 | 只测健康检查 |
| 外围防线 | WAF、源站直连、例外入口的覆盖记录 | 以 WAF 代替补丁 |
| 事故复查 | 日志保留、异常处置和负责人签字 | 忽略披露窗口内的异常 |
如果一家企业能给出这七类证据,就可以合理说明“我们已核实并处置相关风险”;如果只有一个“升级成功”截图,还需要补齐运行时与入口验证。补丁部署不是新闻事件的尾声,而是运营者可以独立举证的最后一公里。
资料来源
常见问题(FAQ)
我的网站用 Nginx 加 PHP-FPM,不用 Apache,还要升级吗?
要。PHP 官方把 PHP-FPM 列在需要更新的 Web 请求环境里。mod_php 被评为已证实路径中风险最高,不等于 FPM 免疫。按真实运行时版本和供应商修复公告判断,并完成 Web 进程验收。
控制面板显示 PHP 8.5.12,就能认为全部站点安全了吗?
不能。同一机器可能有多个 PHP 版本或 FPM 池,CLI 和 Web 进程也可能不同。逐个域名核对实际处理请求的进程、包构建和运行中的容器摘要;再确认更新后旧工作进程已退出。
PHP 7.4 或 8.1 没有官方完整新版本,怎么办?
先查询发行版或长期支持供应商是否提供针对两个 CVE 的回补包;PHP 项目也提供了部分旧分支的最小源代码回补供特定用户参考。拿不到可信修复时,安排隔离、迁移或下线,并把临时措施登记为例外而非“已修复”。
开了 Cloudflare WAF,还需要补 PHP 吗?
需要。WAF 能降低部分入口和已知攻击路径的暴露,但无法证明所有变体、直连源站或未纳入代理的入口都被覆盖。PHP 官方明确将更新视为完整修复。
Codex 的 PHP 检查 Skill 能证明一个网址没有漏洞吗?
不能。公开工具定位是帮助识别可能受影响的版本;只凭外部 URL 很难确认源站运行时、供应商回补与工作进程状态。它适合辅助资产排查,最终结论仍要有环境证据和人工核验。



