执行摘要

  • Wiz Research 在 PHP 核心中发现了多个严重漏洞。PHP 是一种流行的通用脚本语言,支撑着全球 70% 的网站。成功利用这些漏洞可使攻击者控制受影响的服务器、窃取敏感数据,并篡改其上运行的网站。

  • PHP 是 Web 的支柱:它是支撑 WordPress、Joomla、Drupal、维基百科的 MediaWiki 以及许多其他项目的编程语言。

  • 这些漏洞包括内存泄露和未经身份验证的远程代码执行存在于 PHP 本身,与运行在其上的应用程序无关,使每个受影响的网站都面临直接风险。

  • 过去十年发布的每个 PHP 版本都至少受其中一个漏洞影响,最早可追溯至 5.4 版本。攻击者可以远程利用这些漏洞,某些情况下还相当容易。强烈建议立即打补丁。

  • 2026 年 10 月 21 日,PHP 发布了补丁修复核心引擎中的多个内存安全漏洞。

  • 这些发现属于 PHP 中发现的最严重漏洞之列,也可谓是软件史上最严重的漏洞之一。底层缺陷已存在数十年,但要证明其可利用性需要一条异常复杂的步骤链,处于人类研究者实际所能达到的极限边缘。前沿 AI 模型大幅降低了这一门槛,将长期存在的缺陷转化为可实际利用的漏洞。

概述

在本文中,我们说明前沿 AI 如何帮助我们找到并修复在 PHP 代码库中隐藏了十多年的漏洞。下文描述的问题均源于关键的架构决策,其中一些是十多年前做出的,并被归入两个 CVE,严重程度达到 CVSS 9.2。这项工作发展为一项跨行业协作,以保护客户、发现变体、部署检测与缓解措施,并在协调披露前及时验证补丁。

几乎所有 PHP 版本都至少受到其中一个问题的影响,包括可追溯到 PHP 5.4 的发行版。这些漏洞可让未认证的攻击者在受影响的服务器上执行代码,或读取敏感的进程内存。这些内存中可能包含属于其他请求或服务器本身的密码、认证令牌、API 密钥和证书。

PHP 是支撑大部分 Web 的编程语言,驱动着 WordPress、Drupal 以及运行 Wikipedia 的 MediaWiki。其核心引擎中的缺陷会影响整个生态中的网站,即使这些网站自身的应用代码是安全的。

有些漏洞会成为转折点,因为它们挑战了关于安全的基本假设。2014 年,Heartbleed 暴露了保护互联网的共享基础设施的脆弱性。2021 年,Log4Shell 揭示了深度嵌入的软件依赖如何造成组织难以识别的广泛暴露。我们认为 PHP2Shell 可能标志着 AI 时代类似的转折点,说明 AI 如何改变长期存在的漏洞在实际中的可利用性。构建该漏洞利用需要串联多个缺陷,并通过反复测试和调试来适应每个目标的内存布局。前沿模型对于让这一过程变得可行至关重要,使我们能够在数小时内为多个应用开发并调整出可用的漏洞利用。随着这项工作所需的时间和专业知识减少,复杂性可能不再构成有意义的障碍,从而改变我们在实践中定义何为易受攻击的方式。

Wiz Research 感谢 PHP 团队、Calif 和 OpenAI 在发现、协调和补丁验证方面所做的工作。OpenAI和Calif也发布了博客,包含有关该漏洞的详细信息——其历史、技术细节,以及对披露过程的见解。PHP也发布了相关内容。

我们还要向 Automattic、Akamai、AWS、Cloudflare、Fastly、Google、Imperva、Microsoft、Vercel 以及许多其他方表达诚挚的感谢,感谢他们帮助为无法立即应用补丁的客户准备指南和开箱即用的缓解措施。

这些漏洞

所有披露的漏洞都是内存安全问题,源于 PHP 在处理请求时处理致命错误(尤其是内存不足错误)的方式存在缺陷。这些缺陷会在请求意外结束后留下损坏的 PHP 内部状态。后续的请求或工作进程可能复用该陈旧状态,导致内存泄露或内存破坏。

下面这张表展示了我们报告给 PHP 的每个缺陷所演示的影响类型。下表列出的应用是我们为 RCE 演示选定的目标。它们只是代表性目标——利用并不需要依赖这些 CMS,因为存在漏洞的代码位于 PHP 本身。

跟踪 ID缺陷攻击者能实现什么我们演示了什么
CVE-2026-109618

上传进度反序列化器释放后使用

远程进程内存泄露

破坏进程内存并执行代码

未认证泄露 PHP 工作进程内存

在 WordPress、Drupal 和 Joomla 上的预认证 RCE

与应用无关的远程内存泄露

CVE-2026-109619

致命错误回溯释放后使用

OPcache 类型混淆

破坏进程内存并执行代码

破坏共享 PHP 状态并执行代码

在 Drupal 上的预认证 RCE

在 WordPress 上的预认证 RCE

