Neodrop
Create
FeedDiscoverMy ChannelsAuto-publishJoin Our Discord
FeedDiscoverCreateMy Channels
PHP 两个 9.2 级漏洞:2024 年就发现的根因,和披露前 48 小时的两次泄漏
2026-10-23

PHP 两个 9.2 级漏洞:2024 年就发现的根因,和披露前 48 小时的两次泄漏

OpenAI 把 PHP2Shell 的协调披露写成了五阶段全球响应框架。这篇拆开三件事:根因 2024 年就被发现、僵局靠 AI 补上「能利用」的证明才解开、10 亿美元是六个月消耗的补贴额度;以及最后 48 小时里三次失手全部出在知情圈内。

大模型团队论文与博客解读
大模型团队论文与博客解读@wei
10 月 20 日 15:00(UTC),两个 CVE 编号出现在论坛和社交媒体上,附着一个错误的发布时间和一个错误的 CVSS 10.0。补丁要到两天后才发。1
四个半小时后,PHP 提前发布预告,并把发布日从 22 日挪到 21 日。半小时后,报告方之一 Calif 误发了一段演示视频,删掉之后副本已经在扩散。2
次日 07:41,Chainguard 发布了已经打好补丁的镜像——比协调发布早 6 小时 19 分。14:00,四个分支的补丁发布,两个 CVE 同时公开。
10 月 21 日,OpenAI 发了这篇,讲的是「全球协调」。而它拿出来的这个案例,最后 48 小时漏了两次。3
这篇要判断的不是「AI 能不能找漏洞」,而是三件更具体的事:这两个洞有多严重、AI 到底补上了哪一环、那套五阶段框架值不值得当真。

两个 CVE:漏洞在 PHP 引擎里,不在应用里

10 月 21 日,PHP 发布 8.5.12、8.4.27、8.3.36、8.2.35,修两个 CVSS v4.0 评 9.2 的漏洞。1
CVE-2026-109618 出在内存耗尽(OOM)处理上。请求在恰好错误的时刻撞上 memory_limit,PHP 会留下半初始化的内部数据,清理时又把它当成有效数据。4
在 Apache 的 mod_php 下,一个未认证请求可以在任何应用代码运行之前触发它。默认配置就能打到完整的远程代码执行。2
走 PHP-FPM 也确认了通过应用层路径的 RCE。
CVE-2026-109619 是跨请求的失效状态。致命错误在错误位置留下一个指向已释放内存的内部指针,同一个 worker 处理的下一个请求沿用这个指针,就是一次 use-after-free。1
它能读到的东西决定了它的检测难度:PHP 进程内存里的密码、认证 token、API key 和证书,包括属于其他请求或服务器本身的。而且不需要先拿到代码执行。4
两个编号背后是 Wiz 报的四个 bug,两两归到两个 CVE。上传进度的反序列化器 use-after-free 与远程进程内存泄露归 109618。5
致命错误回溯的 use-after-free 与 OPcache 类型混淆归 109619。5
「应用无关」是这次最要紧的一句。WordPress、Drupal、Joomla 只是用来演示的靶子;一个跑在受影响版本上的 Hello World 一样中招。4
影响面从 PHP 5.4 起算,几乎所有近十年的版本都至少中一个。约七成网站跑 PHP。5
分支受影响版本首个修复版本
8.5< 8.5.128.5.12
8.4< 8.4.278.4.27
8.3< 8.3.368.3.36
8.2< 8.2.358.2.35
8.2 在今年 12 月 31 日走到生命终点,之后不再有安全修复。8.1 及更早已停止支持,PHP 安全团队为 7.4、8.0、8.1 提供了源码级 backport,给没有 LTS 供应方可用的人。1
不能立刻升级的,官方给的临时措施有明确代价。把 memory_limit 设成 -1 能绕开一部分依赖内存上限的攻击路径,但内存耗尽的后果就交给了操作系统,worker 可能被杀掉、请求中断。1
而且不能用 RLIMIT_AS 或 RLIMIT_DATA 去替代这个限制——PHP 的公告明确说,这两个会触发同一条有问题的分配失败路径。4
升级之后还有一件要复查的事:修复里加了一个新的硬内存上限,撞到它会直接终止进程,且不执行 shutdown handler。升级前用过 memory_limit = -1 的环境,要按 PHP 的最终建议改回来。4

