【9.2 分的 PHP 漏洞,是 AI 挖出来的】

躺了 20 年,AI 几天挖穿

看到新闻那天,我第一件事是打开终端敲了 php -v。

手上有三个跑了七八年的老服务,全是 PHP。看到「多国政府连夜关站」这几个字,后背是真的凉了一下。

【01 / 案发现场:那一晚,政府网站是自己关的】

10 月 21 日晚,社交媒体上出现一波很诡异的网站关闭潮。

芬兰政府把所有对外网络服务关掉了。荷兰国家网络安全中心连自己的官网都撤了,鹿特丹港、荷兰足协、五大政党、多家医院跟着下线。法国内政部让各省政府网站临时关闭,德国联邦 IT 服务商关了多个站点,比利时外交部、维基媒体基金会、任天堂也相继停掉部分服务。

「关键点来了:这些站一个都没被黑。全是主动关的。」

罪魁祸首是 PHP 的两个漏洞,合称 PHP2Shell。攻击者不需要登录,就有可能远程控制整台服务器。PHP 官方给这两个漏洞的评分都是 「9.2」(满分 10),安全公司 watchTowr 直接打了满分。

PHP 官方的说法很干脆:所有处理网页请求的 PHP 都受影响。Cloudflare 补了一刀——受影响的版本一路追溯到十多年前的 「PHP 5.4」。PHP 基金会的 Volker Dusch 拿它跟 2014 年的「心脏出血」比,说这是十多年来最严重的 PHP 安全问题。

美国国家安全局、英国国家网络安全中心、欧盟网络安全机构 CERT-EU 的建议几乎一致:来不及打补丁的系统,先下线。

于是就有了开头那一幕。

这两个漏洞出在 PHP 最底层的内存管理上,跟你网站自己的业务代码写得好不好,一点关系都没有。

【02 / 真正扎心的地方:它不新,它躺了二十年】

我一开始以为又是个刚被发现的新洞。翻完 Calif 的技术文章才发现,完全不是。

  • 「2004 年」:安全研究员 Stefan Esser 就发现过 PHP 内存耗尽时的同类问题
  • 「2020 年」:有人提交过相关 bug 报告,几乎没人理
  • 「2024 年」:一次第三方资助的 PHP 安全审计又碰到相关问题,但没能证明它真的可被利用,最后没修

十几年里,不止一次有人摸到了边,就是没人把它做成真正的攻击。

原因很朴素:太费劲。独立作者 Nick Rogers 在分析里说,把这类漏洞做成能用的攻击,需要「数周枯燥的手工调试」,过去没人愿意为它付这个成本。

他给这种状态起了个名字,我看到的时候愣了两秒:

「security by exhaustion——靠攻击者累到放弃来保证安全。」

互联网底层大量老代码,都处在这种拧巴状态里。理论上有洞,真打起来各路神仙都嫌麻烦,就这么一直放着。这条规矩从没写进教科书,却一直在默默兜底。

现在,它塌了。

【03 / AI 审计流水线:三天出结果,还能把方法打包复用】

改变这件事的,是今年 6 月 OpenAI 启动的「Patch the Planet」计划:出钱、出模型,请安全公司去审计全世界都在依赖的开源软件。

Calif 是参与者之一,它把目标定在了 PHP。

时间线我捋了一遍,节奏快到离谱:

  • 「8 月 1 日」:研究员 Ryan Austin 带着 AI 开始审计,AI 在这里既是审计搭档也是 agent,负责梳理 PHP 内核代码、追踪执行路径
  • 「几天后」:第一个漏洞的关键缺陷,被 agent 在内核代码里揪了出来
  • 「8 月 11 日」:Calif 把漏洞报告给 PHP 官方

真正让我坐直的是下一步。团队让 AI 把第一个漏洞的「模式」总结成一份「可复用的技能文件」,专门用来搜同一类缺陷。第二个漏洞,就是靠这份文件找到的。

「找到一个洞之后,把找它的方法打包,再去找下一个。」 这才是质变。

顺带一提,按 OpenAI 官方博文的说法,Calif 这次没用 Daybreak 那类专用攻防工具,也没上前沿旗舰模型,用的是 GPT-5.6 Sol 这种更便宜的。

几乎同一时间,Wiz 从另一个方向撞上了同一组漏洞。8 月 19 日独立发现第一个漏洞,第二天在 Drupal 上验证远程代码执行,第三天在 WordPress 上也跑通了。他们用的是 Wiz Atlas、Gemini 4 Argon 和 GPT-5.6 Sol。

Wiz 的结论我抄下来了:「一名研究员一周完成了过去需要世界顶尖团队数月的工作。」

两家公司、三个模型、三周之内,从两个方向撞上同一组漏洞。这已经不是巧合了。

【04 / 混乱的 48 小时,和我连夜改的三件事】

漏洞原本在保密期。按行业惯例,软件方先备好补丁,再和发现者一起公开。

但 10 月 20 日,有人在 Hacker News 和地下论坛 BreachForums 上放了消息,watchTowr 当天确认漏洞是真的。当晚 PHP 官方紧急宣布:补丁提前一天,10 月 21 日 14:00(UTC)发布。

补丁出来之前,攻击就已经开始了。Cloudflare 的 CTO Dane Knecht 在补丁发布前近六小时就在 X 上说,看到了早期攻击。

这就是最坑的地方——「防守方修补系统的时间窗口,被压缩到了以小时计。」

我当晚做了三件事,直接照抄就行:

  • 「先把版本号打出来」:php -v,低于维护线的老版本优先处理,别赌
  • 「补丁来不及上,就先摘流量」:把对外入口切到维护页或 WAF 后面,别硬扛
  • 「翻一遍依赖链」:PHP 往往藏在框架、CMS 和容器镜像底层,你看到的版本不一定是真正跑的版本

放长一点看,这条引线早就点着了。2024 年 11 月 Google 的 Big Sleep 在 SQLite 里找到此前未知的可利用漏洞;

今年 4 月 Anthropic 称 Claude Mythos 预览版在测试中找到数千个零日,包括 OpenBSD 里一个存在了 「27 年」的漏洞,因为能力太强,这个模型没有公开;

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

从「AI 能找到漏洞」,到「AI 找到的漏洞让模型不敢公开」,再到「AI 找到的漏洞让政府关站」,只用了两年。

OpenAI 自己在博文里也挽尊了一句:帮助发现漏洞的同一种能力,也能帮攻击者快速开发攻击工具。

这不是假设了。

💡 以前很多漏洞之所以安全,只是因为攻击它们太累。现在这个理由,没了。

回去查版本吧。

#AI安全 #PHP漏洞 #网络安全 #开源软件

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。