10 月 29 日,建站系统米拓发公告:凡服务器运维由公司承担的米拓网站,PHP2Shell 漏洞已全部修复,“用户无需再次处理”。 而在它三天前,美国 CISA 才刚把这个漏洞收进"已知被利用目录"。扫描机构 Censys 则早在 10 月 21 日补丁发布当天,数到了约 157 万台还裸奔的联网 PHP 主机。知乎知乎
一边是"我替你修完了",一边是一百多万台没人认领。中间那段距离,就是这九天里 PHP 开发圈真正在发生的事:补丁的战争早就从"有没有洞"变成了"你的补丁是谁在打、打到哪一层了"。
一行修复代码,要走五层路才轮到你
PHP2Shell 对应 CVE-2026-109618 和 CVE-2026-109619,两个都在 PHP 解释器内核里,不在你的代码里。你的 Laravel、你的 ThinkPHP 一行没写错,也照样暴露在射程内。10 月 21 日 UTC 14 点,PHP 官方同时放出版本 8.2.35、8.3.36、8.4.27、8.5.12,CNVD 给这次漏洞登记了 41674、41675 两个编号。知乎

但"官方发了"和"你的服务器修好了"之间隔着五层接力:官方 commit 进 php-src,发行版和包仓库出 apt/yum 更新,容器基础镜像重建,宝塔这类面板做适配推送,最后是建站商、空间商替你点下去。 复盘这五层的都有人盯,Exakat 那篇《From Commit to Production》被技术圈转疯了;问题也一样清楚:每一层都有自己的节奏、自己的人、自己的延迟。官方口径把话说得很直——8.1 及更早的版本线已经停止官方维护,7.4、8.0、8.1 这次只有"最小化源码回移植",要不要、用不用,自己担责。知乎知乎
更要命的是时间差。Amazon 威胁情报后来披露,攻击者的利用尝试比补丁还早了整整 4 天。 PoC 和利用代码已经公开传播,360 的漏洞挖掘智能体完成了复现验证。 排查实战文章里,Apache+mod_php、Nginx+php-fpm、FrankenPHP 三种主流部署架构都被复现了一遍。知乎知乎知乎

CISA 的警报 10 月 21 日就发了,但进入"已知被利用"KEV 目录是 10 月 26 日——很多机构的安全流程是"等权威目录认定再动手",这五天的目录时差,就是它们排在攻击者后面的真实距离。知乎
先给自己归个类:三种人,三条路

这九天里知乎上最典型的提问不是"漏洞原理是什么",而是"我完全不懂网络安全,翻了一篇又一篇,越看越焦虑"。 还有一个回答把话说得更白:很多业余爱好者根本不知道自己的服务是 PHP 写的。 焦虑的原因不是懒,是没人告诉他该找谁。知乎知乎
第一类:有人替你修的。 用了米拓这类带服务器运维服务、源码托管服务的建站套餐,公告说 10 月 29 日已修完,你收到整改通知回一句"已修复"即可。云厂商 PaaS 用户同理,比如 Azure App Service 上的 PHP 运行环境由平台侧滚动更新。但注意米拓公告里的责任边界写得非常细:“我司代售的西部数码及其它虚拟主机平台的虚拟主机不在此列”。 同一份套餐里,"代维"和"不管"是一条线划开的。先翻你当年签的服务条款,别等公告替你归类。知乎
第二类:你自己点的。 宝塔用户在第二类里占了大头,这次它也是国内旧版本修复的主力:10 月 24 日官宣已为 PHP 5、7、8 系列共计 14 个版本分支提供修复包,PHP 7、8 系列的修复版本全部上线宝塔面板、支持直接更新。 官方早已停更的 8.0、8.1 分支,被它另打了 8.0.27、8.1.35 这类适配版本。 PHP 5.4、5.5、5.6 三个最老的分支则是脚本包形式,需要手动执行命令更新并做兼容性验证。用自建面板、软件源自动更新(remi、deb.sury 这类)的站长也在这类,翻公告看自己那条线到没到。知乎知乎
第三类:没人替你修的。 自己编译的 PHP、自己维护的 Docker 镜像、多年没动的内部系统、学校和中小企业的"交付即失联"老站。W3Techs 的数据显示,全球 34.8% 的 PHP 网站运行在官方不再更新的分支上——这次它们没有任何官方修复路径,补丁供应链的每一层都可能在这里断掉。 今天微博上还有站长吵"中国服务器版本都是用过期不维护的开源版本自研的,根本没有补丁可用",这个说法真假另说,但"不确定有没有人替你修"的站点按"仍受影响"处理,是安全行业的通行口径。知乎微博
"已帮你修好"不等于完事:核验只有三步
日本那边给了一个现成的反面教材:安全机构 Assured 追踪到,截至 10 月 26 日,因这个漏洞停摆的日本网站超过一千个,约四成仍未恢复。 修复从来不是发个公告就结束的。微博

