【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漏洞 #网络安全 #开源软件

评论(0)