---
author: Best Partners TV
date: '2026-10-27'
guest: ''
layout: post.njk
source: https://www.youtube.com/watch?v=JasRfjsQBNU
speaker: Best Partners TV
tags:
  - vulnerability
  - cybersecurity
  - artificial-intelligence
  - zero-day
  - open-source
title: AI挖掘PHP2Shell漏洞引发多国政府关站与全栈安全危机
summary: 安全研究员借助前沿AI模型快速挖掘出潜伏十余年的PHP2Shell严重漏洞，因消息提前泄露迫使多国政府网站主动关停避险。同期全栈技术栈密集爆雷，显现出AI既降低攻防门槛又带来自主风险的双重影响。
insight: ''
draft: true
series: ''
category: debugging
area: tech-engineering
project: []
people:
  - 大飞
  - Ryan Austin
  - Thai Duong
  - Volker Dusch
  - Stefan Esser
  - Nick Rogers
  - Scott Helme
companies_orgs:
  - Calif
  - Wiz
  - PHP Foundation
  - OpenAI
  - Cloudflare
  - watchTowr
  - Railway
  - eMudhra
  - CrowdStrike
  - Anthropic
  - Google
products_models:
  - GPT-5.6 Sol
  - Gemini 4 Argon
  - Claude Code
  - Claude Mythos
  - Claude Opus 4.6
  - Cursor
  - ARTEX
  - LiteLLM
  - OpenCode
media_books:
  - The Wall Street Journal
status: evergreen
---
大家好，这里是最佳拍档，我是大飞。

如果你是一个全栈开发者，刚刚过去的这一周可能让你怀疑人生。整个互联网基础设施轮流出事：GitLab爆出满分10分的漏洞；Chrome紧急修了353个；Node.js和PHP接连爆雷；印度一家CA机构用数字“4”当HTTPS证书的私钥；连云部署平台Railway都出事了，用户的API Key和环境变量面临泄露风险。短短几天，原本引以为傲的全栈技术栈，瞬间变成了漏洞全家桶。这已经不是几个孤立的安全事件了。

不过今天我想重点聊的，是这波风暴里最具标志性的一件事：AI挖出的两个PHP漏洞，逼得好几个国家的政府网站在同一天主动下线。

### 多国网站紧急下线避险

10月21日晚上，芬兰把所有对外网络服务停掉；荷兰国家网络安全中心连自己官网都撤了，鹿特丹港、荷兰足协、五大政党的网站、多家医院跟着关；法国内政部要求各省网站暂时关闭；德国联邦IT服务商关掉多个站点；比利时外交部、维基媒体基金会、任天堂也停了部分服务。

这些网站都没有被黑，而是自己主动关的。原因很直接：PHP有两个严重漏洞刚被公开。

PHP相信做开发的朋友都很熟悉，全球能识别后端语言的网站里，近七成跑在它上面。而这次的漏洞，攻击者不用登录，不用任何账号密码，发几个特制请求，就可能远程控制整台服务器。所以各国政府不敢赌，先停了再说。

那这件事究竟有多急呢？美国国家安全局直接说，来不及打补丁的，先让相关系统下线。Cloudflare当天就检测到攻击尝试了。安全公司watchTowr给漏洞打了满分10分，PHP官方给的是9.2分。两个漏洞都一样，它们有个合称，叫PHP2Shell，漏洞编号CVE-2026-109618和CVE-2026-109619。

### AI数周挖出潜伏十几年的陈年缺陷

只不过，这次最先找到这两个漏洞的，是AI。

今年8月，美国安全公司Calif的研究员瑞安·奥斯汀（Ryan Austin）开始审计PHP源代码。他借助OpenAI的GPT-5.6 Sol模型，几天之内就找到了问题。Calif首席执行官泰·杜昂（Thai Duong）事后告诉《华尔街日报》，其实这类内存管理风险早就有人注意过，只是一直被认为难以利用，没人把它做成真正的攻击。但是奥斯汀的测试证明了，通过发送一系列请求，攻击者确实能让服务器执行自己的代码，小型系统可能几秒就被攻破，而复杂的需要几小时。

8月11日，杜昂给PHP项目的安全工程师福尔克·杜施（Volker Dusch）打了个电话。杜施后来回忆，接起电话第一反应就是：天哪，我们现在该怎么办？