不管你是不是"被代修"的,三步核验都别省:
核对版本号。 面板里看 PHP 版本,或上机执行 `php -v`:8.5 线要到 8.5.12、8.4 线要到 8.4.27、8.3 线 8.3.36、8.2 线 8.2.35,宝塔旧分支对应 8.1.35、8.0.27、7.4.34 这类适配号。米拓公告还给了一个容易忽略的点:升到官方四个修复版本里任何一个就行,不必和原分支一一对应。知乎
重启和清缓存。 升级完成只代表磁盘上的文件换了:更新后不重启 php-fpm,内存里可能还是旧核心;开启 OPcache 的实例不做缓存失效,页面可能还挂着旧字节码。 这一步在开发者圈子里被反复敲黑板——“版本明明升了,漏洞为什么还在”,多数答案就卡在这里。知乎
查有没有"访客"。 米拓公告里有句原话值得印在所有站长的自查清单上:"补丁更新仅能阻断新的攻击,无法清除已存在的后门。"被扫描利用的这些天里,你的服务器有没有异常进程、可疑命令执行记录,这个动作不可省略。升级完成不等于入侵清零,两件事要分开做。
5.4 的修复包是续命,不是长期饭票
宝塔这次把适配做到 PHP 5.4,评论区确实有人喊"良心"。但公告里宝塔自己先把丑话说完了:“修复包主要用于修复本次已知安全问题,并不意味着这些旧版本重新获得了 PHP 官方的持续安全维护”。知乎

这就是老分支的真实处境:官方不会再有下一次,面板适配是拿人力替你扛一次。W3Techs 那 34.8% 的 EOL 分支存量,这次被宝塔们按住了,下一次漏洞来了,按不住的概率只会更高。方向其实早就写好了:PHP 8.6 定档 11 月 19 日发布,官方维护的窗口就这么几个分支;老项目迁移和测试的成本,比被第二个"PHP2Shell"堵在屋里谈判要划算——只是这笔账,得在没出事的时候有人去算。
接下来盯这四个信号
宝塔 5 系列的后续公告。 目前 5.4/5.5/5.6 还是脚本手动更新,面板正式推送与否、测试反馈了哪些兼容问题,是判断"还能不能续用"的直接信号。
你服务商的代维边界。 米拓式的公告接下来会越来越多。看公告别只看"已修复"三个字,看它划的那条线:"运维由我司承担的"几个字之外,就是你的责任区。
Censys 的下一轮计数。 157 万台是 10 月 21 日的快照,补丁发布九天后这个数怎么变,比任何单篇"影响全球七成网站"的标题都更能说明真实的修复率。
KEV 期限之后的官方动作。 CISA 的"限期修复"约束的是美国联邦机构,但它会持续影响保险、云厂商和审计口径——如果你的业务做出海,这条比漏洞本身更早找上门。
唱衰 PHP 是程序员的保留节目,但你的网站不是段子,是资产。被"代修"的,去核一句"我算不算运维由你承担的那类";自己修的,三步核验走完再关掉告警群;没人管的,这个九天长假里最该做的决定,是给它认领一个具体的责任人——补丁供应链上,最脆弱的一层从来不是代码,是"以为有人会管"。