AI 把潜伏二十年的 PHP 漏洞挖了出来,NSA 说修不了就先下线
30 秒看懂发生了什么
10 月 21 日,代号 PHP2Shell 的两个 9.2 分漏洞(CVE-2026-109618 / CVE-2026-109619)曝光,修复版本当天上线。这组漏洞潜伏超过十年,受影响版本可一路追溯到 2014 年的 PHP 5.4——而 PHP 支撑着全球约 70% 的网站。
警报级别高得罕见:美国 NSA 与 CISA 联合建议“无法及时修复就先下线”;荷兰 NCSC 直接关停了自家站点;日本首相官邸公开发文呼吁业界赶紧升级;欧盟 CERT-EU、英国 NCSC、澳大利亚 ACSC 全都要求优先清点 PHP 资产。Cloudflare 已观察到针对漏洞的早期攻击,派拓网络 Unit 42 监测到全球超过 2260 万个暴露节点。
最关键的问题:它是怎么被发现的
两条完全独立的路径,撞上了同一个目标:
- Calif 的研究员用 GPT-5.6 Sol 审计 PHP 源码,7 月 30 日开始,8 月 1 日挖出完整攻击路径;
- Google Wiz 用 Wiz Atlas + Gemini 4 Argon + GPT-5.6 Sol 的组合独立复现。
两个团队、两套工具链,指向同一处缺陷——这基本排除了大模型“幻觉误报”的可能,是 AI 代码审计迄今最硬的一次实证。
技术细节并不玄乎:PHP 的内存管理在哈希表扩容时“先计数、后分配”,请求恰好在特定时机触发 memory_limit 时,已初始化的内部数据会被遗留并被当作有效数据继续使用,造成内存损坏。一个约 8MiB 的请求能打穿 128MiB 的额度限制,在 Apache + mod_php 默认配置下,攻击者可在应用代码执行前夺取服务器控制权——上层业务逻辑写得再干净也没用,底座是漏的。PHP 基金会安全工程师 Volker Dusch 的原话:这是项目十余年来最严峻的安全考验。
比漏洞更有戏的,是修复过程
这是一场持续两个月的秘密协调,然后崩了:
- 10 月 20 日,Hacker News 上补丁细节泄露,PoC 视频被误发;
- Chainguard 抢先发布了含修复的容器镜像;
- 补丁被迫提前一天公开。
更难受的是补丁本身——涉及近 200 个文件、1 万 + 行改动,PHP 基金会自己承认这是一次“结构性失败”:底层数据结构的历史债务,不是打个补丁能了事的。截至发稿,约 150 万台暴露主机仍未打补丁。
攻防悖论:AI 找到的洞,AI 也能利用
这是全文最值得琢磨的部分。补丁一公开,diff 摆在那里,加上一个模型,就能生成可直接使用的 exploit。Calif CEO 的话很直白:“推特上随便一个人都能贴出攻击脚本。”Wiz 的判断更冷静:“在 AI 之前,利用这两个漏洞太难了,现在这个障碍没了。”
过去十年它们潜伏着,不是没人扫过,是利用门槛太高——而 AI 把门槛同时给了双方:防御者拿到了十年没找到的洞,攻击者拿到了过去需要资深研究员才写得出的利用链。窗口期是 AI 给防御者抢出来的,也是 AI 给攻击者打开的。
OpenAI 显然清楚这一点,宣布投入 10 亿美元补贴防御方,Codex 已覆盖 cURL、Go、Python 等近 19 个关键开源项目,安全公司 Trail of Bits 用它已识别数百个问题、合并数十个补丁。
站长现在该做什么
- 升级:8.5.12 / 8.4.27 / 8.3.36 / 8.2.35,四个分支都出了补丁;
- 别指望建站工具:WordPress 的自动更新不修 PHP 解释器层,服务器上的 PHP 版本要自己看;
- 暂时升不了的:清点暴露面,参照 NSA 的口径——修不了就先下线,别裸奔。
写在最后
昨天我们刚聊完 Gemini 4 Argon 接下“几周几个月”的工程活,今天就看到了另一面:AI 第一次在真实世界里,挖出了人类十年没挖动的漏洞,也第一次让“写出攻击脚本”变得人人可及。
最深的洞是人挖不动的,最险的窗口是 AI 开的。攻防的天平没有因为 AI 倾向任何一边——它只是把两边都推快了,而快的那个会赢。