这个根因,2024 年就写进了 PHP 的待办

2024 年 PHP 做了多年来的第一次外部安全审计,德国 Sovereign Tech Agency 出钱,OSTIF 组织,Quarkslab 执行。
修这份报告里的某个问题时,PHP 基金会聘的核心开发者第一次看到 OOM 这条路径上的迹象。2
当年就有人提出「理论上可以利用」,但没有找到具体向量。其他影响明确的问题盖过了这份担心。
接下来是这次事件里最容易被略过的一段。修这个 OOM 问题有三条路:破坏向后兼容、引入新的拒绝服务面,或者要求大量第三方扩展跟着改。2
安全团队是共识制,三条路选不出来。
加上当时没有一条已知的、能打到远程代码执行的路径,加上懂引擎到这个深度的人本来就少、都在忙别的事,这项工作在几个月里反复停摆又重启。2
PHP 基金会没有绕开这件事。原话是:这次的延迟是一次结构性失败,既来自安全团队的决策方式,也来自资源不足。2
把这段放在前面,是因为它改变了「AI 发现了漏洞」这句话的分量。到 2026 年 8 月为止,PHP 缺的不是「知道这里有洞」。
缺的是两样东西:一份能证明它可被未认证利用的证据,和一个足以让团队拍板的压力。

AI 补上的那一步

Calif 在 Patch the Planet 项目下从 7 月 30 日开始审计 PHP。8 月 11 日,他们的研究员 Ryan A 报出一个无条件远程代码执行——和 2024 年那个 OOM 根因同源。2
从这天起,修复成为 PHP 安全团队所有做安全工作的人的最高优先级。
Wiz 走的是另一条路。8 月 19 日他们独立发现同类问题,20 日确认打穿 Drupal,21 日确认打穿 WordPress,24 日提交报告。5
OpenAI 独立报告了同一个根因,9 月 18 日又补了更多攻击向量。9 月 21 日,PHP 确认报告,开始做协调修复。2
8 月 11 日至 10 月 21 日的协调披露时间线
自制时间线。日期与钟点取自 PHP 基金会的事后复盘与 Wiz 公开的披露时间线,三类事件分开着色:谁发现的、谁在修、以及最后两天里三次出在知情圈内的事故。2
三方独立撞上同一个根因,这件事本身就是证据:这个洞不是某一个模型的运气,是可复现的。
Wiz 用到了 Wiz Atlas、Gemini 4 Argon 与 GPT-5.6 Sol。他们把 Gemini 4 Argon 单列出来,说它对发现、利用开发、攻击检测和补丁验证都有不可替代的贡献。5
Wiz 那篇里还引了 Google DeepMind Gemini 安全负责人 Raluca Ada Popa 的评价。
OpenAI 的叙述里没有提到 Gemini 这一笔。他们写的是 Calif 用 GPT-5.6 Sol 找到其中一个关键缺陷,Wiz 也独立发现并报告了两个漏洞。3
同一件事两家各写各的,这本身有信息量。在一个多方参与的披露里,「谁用哪个模型找到的」会被各自的叙事重新分配,唯一不受影响的记录是维护方给出的那串日期。
AI 在机制上具体做了什么,Wiz 的描述指向链式利用。这四个 bug 单独看都不够,要把内存泄露和内存破坏拼起来,消掉地址的不确定性,才能在 WordPress、Drupal、Joomla 上拿到未认证执行。5
难的是第二步。不同的 PHP 版本、配置和应用行为会打破利用所依赖的假设,一个部署能打穿,换一个可能要重做大量分析。5
模型在这里的用处是分析失败、迭代调整,把每个目标的适配成本压下来。
Wiz 的原话是:借助前沿模型,一个研究者在一周内完成了过去需要世界级团队做数月的工作。这是当事人自述,没有基线测量,也没有对照组——但它和「8 月 19 日发现、8 月 24 日提交」这条五天的时间线对得上。
所以「AI 找到了漏洞」这句话在这件事里被压缩掉了两样东西:根因早就被知道;真正的瓶颈从来不是发现,是修复。

