今天下午,一条《PHP脚本语言被曝严重安全漏洞》的新华社深度解读被政务、媒体账号批量转发,里面一句话让无数挂着 PHP 站的人心里一紧:“利用该漏洞发起的黑客攻击激增至数百万起”。新华社
而同一天的中文社区,是三个完全对不上的版本:B站有人剪视频说"无数网站沦陷?全都是假的";虚拟主机圈的评论在刷"老环境跑了十年也没事发生";知乎热榜上 CISA、CNVD、360 的预警一条接一条。攻击数、战果、伤亡,三个数字被三种人各自拿去讲各自的故事。
我把 PHP 官方公告、360 的复现记录、CISA/CNVD 的收录、Cloudflare 的观察数据和日本方面的停服统计对了一整周。这事其实可以拆成三本账——三本账都对上了,你才知道自己该不该急。
第一本账:攻击次数——数百万是真,但那是"敲门"的账
先对齐基本事实:10 月 21 日晚,PHP 官方一口气发布 8.5.12、8.4.27、8.3.36、8.2.35 四个安全版本,修补 CVE-2026-109618 和 CVE-2026-109619——两个藏在解释器底层、无需登录就能远程执行代码的漏洞,CVSS v4.0 评分 9.2,社区统称 PHP2Shell。知乎
漏洞细节和 PoC 在补丁公开前后大规模扩散。安全公司 Sansec 当时预测"补丁公开后 15 分钟内就会出现大规模扫描"。 实际曲线比这更夸张:有在 Cloudflare 面板上盯数据的人记录,针对该漏洞的攻击尝试从数千次蹿到数百万次——也就是新华社今天报道里那个量级的来源。知乎知乎
但要给这个数定个性:它记的是"尝试",不是"得手"。公开的利用脚本是无差别扫描,程序见着开 80/443、响应里带着 PHP 指纹的端口就撞。你的站点在攻击日志里出现过,和"你被针对性攻击"是两回事;"数百万次尝试"和"数百万站沦陷"更是隔着一个数量级的误读。

第二本账:exploit 成色——"人人可打"是吓唬你,"打不进去"是害你
这本账必须掰开说,因为两边的论调都有硬伤。
先说要承认的:这不是纸老虎。360 漏洞研究院 10 月 23 日公告,已在官方 php:8.4.26-apache 镜像、默认配置下复现完整链路:未认证构造 chunked 请求耗尽内存 → 同一 worker 的下一个请求复用残留会话状态 → 800KB 堆越界读泄露基址 → 绕过 ASLR → 伪造 HashTable 以 www-data 权限执行命令。知乎
监管和厂商侧也在持续加码:CNVD 在 10 月 21 日就收录了这个洞,备注技术细节与 PoC 已广泛传播。 CISA 10 月 27 日把两个 CVE 双双列入 KEV"已知被利用漏洞目录",给美国联邦机构划了修复期限。NSA 甚至建议:升不了的级,先把系统下线。知乎知乎哔哩哔哩
再说不用慌的:Rapid7 的实测报告态度很诚实——目前公开的每个 PoC 都只对特定"操作系统 + PHP 版本 + Web 服务器"组合成立,没有通用的。 截至补丁刚发布时,观察到的都是攻击尝试,不是成规模的沦陷。把 9.2 分解读成"互联网完蛋",和解读成"反正利用不了",读反的是同一本书。知乎
所以这本账的正确用法是给环境定风险档位:
mod_php + 8.2–8.5 旧小版本 + 默认配置:正中 360 复现组合,顶格风险,别赌运气。官方也确认 FPM 环境下经由 session 路径的利用已被验证可以 RCE。知乎
已升到修复版本并确认生效:那"数百万次敲门"敲的基本是已经锁上的门。
8.1 及更早 / EOL:见第三本账,这是最尴尬的一档。

第三本账:“沦陷"数——你看到的"网站下线”,大多是自己拔的网线
本周刷屏的"关停潮",主因不是被打穿,而是主动停服:
日本安全机构 Assured 的社媒统计显示,截至 10 月 26 日,日本因这次事件暂停的网站/服务累计达 1090 起,其中四成还没恢复。 停下来的原因主要是两类:停掉服务排队升级,以及老环境升不动不敢升。pixiv、Niconico 连夜停服维护,《最终幻想14》因为 PHP 宕机直接给全服玩家发了一天游戏时长补偿。芬兰、荷兰、法国、德国等多国政府网站则是"预防性下线"。 NSA 建议"先下线再处理"也是同一个逻辑:与其被打了再止损,不如先断电。哔哩哔哩哔哩哔哩
但有一个群体的风险是真的下不来线:Modat 在补丁发布前一天(10 月 20 日)做了一次全网扫描,结果是全网 438 万个 PHP 服务、188 万台独立主机,79% 跑在官方已停止维护的分支上;按主机算,141 万台(75%)至少挂着一个 EOL 版本。 而官方只维护 8.2 到 8.5。Censys 数到的未打补丁联网 PHP 主机约 157 万台。 最大的单一群体是 PHP 7.4:87 万个服务、31.6 万台主机,比任何一个受支持分支都多。cPanel、Plesk 早年把 7.4 焊死在共享主机上,WordPress 至今不肯抬高 PHP 最低版本要求,Docker 官方镜像留着全部历史 tag——每一方都有道理,合起来就是这批"补丁救不了的人"。知乎知乎

所以,社区里"大量虚拟主机从不更新 PHP 仍然无事发生"的 [doge] 评论,是典型的幸存者偏差:它们确实长期没被真正打穿,原因是组合绑定的通用利用一直没出现——而不是因为安全。这次,通用利用没出现,但针对默认组合的复现出现了。性质变了。
按人群说怎么办:你该动,还是该看
已升级并验证过版本生效的:别再回到"白升"话题自折磨,转入监测模式。继续盯三个信号:① Cloudflare 这类面板的攻击量曲线是否过峰(新华社下场后通常还会带一波新扫描潮);② 是否出现跨组合的通用 PoC(一旦出现,全网风险档位重算);③ KEV 目录是否追加新条目。
跑 mod_php / 默认 Docker 镜像的:优先把这台从"以后再说"名单里捞出来,这是复现组合。官方临时缓解(管理员层强制 memory_limit=-1、关掉 session.upload_progress、8.5 关 fatal_error_backtraces)只覆盖已确认路径,是争取时间,不是关门。知乎
7.4 及更老 / EOL 的:这次没有你的补丁。两条路:等厂商——Akamai 已给自家应用防护上线专项防护规则。 国产 WAF(雷池、SafeLine)教程这两天铺满 B站,主机商和面板的补丁节奏是关键变量;或者迁移——但别把这两件事混成一锅粥,防护是止血,迁移才是结题。哔哩哔哩
个人博客 / 学生课设:先量暴露面。端口没对公网开、或全程在 CDN+已修面板后面的,风险档位可以下调;真正要处理的是"公网可达 + 默认配置 + 老版本"这个交集。

一周下来,值得记住的不是那个 9.2
PHP2Shell 更像一场压力测试:漏洞长在 PHP 上世纪继承下来的 longjmp 收尾机制里,官方这次的修复干脆把这条路径整个做了"架构手术"。 而比漏洞大得多的洞,是那 75% 连补丁都没有的主机。新华社的"数百万起攻击"会过去,KEV 和 CNVD 的通告也会沉下去,三本账里,只有第一本会随着时间自动归零——后两本的账单,按你服务器的档位,分别寄给"验证"、“防护"和"迁移”。知乎
先分清楚自己在哪本账里,再决定今晚要不要睡。