安全行业有一个默认行规:发现漏洞后先签保密协议,防守方暗中写好修复代码,各方约定同一时刻公开,用户再排队打补丁。这个节奏维持了很多年。
2026 年 10 月 21 日,它被打碎了。官方补丁还要等几个小时才上线,Cloudflare 的监控里已经出现成批的真实攻击流量。攻击者没有等官方把门锁换好。
更早的 21 个小时前,两个漏洞的细节就泄露到了技术讨论区。这场代号 PHP2Shell 的风暴让全球网站管理员陷入被动。最初的爆料帖很快被删,但数家安全机构迅速核实为真,防守方拿到细节的时间反而比攻击者更晚。
补丁还没发,攻击已经出现
两个漏洞的官方编号是 CVE-2026-109618 与 CVE-2026-109619。PHP 官方按 CVSS v4.0 给出 9.2 分,安全研究机构 watchTowr 更直接打出满分 10.0。在这个评级下,只要机器接入公网,就存在被接管的风险。
泄露发生在协调世界时 10 月 20 日 15 点 20 分。一位名为 petecooper 的用户在社区公开了补丁预告,随后署名为 Calif.IO 的测试工具在网络中扩散,技术人员核实代码能在真实环境里生效。10 月 21 日 07 点 43 分,Cloudflare 通报已在公网捕获早期攻击——距离官方预定的发布时间还有 6 个小时以上;北京时间 10 月 21 日 22 点,补丁才按计划放出。
也就是说,从细节泄露到首轮实战攻击,中间隔了 16 个小时,而防守方手里什么都没有。
传一个文件就能拿到服务器控制权
这个漏洞潜伏在最基础的网页交互里。日常用户上传头像、发附件、提交带文件的表单,用的都是 multipart/form-data 格式,浏览器把文件打包后直接交给后台处理。
问题出在 PHP 解析这种请求的那一小段代码上。攻击者构造一个畸形数据包,触发底层内存破坏,接着就能在目标机器上执行自己的指令。Sansec 的说法很直白:攻击者只需要发一个 POST 请求,不需要登录、不需要任何前置条件。
关键在于触发位置。缺陷在业务代码执行之前就已经发作,所以 WordPress、WooCommerce、Magento 这些框架写没写安全代码都不重要。全球近四成网站跑在 WordPress 上,只要后台开着 PHP 文件上传,整台机器就在射程里。
图:安全机构 Tenable 针对两个高危远程代码执行漏洞发布的官方答疑。来源:Tenable
挂维护公告牌没有用
网站遇到紧急状况,管理员通常会切到维护模式,前台挂一张施工提示牌挡住访问。这次挡不住,因为维护页面本身就是应用跑出来的,恶意数据包在进入应用逻辑之前就已经命中了解析器。只要 PHP 服务进程还在跑,攻击就能打到点上。
想在拿到补丁之前活下来,就得承受业务损失。可选的手段只有几条:在 Nginx 或 Apache 层直接拦掉所有文件上传请求,代价是上传功能整体瘫痪,用户换不了头像、商家发不了商品;把源站防火墙限制到只放行 Cloudflare 的出口 IP,逼流量走 WAF,前提是源站真实 IP 没有泄露——一旦泄露、攻击者直连源站,这层防护等于不存在;实在不放心就停掉 PHP 服务,切静态页面顶着。
php.ini 里也有两处可以收窄的地方:关掉 session.upload_progress.enabled、打开 session.use_strict_mode。PHP 发布经理同时强调,这些设置只是降低风险,它们不能替代升级 PHP 本身。
补丁发布前几个小时,荷兰议会、国家网络安全中心 NCSC 和科技媒体 Tweakers 选择了最重的手段:把站点整体下线。Cloudflare 首席技术官 Dane Knecht 的说法是,WAF 规则只是一条临时绷带。
数百万台旧机器等不到补丁
如果升级就能解决,事情不至于这么难看。安全研究员 Silas Cutler 估算,全球可从公网直接访问的 PHP 实例约有 130 万台,这些正是扫描脚本的首选目标。
麻烦在于其中很大一部分永远拿不到官方修复。PHP 官方的支持策略只覆盖还在维护的分支,这次只给 8.2 及以上版本发补丁。而 5.x、7.x、8.0、8.1 这些分支早已结束支持,偏偏它们还大量跑在企业的业务系统里,容器镜像多年不动,没人敢碰。
上游框架的动作倒是很快:WordPress 推到 7.1.3,Drupal 释出 11.4.10,Laravel 发到 13.36.0,MediaWiki、phpBB、Magento、Symfony 也都在同一天给出修复版本。但解释器不换,上层的修补装不上去。
企业级 Linux 这边更别扭。广泛使用的第三方源 Remi’s RPM repository 宣布当天不提供更新,RHEL 系用户要么转用发行版自带包,要么在生产环境里编译源码。
图:诞生三十年的 PHP 支撑着全网四成网站,其底层解析机制本次曝出重大漏洞。来源:BleepingComputer
分发能力成为新的安全边界
开源安全一直建立在一个理想模式上:各方默契配合,补丁按时发布,用户从容更新。PHP2Shell 把这个平衡撕开了。
Sansec 和荷兰安全机构在补丁发布前就做了预警:源码一公开,攻击者 15 分钟内完成逆向、开始全网扫描。现实比预警更糟——泄露的细节让首轮攻击提前了 6 个小时到达。
另一头,软件世界的分发速度慢得离谱。官方放出代码之后,还得等操作系统打包测试、等企业在半夜安排停机窗口,几天到几周是常态;而那些早就停保的老分支,官方连代码都不给。
防守方真正的差距不在写补丁的能力,在把补丁送到每一台机器上的能力。版本断代和运维惰性这两件事不解决,再快的补丁也只能追上攻击者的第一波。
参考链接:
- PHP 官方安全更新公告
- Sansec 技术分析报告
- Tenable 常见问题答疑
- watchTowR 漏洞研究报告
- Cloudflare 网络威胁监测简报