有意思的是，Calif并不是唯一一家找到这组漏洞的公司。几乎同一时间，另一家安全公司Wiz也撞上了它们。Wiz用了自家的Wiz Atlas工具，配合Google的Gemini 4 Argon和OpenAI的GPT-5.6 Sol，独立发现了第一个漏洞。第二天在Drupal上验证了远程执行代码的攻击路径，第三天在WordPress上也跑通了。Wiz说，前沿模型帮他们分析失败原因、反复调整参数，几小时就让攻击在多种应用上跑通。

两家公司、三个AI模型、三周之内，从两个方向撞上了同一组漏洞。

其实这组漏洞的根，老得吓人。2004年，安全研究员斯特凡·埃塞尔（Stefan Esser）就发现过PHP在内存耗尽时的同类问题。2020年有人提交过相关的bug报告，几乎没人理会。2024年一次第三方资助的PHP安全审计，又碰到了相关问题，但是因为没证明它真的可以被利用，最后没修。这个漏洞在PHP里躺了十多年，不止一次被人摸到了边，却一直没人把它做成真正的攻击。

其实不是没人想到，而是太费劲了。独立分析作者尼克·罗杰斯（Nick Rogers）把这种状态起了个名字，叫做“靠攻击者累到放弃来保证安全”。互联网底层的大量老代码其实都处在这种状态里，理论上有漏洞，但是真要打起来，各路神仙都觉得太费劲，所以就这么一直放着。

改变这件事的，是OpenAI今年6月启动的“修补地球”（Patch the Planet）计划。OpenAI出钱、出模型，请安全公司审计那些被全世界依赖的开源软件。Calif正是参与者之一，把目标定在了PHP，8月1日开始审计，几天后第一个问题就浮出水面了。

更巧的是，Calif让AI把找到的第一个漏洞的模式，总结成了一份可复用的技能文件，专门用来搜寻同一类的缺陷。第二个漏洞，就是靠这份技能文件找到的。找到一个之后，AI能把方法打包，再去找下一个。

Wiz的判断很直白：这些漏洞存在了十几年，要证明能被利用，得把好几个问题串成一条复杂的链，几乎到了人类研究员的极限，而前沿模型把这个门槛降下来了。以前要一支顶尖团队干几个月的活，现在一个研究员一周就做完了。

不过AI也不是按一下按钮就把漏洞挖出来了。Calif的奥斯汀后来写得很清楚，他没用什么特殊工具，也没用普通人拿不到的模型，关键是他熟悉PHP这20年的漏洞史，心里大概有个猜测，然后再引导模型往那个方向去找。他还说，模型默认会从最新、最出名的漏洞往周边找，不会主动去翻20年前的冷门手法。

### PHP2Shell技术机理：内存管理的头与尾

那么这两个漏洞到底是怎么回事呢？

它们都出在PHP最底层的内存管理上，和网站自己的代码写得好不好没关系。你访问一个PHP网站，PHP要先把表单、上传的文件这些数据解析好，然后才轮到网站自己的代码运行；请求处理完，PHP还要做一遍收尾清理。这两个漏洞，就出在这一头一尾。

第一个漏洞CVE-2026-109618，是内存撑爆后留下的一个“半成品”。PHP给每个请求设了内存上限，默认128MB，也限制了上传大小。攻击者发的请求虽然没有超过大小限制，但是里面塞了成千上万个空字段和请求头。PHP要给每一项做登记，内存就会比请求本身占得多，很快就被撑满了。PHP往登记表里加一条记录时，是先把计数加一，再写内容。如果刚好卡在这两步中间内存用完，PHP就会立刻“紧急跳出”，那一条记录就只写了一半。用Apache mod_php跑PHP的时候，不管请求成没成功，都会照常跑收尾清理。清理程序会按照计数挨个处理，碰到那条没写完的记录，里面其实已经是攻击者提前布置好的数据了。

第二个漏洞CVE-2026-109619，是上一个请求留下的“旧记录”。一个PHP工作进程会一个接一个地处理很多请求。有些信息，比如报错和会话，会存在进程的全局记录里，指向当前请求的那块内存。攻击者先发一个请求，故意让它出致命错误中途退出，这样就导致全局记录没来得及清掉。请求结束后，那块内存被回收，记录却还指着它。接着攻击者再发一个请求，往同一块内存里塞自己的数据。于是新请求还没正式初始化，PHP就先按那条旧记录去读，读到的正是攻击数据。

最要命的是时机。这一切都发生在网站代码的第一行之前，你代码写得再小心，登录校验做得再严，都拦不住。用Apache mod_php最危险，默认配置就能被打穿。Nginx加PHP-FPM也逃不掉，Calif专门演示了这种组合下的攻击。除了执行代码，漏洞还能读到服务器的内存，里面可能有密码、令牌和API密钥。

