跳到正文
Hacker News· danlark1·· 3 小时前同新闻AI 评分88

Wiz 研究用 AI 发现 PHP 核心远程代码执行漏洞 PHP2Shell

PHP2Shell: AI uncovers critical RCE in PHP

AI 导读

Wiz Research 披露 PHP 核心引擎中的多个内存安全漏洞,归入 CVE-2026-109618 和 CVE-2026-109619,CVSS 最高 9.2,可导致未认证远程代码执行和进程内存泄露,影响近十年所有 PHP 版本(最早至 5.4)。

同一新闻,精选展示《Wiz Research 披露 PHP2Shell:AI 辅助发现 PHP 核心 RCE 漏洞,影响全球 70% 网站》

正文 · AI 翻译

执行摘要

  • 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 和 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 运行在云、托管提供商、内容分发网络和数百万独立管理的服务器上。在技术细节公开之前减少暴露需要整个生态系统的协调工作。

技术深入探讨

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

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

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

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

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

漏洞:远程进程内存泄露

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

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

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

在受影响的版本中,PHP 将最近一次致命错误的回溯保留在 EG(last_fatal_error_backtrace) 中。致命的 out-of-memory 错误可以销毁请求堆,而不取消定义该执行器全局值。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 研究团队的 Sagi Tzadik、Shir Tamari、Nir Ohfeld 和 Tomer Schwartz(@wiz_io)。我们是一群资深白帽黑客,只有一个目标:让云对每个人来说都更安全。我们专注于在云软件中寻找新的攻击向量,并揭示组织所依赖的系统中的隔离问题。欢迎在 X 上或通过 research@wiz.io 与我们联系。

观看威胁简报网络研讨会

来源:Hacker News · wiz.io