10 月 21 日,PHP 项目组提前一天发布了紧急安全更新。修复对象是两个编号相邻的漏洞,CVE-2026-109618 与 CVE-2026-109619,合称 PHP2Shell,严重程度均为 9.2,都属于未授权远程代码执行,攻击者无需登录即可在服务器上运行代码。受影响范围上溯到 2012 年发布的 PHP 5.4,修复版本为 8.5.12、8.4.27、8.3.36 与 8.2.35,PHP 8.1 及更早版本已停止支持,官方不再提供修复。
这两个漏洞最反常的地方在于时间线。PHP 基金会的研究人员早在 2024 年就注意到代码里有一处理论缺陷,但没能推演出怎么利用,于是搁置。今年 7 月,基金会加入 OpenAI 的漏洞挖掘计划,情况开始变化。安全公司 Calif 在 8 月 11 日用 GPT-5.6 Sol 报告了第一个漏洞,Alphabet 旗下的 Wiz 在 8 月 24 日借助自家自主安全研究系统与 Gemini 4 Argon、GPT-5.6 Sol 报告了第二个。
Wiz 的说明是,这段脆弱代码存在超过十年,以人类研究者的工作方式,利用它需要极高的技巧与耐心。前沿模型把这件事的门槛降了下来,它能穷举人类想不到的路径,把理论缺陷推进到可复现的攻击链。Wiz 在 8 月 20 日对 Drupal 确认了未授权远程代码执行,8 月 21 日在 WordPress 上复现,8 月 24 日向 PHP 安全团队报告。
按原计划,补丁应在 10 月 22 日发布。10 月 20 日,CVE 编号开始在网络论坛流传,各方立即开始自行挖掘与构造验证代码,PHP 维护者被迫把发布提前一天。混乱还没结束,Calif 误将一段针对活跃目标的验证视频公开,虽然很快删除,副本已在社交平台扩散。
10 月 21 日 07 时 41 分,距离预定发布还有六个多小时,镜像分发商 Chainguard 公开了包含修复的镜像。PHP 基金会的措辞相当严厉,认为这让攻击者可以在其他用户还在等待时研究修复的二进制差异,等于作废了多方数周的协同工作。Chainguard 首席执行官 Dan Lorenc 没有否认提前发布,他的解释是 10 月 16 日得知将有披露,当晚用自研的AI工具链独立发现了同一个漏洞,周末参与补丁测试,最终在多方报告 10 月 20 日夜到 21 日凌晨出现活跃利用、而欧洲的维护者正在睡觉的情况下决定提前放出。
两边的立场都能理解。基金会要守住协同披露的秩序,镜像商要保证客户在攻击窗口期内有可用的补丁。这起冲突暴露的是 AI 时代披露机制的结构性问题:当独立发现漏洞的速度从几个月压缩到一晚,参与方数量快速增长,任何一个环节的自行判断都可能让协同失效。
补丁发布当天,欧洲多国政府选择了最保守的做法。荷兰国家网络安全中心下线了自己的网站,鹿特丹港、政府门户 Overheid.nl、足协 KNVB、五大政党网站与多家医院跟进;丹麦市政IT公司 Kombit 关闭了包括全国校园通讯平台在内的多项服务;芬兰国家IT服务商 Valtori 下线政府公共网络服务;法国内政部把所有网站置入预防性维护;德国数字部门与比利时部分站点同样受影响。英国有超过 30 项政府服务下线,维基百科临时关闭了数量不明的系统,互联网档案馆也短暂离线。
美国国家安全局发布了罕见的公开警告,认为攻击者很可能把漏洞武器化,联邦调查局与网络安全和基础设施安全局同步建议,无法立即修补的系统应直接下线。Cloudflare 首席执行官 Matthew Prince 表示,披露之后在网络中观测到数百万次利用尝试,亚马逊方面称 10 月 17 日就在蜜罐系统上探测到攻击尝试。目前尚无大规模成功利用的公开证据。
下线在商业语境里很难想象,电商站在大促前下线,损失是即时的。政府敢做这个动作,是因为公共服务中断的代价能与数据泄露的代价比较,而企业的选择空间小得多。Censys 的观测显示,260 万台检测到的主机中约 150 万台运行的版本当时没有可用补丁,长尾系统的升级周期以年计。
受影响版本上溯到 2012 年,这个跨度意味着大量系统跑在早已停止维护的分支上。共享主机环境尤其脆弱,用户往往既不知道自己的站点用什么版本,也没有权限升级。Drupal 协会的临时首席执行官 Tiffany Farriss 提醒,过去二十年里发布过的 PHP 版本都可能暴露在新漏洞面前。
对国内用户来说,这次事件的现实意义很直接。大量企业站、内容站、小型电商仍运行在 PHP 之上,很多由外包团队在数年前搭建,后续无人维护。判断风险只需要三步:确认当前 PHP 版本,确认是否在修复列表内,确认是否有可回滚的升级方案。第三步最容易被忽略,升级失败导致站点不可用的情况,比漏洞本身更常见。
升级之外还有缓冲手段。Web 应用防火墙可以拦截已知的攻击特征,但 PHP 官方明确表示没有完整的替代防护措施,WAF 只能争取时间。真正的解法是版本升级,这件事没有捷径。
OpenAI 在这次事件中的角色值得单独看一眼。它把发现过程描述为防御方的一次胜利,同时承认同样的能力可以帮助攻击者更快构造利用代码。公司表示正在给自家安全模型加入拦截分类器,并向一线防御方提供十亿美元级别的补贴额度,还发布了用代码智能体写的 PHP 版本检查工具。安全研究公司 TLP 的联合创始人 Costin Raiu 的评价更冷静,他认为AI正在加速一场“利用竞赛”,攻防节奏的失衡会越来越明显。
失衡的根源在时间尺度。补丁公开之后,模型可以在小时级逆向出利用代码;而企业完成测试、审批、灰度、全量升级,通常以天甚至周计。这个时间差就是风险窗口,AI 把这个窗口拉长了,不是缩短了。
能对冲这个窗口的,只有把升级变成常态。资产清单要能随时回答“我们有哪些系统跑在什么版本”,升级流程要能在小时级完成灰度,回滚方案要提前演练。这些工作没有一项是新技术,但在 AI 挖漏洞的效率面前,它们的价值被重新定价了。漏洞会越来越多地被找到,能快速修好的组织,才有资格谈安全。