### 提前泄露与紧急补丁发布

消息走漏的速度比补丁快。按照行业惯例，这本来应该是一次“先修好、再公开”的协调披露。OpenAI牵头协调了两个月，拉上PHP维护者、Wiz、Cloudflare一起提前准备。Cloudflare在公开前的大约9小时，就给免费和付费用户上了防护规则。

但是10月20日，漏洞编号和发布日期等消息，开始在Hacker News和地下论坛BreachForums上流传。watchTowr当天就确认漏洞是真的。当晚PHP官方紧急宣布补丁提前一天，于21日发布。PHP基金会后来复盘说，最初传开的消息夹杂着错误的发布时间，还把严重程度写成了满分10分，而实际是9.2。

补丁发布的当天，PHP官方同时放出了四个受支持版本的修复：8.5.12、8.4.27、8.3.36和8.2.35。PHP 8.1及更早版本已经结束常规支持，项目这次破例为7.4、8.0和8.1都提供了最小化的源代码回溯补丁。至于7.3及更早的版本，连源码补丁都没有。

### 全栈技术栈密集爆雷的魔幻一周

好，PHP2Shell的故事基本说完了。但为什么说这是个魔幻的一周？因为就在PHP出事的同一天，整个技术栈几乎没有一块地方是安全的。

Nginx在10月14日就出了五个漏洞，三个是9.2分的顶级危重。最致命的那个，存在于alias指令和请求文件名变量的组合配置中，攻击者通过恶意HTTP请求，就能触发堆缓冲区溢出，直接拿Shell或者把服务打瘫。更严重的是还有一个漏洞波及了传输层安全，攻击者可以绕过客户端证书验证。简单来说，这个看门人直接丢了安全内核。

GitLab更夸张，10月12日和21日连续爆出了两个满分10分的漏洞。CI/CD编译器底层的整数溢出缺陷，允许任何未经身份验证的远程攻击者直接攻破服务器，企业赖以生存的源代码资产和部署流水线，顷刻间暴露在绝对控制之下。

Node.js在10月21日也发了安全更新，22、24、26三个版本线一起修了10个漏洞，直接影响PayPal、奈飞、领英这些海量网站的后台根基。问题卡在自带的解压缩工具上，黑客可以发一个格式错误的畸形压缩包，服务器解压瞬间触发底层错误，重则执行代码。不过这次只有主动解压外部数据的程序才中招，没有引发PHP那样大范围的恐慌。

Go语言也在那天紧急更新了加密库。漏洞存在于标准库的证书认证体系中，攻击者能伪造证书链，骗过Go编写的微服务组件，gRPC互信和云原生Webhook校验的信任基石，也就这么垮了。

还有LiteLLM，一个周下载量2300万次的AI模型接入网关，它的v1.107.0版本被发现植入了恶意代码。黑客没死磕源码，而是盗用了开发者的发布凭据，在PyPI安装包和Docker镜像里塞了木马。所以你就算一行行审查了GitHub代码觉得没问题，实际拉取运行的包依然是带毒的。而LiteLLM接触的往往是各大模型厂商的API Key。

密钥托管平台也集体失守了。云托管平台Railway在10月21日发布公告，未经授权的第三方可能访问了客户的加密环境变量，里面可能有数据库密码、API密钥和私有镜像仓库凭据。Railway建议所有用户立即轮换，还暂停了全部部署。

AI编程工具OpenCode也出事了。10月17日它的网页后台被入侵，1.4%用户存的OpenAI、Anthropic、Google密钥可能外泄，部分用户一夜之间产生了数百到1700多美元的异常账单。在按用量计费的AI服务里，一把泄露的密钥就像一张能被盗刷的信用卡。

最荒诞的是eMudhra，一家印度的CA机构，8个中间证书的私钥取值居然都小于256，只需要8bit就能表示。安全研究员斯科特·赫尔姆（Scott Helme）在自己笔记本上，一秒钟就恢复出了所有私钥，其中一个私钥就是数字4，另一个是56，还有115。这就好比世界顶级金库配了最先进的防盗门，结果管理员把密码设成了4。整个事件甚至不需要攻击者破解什么复杂的密码学难题。

### AI的双重角色：进攻长矛与自身风险

说了这么多，你可能注意到了，这一周里发生的所有漏洞，原因各不相同：有的是内存管理缺陷，有的是证书校验逻辑，有的是供应链投毒，有的是私钥生成的低级失误。但它们几乎在同一时间密集暴露，而且AI在其中扮演了一个让人不安的双重角色。

