PHP 紧急修复两处严重 RCE 漏洞:影响全球网站

PHP 基金会于 10 月 21 日发布紧急安全更新,修复两处严重程度为 Critical 的远程代码执行(RCE)漏洞——CVE-2026-109618 和 CVE-2026-109619,两者在 CVSS v4.0 评分体系下同为 9.2 分(满分 10)。官方强调:更新是唯一安全的选择,不存在完整的绕过方案。而戏剧性的是,漏洞编号在前一天(10 月 20 日)已在网上提前外泄,迫使官方把发布时间提前了约一天。

事件经过:泄密迫使补丁提前一天发布

10 月 20 日 15:00 UTC 前后,两个 CVE 编号开始在论坛和社交媒体上流传,随附的是错误的发布时间和错误的 CVSS 10.0 评分,但技术细节当时并未外泄。据 PHP 基金会说明,当天 19:30 UTC,安全团队在 php.net 官网和 ANNOUNCE 邮件列表发布预告,把原定 10 月 22 日的发布时间提前至 10 月 21 日 14:00 UTC。

随后事态继续失控:安全公司 Calif 在 10 月 20 日 20:00 UTC 前后误发了一段概念验证(PoC)视频,复制件迅速在社交媒体扩散;容器镜像厂商 Chainguard 更是在 10 月 21 日 07:41 UTC——比协调发布时间早六个多小时——就发布了含修复的容器镜像。Cloudflare 则表示,其 WAF 防护自 10 月 21 日 03:02 UTC 起默认开启,并已观察到针对其客户的攻击流量。

10 月 21 日 14:00 UTC,PHP 正式发布四个安全版本:8.5.12、8.4.27、8.3.36 和 8.2.35,每版都修复这两个漏洞。两份 GitHub 安全公告于 13:34 UTC 上线,CVE 记录随后在 cve.org 正式发布。

两处漏洞的技术细节

CVE-2026-109618(GHSA-w8hw-w9fx-j79w)被描述为”内存不足(OOM)损坏导致的 RCE”。其机理是:PHP 在处理内存不足时,可能在内部请求数据尚未完全建立时被打断,随后的请求清理流程可能把这份无效数据当作有效数据处理,从而被攻击者利用执行代码。

CVE-2026-109619(GHSA-6wmf-4rv5-p3rp)是”过期全局状态导致的 RCE”:某个请求拥有的内部状态,在其内存被释放后仍然残留;同一工作进程处理的后续请求,可能在 PHP 重置它之前使用这份过期状态。已确认的攻击路径包括会话上传进度(session upload progress)功能;在 PHP 8.5 上,致命错误回溯(fatal-error backtrace)是另一条路径。

官方确认的影响是:无需登录的远程代码执行,以 Web 工作进程账户的权限运行;CVE-2026-109619 还可能造成内存信息泄露。PHP 已验证:针对 mod_php 的 RCE 可以通过 HTTP 在默认配置下触发;针对 CVE-2026-109619 的 RCE 在 mod_php 和 FPM 的会话处理路径下均已验证。官方称 FPM 对 CVE-2026-109618 的易受攻击性已通过源代码分析确认,但尚未演示完整的 FPM 利用;FrankenPHP 可能受影响;LiteSpeed(LSAPI)的应用层利用可能存在但尚未验证。

背景分析:漏洞在 PHP 内核,影响被放大

这次的漏洞存在于 PHP 语言内核,而非某个 CMS 或插件。这意味着:WordPress、WooCommerce、Magento、Drupal、Shopware 等所有基于 PHP 的建站系统都在影响范围内;更新 WordPress 本体、主题或插件都无法修复问题——修补必须发生在服务器层面的 PHP 运行时上。安全公司 Sansec 预计,补丁发布后 15 分钟内就会出现大规模攻击,原因是攻击发生在 PHP 层面,在网站程序和防护软件运行之前就已生效。

版本覆盖问题更麻烦。PHP 官方仅维护 8.2 及以上版本:8.1 及更早版本不会获得常规官方修复。针对这次紧急情况,PHP 为 7.4、8.0、8.1 提供了有限的源码级移植,供自行编译的团队使用;但官方明确指出,这不恢复对这些版本的持续支持。此外,PHP 8.2 将于 2026 年 12 月 31 日结束生命周期。安全公司 Mallory 估算,约 88.4 万台对外主机仍运行已停止支持的 PHP 版本,这些主机将长期暴露在风险中。

补丁发布前已有预防性动作:据 Sansec 报告,荷兰议会和国家网络安全中心网站已暂时下线;芬兰政府网站也采取了预防性关停;CERT-EU 与英国国家网络安全中心建议,在无法立即防护的情况下考虑临时隔离或关停。

发现过程:前沿 AI 模型参与挖掘

这次披露是多方协调的结果:PHP 项目、OpenAI、安全公司 Calif 与云安全公司 Wiz 共同参与。时间线显示:早在 2024 年,一名基金会签约的核心开发者在修复外部安全审计的发现时,就注意到了 OOM 缺陷的最初迹象,但当时没有找到具体的利用方法,修复工作随之停滞。2026 年 8 月 11 日,Calif 与 OpenAI 报告了同根的 RCE;8 月 24 日 Wiz 报告了这两个漏洞;9 月 18 日 OpenAI 报告了更多触发路径。OpenAI 的 Codex Security 团队研究员 Amy Burnett 被列为发现贡献者之一——这意味着前沿 AI 模型本身已深度参与到真实世界软件的漏洞挖掘中。

影响与展望:PoC 流传,攻击风险上升

PHP 基金会表示,检查了发布前流传的概念验证代码,在”发布时”没有发现可用的实际利用。但 CERT-EU 在补丁发布后更新称,初步 PoC 已经开始流传,”攻击者可能已经在利用这些漏洞”的可能性上升。watchTowr 早在补丁前就证实外泄内容属实,并已成功复现 CVE-2026-109618,只是按协调披露原则在修补前未公开技术细节。

对网站管理者而言,行动清单很明确:

  • 立即升级到对应分支的修复版本:8.5.12、8.4.27、8.3.36 或 8.2.35,并重启 PHP-FPM 或 Web 服务器——仅重载 Web 服务器可能让旧的 PHP 工作进程继续运行。
  • 如果暂时无法升级:可将 php.ini 中的 session.upload_progress.enabled 设为 0(只阻断一条已确认的攻击路径,不是完整修复);PHP 8.5 用户还可设 fatal_error_backtraces=0。官方建议的最低限度措施包括在容器/分组层限制请求大小与可用内存,但这些都不能替代升级。
  • 仍在使用 PHP 8.1 及更早版本的站点:向主机商确认是否有移植补丁,并尽快规划升级到受支持版本。
  • Cloudflare WAF 用户的防护已默认开启,但这只是纵深防御的一层,不能替代打补丁。

更长期的视角是,PHP 8.2 即将在年底结束生命周期,大量存量站点的升级压力将在未来两个月集中释放。Wiz 评估,过去十年里发布的每个 PHP 版本都至少受这两个漏洞之一的影响——这意味着 PHP 生态的存量风险规模前所未有。对站长来说,这次事件也是一个提醒:你网站的 PHP 版本,值得你花一分钟看一眼了。

发表评论