• +86 138-
  • 周一至周五 08:00 - 20:00 / 周末休息
2026-10-22

全球 70% 网站一夜告急,日本首相催打补丁,详解PHP暴雷事件始末

开云首页

1  PHP 突然暴雷,全球 70% 网站或受影响 

昨晚,一场围绕 PHP 的安全危机席卷互联网。

美国国家安全局(NSA)、英国国家网络安全中心(NCSC)、等安全机构相继发出警告,称 PHP 中发现了两个关键漏洞,要求相关组织尽快采取防护措施。

美国国家安全局进一步表示,这些漏洞非常严重,如果网站无法立即修复,则应将其下线,直到修复完成。这些漏洞允许攻击者渗透服务器的文件系统或网络应用程序可能使用的数据库。

日本首相高市早苗也在 X 上向日本全国发出紧急通知,请求普通民众 21 日晚就采取行动。

她写道:“关于许多网站所使用的 PHP,PHP 安全团队已就两个严重漏洞发出警告。请检查您对外公开的网站是否使用 PHP,并准备尽快应用将于 10 月 21 日晚上 11 点(日本时间)发布的修复补丁。如果难以及时应用修复补丁,暂时停用网站等措施可以被视为降低风险的有效方式。”

作为服务器端编程语言,PHP 被广泛应用于 Web 应用程序,据统计,互联网上大约 70% 的网站都使用 PHP 编写,超过 3300 万个网站。它也被 WordPress 等流行的内容管理系统所采用。

随后,PHP 官方紧急发布四个安全版本,修复两个严重程度评分均达到 9.2 分的高危漏洞。

引发这场风波的,是两个存在于 PHP 底层的内存安全漏洞,编号分别为 CVE-2026-109618 和 CVE-2026-109619,被安全社区统称 PHP2Shell。

那么,这两个漏洞究竟是什么,又会带来哪些风险?

PHP 基金会在 10 月 21 日发布的复盘文章中,对两个漏洞的原理及影响进行了说明。

第一个漏洞是 CVE-2026-109618,主要与 PHP 处理内存不足的方式有关。

简单来说,PHP 在运行过程中需要使用服务器内存。如果某个请求恰好在特定阶段触及 PHP 设置的内存使用上限,程序就可能提前中断,导致部分内部数据尚未完成初始化。

问题在于,PHP 后续仍可能把这些不完整的数据当作正常数据使用,从而引发内存错误。攻击者如果能够利用这种错误,就可能在服务器上执行恶意代码。

这一漏洞的危险之处在于,在使用 Apache 和 mod_php 的服务器上,攻击者不需要登录网站,就可能通过特制请求触发漏洞,甚至不需要等到网站的业务代码开始运行。 研究人员已经证明,在默认配置下,这一漏洞可以被用于远程代码执行。

此外,研究人员也在使用 PHP-FPM 的环境中,通过特定应用程序代码的执行路径验证了远程代码执行的可能性。

第二个漏洞是 CVE-2026-109619,主要与 PHP 没有正确清理上一次请求留下的内存状态有关。

正常情况下,服务器处理完一个请求后,应当清理不再需要的内存数据,为后续请求做好准备。

但研究人员发现,如果 PHP 在特定阶段发生严重错误,部分内部状态可能没有被正确重置。当同一个工作进程继续处理下一个请求时,程序就可能访问上一次请求已经释放的内存。

这种情况在技术上被称为“释放后使用”(Use-after-free)。它可能导致 PHP 工作进程崩溃,使网站服务受到影响。在满足特定利用条件时,攻击者还可能借此远程执行恶意代码。

目前,研究人员已经确认了这一漏洞能够造成内存错误和进程崩溃,并在使用 Apache mod_php 的真实应用环境中,成功演示了远程代码执行。

这两个问题都出在 PHP 中几乎每个请求都会用到的部分:内存管理和错误处理。它们在 PHP 中的核心地位使得这两个漏洞非常严重,而且修复起来也极其困难,因为一旦修复,就可能破坏兼容性、损害性能,或者迫使庞大的第三方扩展生态系统做出改变。

这么严重的漏洞是如何被发现的?

2  漏洞被发现的完整时间线 

事实上,这两个漏洞并不是最近新发现的。根据 PHP 基金会披露的完整时间线,相关内存管理问题的早期迹象,早在 2024 年就已经由人类开发者发现。只是当时缺少明确的漏洞利用路径,修复方案又涉及复杂的兼容性问题,导致问题长期未能得到彻底解决。

  • 安全公司称,内存漏洞 2004 年已经发现 