一方面，AI是矛。过去一年，攻击者用AI的案例在急速升级。2025年11月，Anthropic披露一个有国家背景的组织利用Claude Code对约30个目标发起入侵，80%到90%的战术操作由AI自主完成。今年5月Google威胁情报团队报告，一个攻击者借助AI开发出了可用的零日攻击，计划发起大规模攻击被提前拦下。到了9月，案例已经变成规模化作业：疑似俄罗斯情报机构的组织，用AI agent在安全软件报警后自动重写恶意程序；还有讲中文的操作者用AI agent集群做侦察和漏洞开发，一个月产出十几个疑似零日漏洞。更具体的，9月底到10月初韩国多家金融机构遭遇网络入侵，CrowdStrike在服务器里，找到了开源智能体渗透测试工具ARTEX的配置文件、Claude Code会话历史和记忆文件。AI让攻击者在较短时间内完成了多次复杂入侵。

另一方面，AI自己也成了风险源。今年4月汽车租赁软件创业公司PocketOS，开发者用Cursor里的Claude Opus 4.6处理测试环境的凭据问题，AI Agent却自行找到了一个权限过大的Railway API Token，通过调用删除接口，在短短9秒内删除了生产数据库及同一存储卷上的备份。更离谱的是，开发者根本没要求AI删除任何数据，Agent事后承认自己在没有确认目标环境的情况下，执行了破坏性操作。这暴露了AI Agent和传统自动化工具的一个关键差异：AI Agent可以自主决定下一步操作，却未必能准确判断风险；当它拥有真实生产环境权限时，一次错误判断就可能变成不可逆的操作。

### 攻防天平失衡下的思考

把这一切放回过去两年的时间线，会看得更清楚。

2024年11月，Google宣布它的AI项目Big Sleep在SQLite里找到了此前未知的漏洞，称这是AI第一次在广泛使用的真实软件里发现可利用的漏洞。

今年4月，Anthropic称Claude Mythos预览版在测试中找到了数千个零日漏洞，其中包括OpenBSD里存在了27年的漏洞。因为能力太强，这个模型没公开，只提供给40多家维护关键软件的机构。

7月，AI发现的WordPress核心漏洞链wp2shell公开，随后被大规模利用。

到了Chrome 156正式版，一个版本就修复了353个漏洞，而一年前的Chrome 141和142分别只有21和26个。AI公司的名字，已经成批出现在了全球用户最多的浏览器安全公告里。

从AI能找到漏洞，到AI找到的漏洞太危险模型不敢公开，再到AI找到的漏洞让政府网站关了门，整个过程只用了两年。AI对网络安全的改变，第一次从安全圈内部的技术新闻，变成了整个社会都感受得到的现实。

OpenAI把从发现漏洞到攻击者开始利用之间的这段时间，叫做“防守方窗口”。PHP2Shell的窗口原本有两个多月，却因为一次提前泄露，就被压缩到了几个小时。AI让找到漏洞变得前所未有地容易，修补却还得一台服务器一台服务器地做。Mallory统计，补丁发布前一天，互联网上还有88万台服务器跑着PHP 8.1或更老的版本。对它们来说，理论上有漏洞、但是实际上没人会攻击的那份安全感，已经没有了。

如果你是一名开发者，那么这一周的事件给的教训其实很朴素：
- 请放弃对“全家桶”配置的安全幻想；
- 盘点你的资产清单；
- 盯住核心依赖库的版本更新；
- 把安全左移真正落到实处，依赖扫描、密钥检测，必须硬性卡在CI/CD流程里；
- 还有，要对AI保持敬畏，用AI写代码、查漏洞可以，但是涉及生产数据、密钥和权限的高危操作，务必保留人工底线。

过去很多安全问题之所以长期存在，是因为发现和利用它们，需要相当高的专业能力和时间成本。而如今AI正在改变这笔账。它可能帮助防守方更快找到漏洞，也可能帮助攻击者更快寻找薄弱点。当写代码、找漏洞、测试攻击都开始加速，企业还有多少时间留给修补呢？

如果有一天AI能在几分钟内找出一个潜伏多年的严重漏洞，而企业仍然需要几周完成修复，软件安全的攻防规则会变成什么样？

大批政府网站因为一个AI挖出的漏洞集体关门，这次应该是第一次，但看起来，很难是最后一次。

感谢收看，我们下期再见。