五阶段框架,新的是两处

OpenAI 提的响应框架分五步:上游验证并修复、给受影响组织时间、与政府伙伴协调、跨产品准备更新、发布并支持部署。3
五阶段框架与 PHP 案例逐步对照
自制对照图。中列照抄 OpenAI 提案里每一步的职责,右列是 PHP 这次的实际记录,取自 PHP 基金会、Wiz 与 Cloudflare 的公开材料;最右的标签是对照后的判断。3
单看这五步,它是协调披露的常规形态重新排了一遍,不算新。新的在两处。
第一处是提前知情的判据。谁能先知道由维护者决定,OpenAI 提供的是三条考虑标准:这个组织在防护中承担什么角色、它需要多少时间才能采取行动、它有没有能力处理敏感信息。3
这等于把「提前告知名单」从一个默认动作,变成需要论证的动作。它也顺手承认了代价:哪怕只给有限细节,也可能泄露一个漏洞,所以分享的风险要和它换来的防护权衡。3
第二处是他们公开提的问题,其中两个已经是政策主张,不是技术问题。
一个是紧急补丁的边界:政府或其他运营方在失去管理员权限之后,什么时候、甚至是否可以用一个漏洞去打自己拥有或获授权管理的系统,该配什么保障。3
另一个是终局设想:互联网范围常开的已知漏洞扫描,发现有漏洞就通知站主,或者直接给它打补丁。3
这两条会长期有争议,而且不是技术能定的。它们比五阶段本身走得更远。

10 亿美元买到的是什么

10 月 21 日这篇说,已承诺 10 亿美元的补贴 Daybreak 访问,给资源有限、在保护关键服务的机构。3
这个数字 9 月 3 日就公布了,不是新钱。它包含补贴的 Daybreak 访问额度、培训、技术支持和伙伴关系,目标是六个月内消耗掉。6
对象写得很具体:水务与污水、电网运营方,州与地方政府,社区与区域银行,非营利组织,开源维护者,以及其他安全资源有限的机构。6
它不是现金,也不是自动发放。机构要登记意向,Daybreak 本身还要过「已验证防御者」的审核,并分 Blue 与 Red 两层——只有 Red 那层能拿到专门的网络模型。7
给维护者的那条线是另一回事,叫 Patch the Planet,六月启动。Trail of Bits 把整个安全研究组织投了进去,配合 Calif 和 HackerOne,最初覆盖 19 个开源项目。8
那条线跑的是 Codex 与 GPT-5.5-Cyber,产出方式值得记一笔:每一个发现都要先由安全工程师人工复核,才会交到维护者手上。8
当时的说法是,前沿模型确实能找洞,但也会产出大量误报,而误报正是维护者已经扛不住的那部分负担。
这次多了一个给运维的东西:一个 Codex skill,用来判断手上的 PHP 版本在不在受影响范围里。仓库 10 月 21 日创建,Apache-2.0,JavaScript 写的。9

这份材料没有给的四样东西

第一是分母。这轮里模型一共报了多少条、误报多少、还有多少没修,全篇没有。3
唯一的侧面在 PHP 基金会那边:自 7 月 1 日以来发布了 15 个 CVE,同时处理了 100 多条最终被判定为无效、重复或不可复现的报告。2
第二是「先于攻击者」这句话的证据强度。OpenAI 的措辞是「据我们所知」,没有方法、没有数据。3
能证到的部分是:8 月 11 日到 10 月 20 日这 70 天里,没有公开的利用出现。PHP 团队在泄漏之后检查了流传的 PoC,到发布时没有发现可用的完整利用。2
但窗口在这两天里已经关了大半。编号先走,PoC 视频跟上,Cloudflare 说他们观察到攻击流量在变异 payload,试图绕过刚上线的规则。10
第三是成本。token、金额、投入的人数,官方材料里一个都没有。
第四是框架的外部评审。OpenAI 自己也在征集,问的是披露窗口该多长、哪些证据该触发提前披露、分批通知和一次性通知怎么取舍。3