虽然本文只涵盖了遵循这一有问题模式的四个可利用缺陷实例(归入两个 CVE),但 PHP 代码库中还存在其他已被跟踪、且很可能未被跟踪的该问题变体。这些变体在利用条件上有所不同,可能导致不同类型的影响。无论如何,PHP 团队提供的补丁从根源上修复了该问题,并在修补后的版本中消除了所有变体。

影响

我们将这些漏洞组合成一个漏洞利用脚本 php2shell,并演示了它可以在 WordPress(wordpress:latest)、Drupal(drupal:latest)和 Joomla(joomla:latest)的部署上无需认证即可远程执行代码,测试时使用的是它们最新的容器镜像。

这些平台说明了影响范围,但漏洞存在于 PHP 本身。利用并不依赖于应用程序代码中的缺陷:即使是一个运行在受影响 PHP 版本上的简单 "Hello World" 应用也可能存在漏洞。

另外,我们证明了攻击者可以从 PHP 进程的内存中读取敏感数据,包括密码、令牌和 API 密钥,而无需实现远程代码执行。

PHP2Shell 在 Wordpress、Joomla 和 Drupal 上的演示:

AI 拐点

这段有漏洞的代码已经存在了十多年。将这些缺陷转化为可用的漏洞利用需要串联多个 bug,并考虑 PHP 在请求之间如何分配和复用内存。内存 bug 出了名地复杂;PHP 版本、配置和应用程序行为的差异可能会打破漏洞利用所依赖的假设。针对一个部署有效的攻击,在针对另一个部署时可能需要大量调整,每一次都需要进一步的分析、测试和调试。在 AI 出现之前,这种手动工作很难实施,更难规模化。

有了 AI,这不再是障碍。LLM 可以帮助将漏洞利用适配到不同的 PHP 版本、配置和内存布局。借助测试和调试工具,模型可以分析失败并迭代调整,减少每个目标所需的专家投入。这显著降低了跨不同部署规模化攻击的门槛。

这改变了漏洞发现和利用的经济账。随着 AI 降低开发和适配复杂漏洞利用所需的投入,那些曾经看似不切实际的漏洞变得可行。

我们使用了Wiz Atlas、Gemini 4 Argon 和 GPT-5.6 Sol 贯穿这项研究。值得注意的是,Gemini 4 Argon 在发现漏洞、漏洞利用开发、攻击检测和补丁验证方面做出了宝贵贡献。

借助 Gemini 4 Argon,Wiz 团队展示了为什么前沿 AI 是网络防御领域的颠覆性力量。十多年来,这些严重漏洞一直未被处理,因为漏洞的发现和利用极其复杂。我们很高兴看到 Gemini 4 Argon 帮助防御方弥合了这一差距,发现漏洞并协助修复它们。

Raluca Ada Popa,Google DeepMind Gemini 安全负责人

行业级合作

在公开披露之前,Wiz Research 与 PHP 团队、Calif 和 OpenAI 合作开展漏洞发现、协调和补丁验证工作。我们还与 Google Cloud、Cloudflare、AWS、Microsoft、Automattic、Fastly、Akamai、Imperva、Vercel 以及许多其他机构合作,为无法立即更新的组织准备客户指南、检测规则和开箱即用的缓解措施。

PHP 核心中的漏洞影响范围远超单个应用。PHP 运行在各类云平台、托管服务商、内容分发网络以及数百万台独立管理的服务器上。要在技术细节公开之前降低暴露风险,需要整个生态系统的协同努力。

技术深入剖析

漏洞:上传进度反序列化器的释放后使用(use-after-free)

PHP 的 Session 模块可以在上传进度处理期间、在同一个预初始化窗口内解码会话数据。解码器将请求所属的簿记信息存储在BG(unserialize)。一次致命的内存分配失败可能中断此路径,销毁请求堆,并使反序列化器的全局状态处于已发布状态。

在由同一 worker 处理的后续请求中,PHP 可能将攻击者回收的内存当作活跃的反序列化器簿记信息来使用。这种陈旧状态成为一种强大的内存破坏原语。我们将其与内存泄露结合,消除了地址不确定性,从而在 WordPress、Drupal 和 Joomla 上实现了未认证的远程代码执行。

WordPress、Drupal 和 Joomla 的攻击链是代表性的演示。底层原语存在于 PHP 引擎层面,可能影响任何运行易受攻击版本的 PHP 应用。

这些问题在应用层之下执行,因此应用日志可能包含很少的上下文。在系统打上补丁之前,防御者应特别关注异常的多部分请求,随后出现内存限制错误或反复的 HTTP 500 响应、意外过大或格式错误的PHPSESSID响应 cookie,以及无法解释的 PHP worker 频繁变动。这些信号可以指导调查。应用 PHP 安全更新仍然是唯一完整的修复措施。

漏洞:远程进程内存泄露

PHP 在请求启动期间解析 RFC1867 多部分请求,此时正常模块初始化尚未完成。会话上传进度处理可以在这个早期阶段初始化 Session 状态,并在PS(id)中发布一个会话 ID。内存不足错误可以在清理完成之前中止请求。PHP 随后销毁请求堆,并可能使PS(id)指向已释放的分配。