根据安全公司 Calif 的表述,2004 年 Calif 安全研究员 Stefan Esser 就曾发现 PHP 内存限制机制中的远程代码执行漏洞。当时漏洞的危险程度很高,他没有公开完整的利用程序,随后 CORE 和 Immunity 等安全公司也分别开发了未公开的漏洞利用工具。

Stefan Esser 昨天在 x 上晒出了他 2004 年发现该漏洞时的邮件。

到了 2020 年,一名研究人员又向 PHP 官方报告了编号为 #78876 的问题,指出某些超长变量可能导致内存耗尽,并使临时文件无法正常清理,但这份报告当时没有引起足够重视。

到了今年 8 月,多家安全研究团队借助前沿 AI 模型,陆续证明了相关缺陷能够被攻击者利用,并发现了更多攻击路径。

  • PHP 基金会称 2024 年再次发现内存漏洞 

更具体的时间线,要从 2024 年的一场外部安全审计说起。

2024 年,PHP 基金会获得德国 Sovereign Tech Agency 的资金支持,通过 Open Source Technology Improvement Fund(OSTIF)组织外部安全审计,由安全公司 Quarkslab 负责实施。这也是 PHP 多年来首次开展此类外部安全审计。

在修复 Quarkslab 报告的一项问题时,一名受 PHP 基金会资助的核心开发者注意到,PHP 在处理内存耗尽(Out of Memory,OOM)异常时,可能存在内部状态管理缺陷。

正常情况下,PHP 接收请求后需要完成一系列初始化操作,并在请求结束时清理相关资源。但如果内存耗尽恰好发生在某个关键阶段,程序可能提前退出,留下没有完整初始化的数据结构。后续代码如果继续使用这些数据,就可能引发内存破坏。

这正是后来被编号为 CVE-2026-109618 的漏洞根因。

当时,PHP 开发者已经从理论上意识到这一问题存在被利用的可能,却始终没有找到具体攻击路径,更无法证明攻击者能够利用它远程执行代码。

而修复工作也远比想象中困难。

PHP 安全团队研究了几种不同方案,但每一种都有代价:有的可能破坏现有应用的兼容性,有的可能带来新的拒绝服务风险,还有的需要大量第三方 PHP 扩展配合修改。

在缺乏明确利用证据的情况下,安全团队难以判断应当承担哪一种代价。再加上具备 PHP 引擎底层知识的核心开发者人数有限,修复工作反复启动又陷入停滞。在 10 月 21 日发布的复盘文章中,将这次拖延称为一次“结构性失败”,承认问题既出在安全决策流程,也出在维护资源不足。

但问题摆在那也不能永远不解决吧。

为了应对 AI 时代安全报告数量增长带来的维护压力,今年 5 月,PHP 基金会成立了生态系统安全团队,该团队与 PHP 安全团队协同工作,负责安全问题的分类、协调和加固。团队成员包括 Volker Dusch、Alexandre Daubois 和 Daniel Scherzer 等技术大佬。

Volker Dusch 是资深 PHP 开发者,拥有约 20 年 PHP 生态从业经历,曾参与 PHPUnit 维护及 PHP 语言改进提案,也是 PHP 8.5 的版本发布负责人之一。2026 年 5 月,他出任 PHP 基金会首任常驻 AI 安全工程师,并负责领导新成立的生态系统安全团队,推动 AI 辅助漏洞检测、安全报告处理及开源项目安全治理。

Alexandre Daubois 是法国技术公司 Les-Tilleuls.coop 的 CTO,熟悉 Symfony、FrankenPHP、PHP 核心及 Scrutineer 等开源项目,具有丰富的软件安全问题处理经验。2026 年 7 月加入 PHP 基金会,主要协助安全漏洞报告的分类、验证和修复,缓解 AI 工具普及后安全报告数量激增带来的压力。

Daniel Scherzer 是 PHP 核心贡献者,负责维护 PHP 的 Reflection(反射)扩展,同时担任 PHP 8.5 的版本发布负责人及 PHP 8.6 的资深版本发布负责人。2026 年 9 月,他以短期成员身份加入 PHP 基金会生态系统安全团队,重点处理尚未构成正式安全漏洞、但有助于增强 PHP 安全性和稳定性的代码问题。

安全研究公司 Calif 受邀参加 OpenAI 发起的“Patch the Planet”计划,决定将广泛应用于互联网的 PHP 作为审计目标。

7 月 30 日,Calif 正式启动研究,并通过安全专家 Stefan Esser 联系到 PHP 基金会的 Volker Dusch,推动双方合作。