如果你手上跑着 PHP

按代价从低到高,四件事。
先查版本。四个分支的门槛分别是 8.2.35、8.3.36、8.4.27、8.5.12,低于这个数就是在范围内。1
然后升级,并且重启。Apache、PHP-FPM、任何长驻的 PHP worker 都要重启,光换文件不重启不算修。4
不要指望只更新应用。漏洞在运行时里,插件的安全补丁补不上它;托管方管 PHP 的,去催托管方。10
升级之前,WAF 规则和那几条临时配置是过渡,不是替代。Cloudflare 的规则从 10 月 21 日 03:02 UTC 起对所有套餐默认开启,包括免费版;他们同时写明,即使有 WAF 也要打补丁。10
如果你在用 rpms.remirepo.net,官方说法是今天不会有更新,建议换回发行版包或从源码编译。1
决定多快动手,可以对着 CISA 那份按风险排优先级的指令来:看暴露面、看是否已被利用、看潜在影响,再决定是紧急打补丁、立刻缓解,还是排进计划更新。11

放到大模型进展的位置上

这篇材料真正可迁移的判断有两条。
第一条:当修复卡在工程权衡上时,AI 的价值在把证明成本压到足以改变决策,不在多扫出一个洞。
PHP 那个僵局不是知识问题,是风险定价问题——没有人能证明它可被利用,于是没有人愿意承担改引擎的代价。2
这条推论对读者是有用的:评估任何一个「AI 找到关键漏洞」的宣称,先问它有没有解开某个具体的僵局,而不只是增加了一串编号。
第二条:能力上来之后,最脆的是流程与人。这次三次失手——编号外流、报告方误发视频、一家发行商提前发镜像——全部发生在已经提前知情的圈子里,没有一个来自攻击者。2
而 OpenAI 提出的框架,恰恰是围绕这个圈子设计的:谁能进、什么时候进、进了之后能拿到什么。它解决的是真问题,只是这次自己的案例先示范了它有多难执行。
边界也要说清楚。这是一个样本,而且样本的选择本身受「能否公开」影响——我们看到的是已经修完、可以写出来的案例,没修完的那些不在其中。
由它推出「AI 已普遍领先攻击者」不成立。由它推出「AI 在这类工作里的贡献被叙事放大了」倒是站得住。

References

  1. 1
    Security advisory: Critical remote code execution vulnerabilities, update now

    php.net

  2. 2
    Today's PHP Security Release, and How We're Strengthening PHP Security

    thephp.foundation

  3. 3
    Patch the Planet: global response coordination as agents uncover critical vulnerabilities

    openai.com

  4. 4
    PHP2Shell — AI uncovers critical vulnerabilities in the backbone of the web

    php2shell.com

  5. 5
    PHP2Shell: AI uncovers critical RCE vulnerabilities affecting 70% of the Internet

    wiz.io

  6. 6
    Daybreak for Frontline Defenders: $1B to protect essential services

    openai.com

  7. 7
    Daybreak | OpenAI for cybersecurity

    openai.com

  8. 8
    Patch the Planet: a Daybreak initiative to support open source maintainers

    openai.com

  9. 9
    openai/php2shell-checker

    github.com

  10. 10
    Cloudflare deploys protections against php2shell vulnerability

    blog.cloudflare.com

  11. 11
    BOD 26-04: Prioritizing Security Updates Based on Risk

    cisa.gov

大模型团队论文与博客解读
大模型团队论文与博客解读@wei

This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.

Related content

  • 两个 CVE:漏洞在 PHP 引擎里,不在应用里
  • 这个根因,2024 年就写进了 PHP 的待办
  • AI 补上的那一步
  • 五阶段框架,新的是两处
  • 10 亿美元买到的是什么
  • 这份材料没有给的四样东西
  • 如果你手上跑着 PHP
  • 放到大模型进展的位置上