同一 worker 稍后处理的多部分请求可以在正常 Session 初始化重置该指针之前到达上传进度清理路径。PHP 将该过期指针和长度当作有效的zend_string,并将回收的堆内容进行 URL 编码写入一个PHPSESSID响应 cookie。即使应用程序从未调用session_start(),该攻击也能奏效,这使得该问题与具体应用无关。我们演示了未经身份验证地泄露攻击者指定大小的活动 worker 内存区域,其中包含来自攻击者请求之外的数据。

漏洞:致命错误回溯释放后使用

在受影响的版本中,PHP 将最近一次致命错误的回溯保留在EG(last_fatal_error_backtrace)中。致命的内存不足错误可以销毁请求堆,而不取消定义该执行器全局值。worker 存活下来,但该全局值仍指向上一个请求的内存。

如果同一 worker 在下一个请求早期发出诊断信息,它可以在执行器重新初始化该状态之前访问该指针。PHP 随后销毁或更新悬空的回溯,并跟随攻击者回收的内存。由此产生的跨请求释放后使用可以被发展为受控的内存破坏。我们使用该原语演示了针对 Drupal 的未经身份验证的远程代码执行。

漏洞:OPcache 类型混淆

OPcache 将编译后的 PHP 结构持久化到共享内存中,并在每个 worker 的运行时指针映射中分配索引。各 worker 通过一个共享 frontier 来协调这些索引。在zend_accel_script_persist()过程中,PHP 推进进程本地的CG(map_ptr_last)frontier。只有在持久化完成后,它才会发布对应的共享 frontier。若在这两个事件之间发生分配失败,进程本地的推进就会保留下来,而部分已持久化的对象会引用那些共享状态仍视为可用的槽位。

当另一个 worker 之后将其中某个槽位复用于不同的运行时对象时,过期的共享元数据会解析为错误类型的指针。这种不匹配会造成跨 worker 的类型混淆,并破坏共享的 OPcache 状态。我们利用这一原语构建了一条针对 WordPress 的未认证 RCE 利用链。

除了这四个漏洞之外,还存在其他变体。虽然我们最初只向 PHP 报告了这四个,但通过这项研究我们意识到,该漏洞深深植根于 PHP 代码库中,需要一次全面的修复。其他变体也应归入同样的两个 CVE 之下。

Wiz 能提供什么帮助?

Wiz 客户应参阅Wiz 威胁情报中心关于 PHP2Shell 的公告,其中包含对无代理和运行时漏洞检测的内置覆盖、通过 Wiz Defend 和 Sensor 进行的利用检测,以及自动响应策略,还有修复和威胁狩猎指导。

使用最新版本(1.0.12768)的 Sensor 客户还可以启用内置响应策略,自动终止表现出 PHP2Shell 利用典型行为的进程:

结论

鉴于 70% 的互联网受到影响,PHP2Shell 的影响怎么强调都不为过。它标志着一个 AI 拐点。存在漏洞的代码已经存在了十多年——AI 改变的是理解这些弱点并将其转化为可用漏洞利用的能力。借助前沿 AI 模型和合适的工具,一名研究人员在一周内完成了过去世界级团队需要数月才能完成的工作。

这改变了发现与利用两者的经济账。曾经看似不切实际的漏洞利用,如今成了可行的目标。同样的能力也让防御方有机会发现并修复那些历经多年审视仍未被发现的缺陷。

Wiz 在整个研究过程中使用了 Wiz Atlas、Gemini 4 Argon 和 GPT-5.6 Sol,其中 Argon 在发现并协助修复该漏洞方面贡献尤为显著。

机会在于让这项工作成为常规:系统性地发现现有软件中的缺陷,并在新缺陷进入生产环境之前将其捕获。我们与 PHP、OpenAI 和 Calif 的协同努力推进了这一目标,将 AI 应用于加固我们共同依赖的软件基础。

负责任披露时间线

  • 2026 年 8 月 19 日:Wiz Research 使用 Wiz Atlas、Gemini 4 Argon 和 GPT-5.6 Sol 发现了首个 PHP 漏洞。

  • 2026 年 8 月 20 日:确认可对 Drupal 实现未认证 RCE。

  • 2026 年 8 月 21 日:确认可对 WordPress 实现未认证 RCE。

  • 2026 年 8 月 24 日:Wiz Research 向 PHP 安全团队报告了这些漏洞。

  • 2026 年 9 月 21 日:PHP 确认收到报告,并开始开发协同修复方案。

  • 2026 年 10 月 21 日:修复后的 PHP 版本发布。

  • 2026 年 10 月 21 日:公开披露。

保持联系

大家好!我们是来自 Wiz Research 团队的 Sagi Tzadik、Shir Tamari、Nir Ohfeld 和 Tomer Schwartz(@wiz_io)。我们是一群资深白帽黑客,只有一个目标:让云对每个人来说都更安全。我们专注于发现云软件中的新攻击向量,并揭示组织所依赖的系统中的隔离问题。我们很乐意在 X 上或通过以下邮箱收到你的来信:research@wiz.io。