10月20日下午,HackerNews上冒出一条帖子,说PHP有两个评分10.0的远程代码执行漏洞。帖子很快被删,截图已传开。几小时内,安全公司watchTowr确认漏洞属实,其中一个已经复现。
随后两天,荷兰的电子身份系统DigiD、个人服务平台MijnOverheid停了,国家网络安全中心自己的网站也一度关闭。36氪第一财经
日本那边,pixiv、Niconico、BOOTH一起进入紧急维护,芬兰、丹麦、法国的政务系统也陆续下线。

让这些网站宁可先下线的,是两个编号CVE-2026-109618和CVE-2026-109619的漏洞。
安全社区给它们起了个直白的名字:PHP2Shell——发一个请求,就能在服务器上拿到一个shell。
PHP不在页面上露面,却像楼里的水电管线:你打开水龙头,它才被想起。
WordPress、Drupal、MediaWiki都跑在它上面。按W3Techs统计,能识别服务端技术的网站里,69.3%用PHP,第二名JavaScript只有8.1%。

这次的问题不在插件,也不在应用,而在PHP解释器内核。发现者之一Wiz说:哪怕你的网站上只跑着一个HelloWorld,也照样受影响。36氪
漏洞不是新长出来的。2004年,安全研究员Stefan Esser就发现过PHP内存限制机制里的远程代码执行问题。2020年,有人报告相关缺陷,没被重视。
2024年,PHP做了多年来第一次外部安全审计,核心开发者已经盯上内存耗尽时的状态错乱,却始终证明不了它真能被利用。
修复方案又会破坏兼容、引入新风险,没人敢拍板,PHP基金会后来把这段拖延称为一次“结构性失败”。36氪
转折发生在今年夏天。安全公司Calif的研究员Ryan Austin在GPT-5.6 Sol辅助下,几天内找到一条能打穿WordPress的路径,8月11日报告给PHP团队。
同一天,OpenAI独立报告了相同根因。8月19日,谷歌旗下的Wiz用WizAtlas配合Gemini 4 Argon,先后验证了免登录远程代码执行。
媒体最初的标题是“AI发现了漏洞”。Ryan Austin随后澄清:方向来自人。他顺着Esser的线索找过去,模型把“发现异常”推进到“证明可利用”。
过去要顶尖团队几个月的活,现在一个人加一个模型,一周就能跑完。

10月21日,PHP发布8.5.12、8.4.27、8.3.36、8.2.35四个版本,两个漏洞的CVSS评分都是9.2。补丁公开的那一刻,攻防双方拿到的是同一份代码修改记录。36氪知乎
Cloudflare当天就观测到攻击流量。之后几天,针对漏洞的扫描和尝试涨到数百万次。还没有确认的成功入侵案例。微博
更值得盯住的是另一组数字。补丁发布前一天,安全公司Modat扫了全网:438万个PHP服务、188万台主机,79%的服务跑在已停止维护的分支上。
按主机算,141万台至少挂着一个生命周期结束的版本。其中PHP 7.4最多:87万个服务、31.6万台主机。知乎

PHP官方只维护8.2到8.5,这些机器大多拿不到现成补丁,连“要不要升级”都做不了。
cPanel、Plesk把7.4焊在共享主机上,WordPress为兼容老环境不肯抬高版本要求,Docker镜像也保留着历史tag。
每一方都有道理,合起来就是几百万个服务在没有安全维护的分支上裸奔。
所以“已修复”这三个字,这次只对大约四分之一的机器成立。剩下的四分之三,修复方案写在迁移计划里,不在补丁里。
AI把“早就知道但证明不了”变成了“马上能用”,这个能力不会只站在防守方这边。下一次,从漏洞公开到攻击落地的那段窗口,只会更短。
对还在运维网站的人来说,选择很朴素:能升到8.2以上的直接升;升不动的,先把memory_limit设为-1、关掉session.upload_progress,再安排迁移。