Calif 披露,团队原本并不认为还能轻易发现严重漏洞,因为 PHP 已经接受过大量安全审计。但在重新审查此前发现的问题、结合 Stefan Esser 的历史研究寻找线索后,团队仅用了几天时间,就发现了一个严重的内存耗尽漏洞,并找到了一条可用于攻击 WordPress 网站的远程代码执行路径。此后,研究人员继续寻找其他利用方式,又发现了适用于 Apache mod_php 和 PHP-FPM 环境的攻击路径。

  • OpenAI、谷歌只是提供了工具,并非 AI 自主发现了漏洞 

8 月 11 日,关键突破出现。 Calif 研究人员 Ryan A 向 PHP 安全团队报告了一条能够实现远程代码执行的攻击路径,其根因恰好就是 PHP 核心开发者在 2024 年发现的内存耗尽问题。

同一天,OpenAI 也独立报告了相同的漏洞根因。

根据 OpenAI 官方说明,Calif 在研究过程中使用了 GPT-5.6 Sol,借助这一模型发现了关键安全缺陷。

按照这种说法,事实基本清楚了:GPT-5.6 Sol 只是在发现漏洞中使用的一个工具,并不是第一个注意到相关问题的主体,更不意味着两个漏洞都由 ChatGPT 在无人参与的情况下独立发现。

与此同时,谷歌旗下安全公司 Wiz 也在独立开展漏洞研究。

Wiz 在官方技术复盘中披露,其团队于 8 月 19 日 使用 Wiz Atlas 安全智能体、Gemini 4 Argon 和 GPT-5.6 Sol,发现了第一项 PHP 安全漏洞。

8 月 20 日,Wiz 确认能够在 Drupal 环境中实现未经身份验证的远程代码执行;8 月 21 日,又在 WordPress 环境中验证了相同等级的攻击影响。

8 月 24 日,Wiz 正式向 PHP 安全团队报告相关漏洞。

Wiz 的研究团队由 Sagi Tzadik、Shir Tamari、Nir Ohfeld 和 Tomer Schwartz 等人组成。按照团队披露的信息,Gemini 4 Argon 在漏洞发现与修复辅助过程中发挥了尤其重要的作用。

与 Calif 的发现类似,Wiz 并不是简单找到了一行容易识别的错误代码,而是围绕 PHP 的异常处理、对象生命周期和跨请求内存状态,进一步证明了这些底层缺陷可以导致实际攻击。

Wiz 公布的技术分析显示,其研究涉及四种可利用的缺陷实例,被归入 CVE-2026-109618 和 CVE-2026-109619 两项漏洞。其中包括会话上传进度反序列化引发的释放后使用、进程内存泄露、致命错误回溯处理中的释放后使用,以及 OPcache 类型混淆等问题。

Wiz 还将相关攻击技术组合为名为 PHP2Shell 的漏洞利用演示,在 WordPress、Drupal 和 Joomla 等实际应用环境中验证了未经身份验证的远程代码执行风险。

不过,这些应用只是研究人员选择的验证目标,漏洞本身位于 PHP 引擎,并非 WordPress、Drupal 或 Joomla 各自独有的安全缺陷。

随后,9 月 18 日,OpenAI 再次报告了新的攻击路径,进一步补充了安全团队对相关底层缺陷的认识。

由此可以看出,2026 年夏天的突破并不是某一家公司独自完成的。Calif 首先报告了与 2024 年已知问题同源的严重远程代码执行路径,OpenAI 同日独立报告相同根因并在之后补充新的攻击路径,Wiz 则独立发现和验证了多个相关可利用问题。

这些研究成果让 PHP 安全团队最终确认,原本缺乏明确利用证据的内存安全缺陷,事实上能够导致严重的服务器入侵风险。

PHP 基金会表示,自 8 月 11 日开始,修复相关内存管理问题成为整个安全团队的最高优先事项。多名工程师投入全职开发,并持续与 OpenAI、Calif、Wiz 等研究团队协调,部分工作甚至延续至周末和夜间。

最终,经过约两个月的协调修复,PHP 官方于 10 月 21 日发布 PHP 8.5.12、8.4.27、8.3.36 和 8.2.35 四个安全版本,修复了 CVE-2026-109618 和 CVE-2026-109619 两项严重漏洞。

回看整个过程,AI 的实际贡献并不像很多媒体宣传得那样,自主找到 bug 并进行了修复,而是在于帮助安全研究人员发现和验证复杂的利用路径,使长期存在的底层缺陷从理论上的安全隐患,变成了必须立即处置的高危漏洞。