2026年10月21日14:00(UTC,北京时间当晚22:00),PHP官方一口气放出四个"紧急"版本——8.5.12、8.4.27、8.3.36、8.2.35,修补的是这门语言本身藏了十几年的两个洞:CVE-2026-109618和CVE-2026-109619,攻击者不需要账号、不需要登录,就可能远程在服务器上执行代码。两个漏洞的官方CVSS v4.0评分均为9.2(满分10),安全公司Wiz把它们合称为PHP2Shell,并直接拿它与Heartbleed、Log4Shell相提并论——这正是热榜上"世纪漏洞"这个说法的来处。PHP邮件列表Wiz
出问题的是语言本身,不是某个网站程序——把WordPress升到最新、删干净插件、后台密码设得再强,对这两个CVE一分防护都加不上。真正决定风险的,只有服务器上PHP引擎的版本,以及今天有没有把它升到补丁版。
洞藏在语言自己肚子里
按PHP官方安全通告的说法,两个CVE都源自PHP处理致命错误(尤其是内存耗尽)的方式:请求可能在内部数据只初始化了一半时被中断,随后的清理流程会把这份半成品当成正常数据继续处理。Wiz研究团队明确表示,受影响版本可以一路追溯到2012年发布的PHP 5.4,过去十年里每个PHP版本至少中其中一个洞。官方点名的高危形态是用Apache mod_php内嵌PHP的服务器:GitHub上的PHP安全通告写明,未授权状态下的完整远程代码执行已在默认配置的mod_php环境经HTTP验证成立,应用代码根本不需要参与;PHP-FPM、php-cgi、FrankenPHP、LiteSpeed同样在受影响清单里,只是官方尚未演示出完整的独立利用。WizGitHub安全通告
躺了十几年的代码,被AI拆成了武器
据路透社报道,安全公司Calif说自己在8月1日借助大语言模型发现了这些漏洞,此后一直在研发补丁;Wiz公布的时间线是8月19日用Wiz Atlas、Gemini 4 Argon和GPT-5.6 Sol找到第一个洞,次日就在Drupal上打出了未授权远程代码执行,8月24日上报PHP安全组。这类内存利用链需要把多个缺陷串起来、还要适配每个目标的内存布局,过去被人类审计看过、审过,但一直被认为"理论上危险、实践上打不出来";Wiz说,是AI让单个研究员一周干完了以前顶尖团队几个月的活。复杂度这道护身符,这次正式失效了。参考消息Wiz
而最后48小时像一部事故片。10月20日,两个CVE编号提前在社区流传,还带着一个被错传的"满分10.0"评分;PHP当天19:33(UTC)紧急发出预告,确认修复版本定于次日14:00发布。此后社区记录下的连环意外不断:一家参与披露的机构误将攻击演示视频发上网、迅速删除但截图已在流传,一家容器镜像厂商又赶在约定时间前六小时放出了打好补丁的镜像——"这等于给攻击者免费预读"的争论随之引爆。PHP邮件列表知乎
七成网站陷危机,这个数字有几分成色
先说清口径。网站技术调查机构W3Techs统计,在能识别出服务器端编程语言的全部网站中,PHP占69.3%,这份数据更新于10月22日。Wiz在报告里则直接把它表述为支撑"全球70%的网站",依据是WordPress、Drupal、Joomla、MediaWiki这些面向公众的网站底座几乎都跑在PHP上。更扎手的是实测数:扫描机构Censys发现,约260万台对外主机中约150万台报告运行着尚无补丁的PHP版本——超过一半等不到官方包。W3TechsWiz欧洲时报
反应也是按这个量级来的。10月21日补丁放出前后,欧洲多国及其他地区的政府网站纷纷下线:荷兰NCSC关了自家官网,鹿特丹港、政府门户和多家医院站点一度离线;法国、丹麦、芬兰的公共服务做了预防性下线或维护。维基百科的运营方和互联网档案馆也关闭或短暂中断了部分系统。日本方面,pixiv、Niconico、BOOTH与《碧蓝幻想》等多款游戏进入紧急维护,首相高市早苗深夜在X上发文提醒网站运营者尽快升级。参考消息微博
至于有没有人已经在利用:多家科技企业警告已有黑客在打这两个洞的主意,这也是许多机构宁可"先拔网线"的原因;但截至发稿,尚没有官方确认的大规模入侵案例公布。补丁公开后,网上很快冒出各种"复现脚本",但对照官方补丁逐条验证的技术文章提醒:流传最广的几个公开PoC把根因讲错了,session.upload_progress只是109619已知的一条消费路径,关掉这个开关并不等于安全。参考消息知乎
现在该做什么:只认一个官方答案
PHP官方安全通告的措辞没有留商量余地:“There are no complete mitigations, updating is the only safe choice.”——没有完整的缓解措施,升级是唯一安全的选择。
8.2至8.5支持分支:升到8.2.35、8.3.36、8.4.27或8.5.12,并重启全部PHP进程——FPM主进程、Apache worker和OPcache共享内存都是"进程活着就一直用旧代码",只更新磁盘上的文件等于没打补丁。
8.1及更早(含大量7.4、8.0的"祖传"站点):没有官方二进制补丁。PHP安全组为7.4/8.0/8.1发布了最小源码backport,能自行编译的可打上;用发行版或云服务商打包版本的,先确认厂商进度。
暂时升不了:按官方清单降低暴露——以php_admin_value强制memory_limit=-1且不让应用改回、压缩post_max_size(无上传8M、有上传32M)、关闭session.upload_progress并在8.5上设fatal_error_backtraces=0,改完重启所有worker;不要用RLIMIT_AS/RLIMIT_DATA当内存护栏,那恰好会把执行流推回漏洞路径。这些措施官方自己承认只是买时间,不是修复。
排查痕迹:留意"multipart请求之后出现内存限制报错或连续500响应、异常巨大的PHPSESSID Cookie、worker频繁被拉起";Web服务器错误日志里带"in Unknown on line 0"的致命错误是较可靠的鉴别信号——它意味着请求连一行PHP脚本都没碰到。
还有两个容易漏掉的点:社区源rpms.remirepo.net在补丁发布当天不提供更新包,官方建议改用发行版自带包或从源码编译;而PHP 8.2分支的安全支持将在2026年12月31日结束,8.2.35基本是这条分支最后一次常规修复,今年升完,最好顺手把8.3/8.4的迁移一起排上。PHP官网
对普通访客,这次麻烦在于内存泄露不需要执行代码就能发生:服务器内存里可能装着其他用户的会话令牌、密码和密钥。如果常用的站点在你访问期间恰好未打补丁又遭利用,账号存在理论上的暴露可能——敏感账号的主人宜在确认站点修复后改一次密码、吊销其他设备的登录态。
这件事真正改写的规则
PHP2Shell被反复拿来和Heartbleed类比,不只是因为"七成网站"的覆盖面。一个存在十几年的缺陷,在人类审计者眼里"理论危险、实践无解",被前沿模型在两周内接成了可用的武器链;补丁一旦公开,反向拆补丁的攻击者同样有AI加速,TLP:Black联合创始人Costin Raiu对路透社说,AI正在驱动一场"漏洞利用竞赛"。Wiz也提醒,这类问题在PHP代码库里"根基很深",这次官方补丁修的是病根、消灭了已知变体,但协调披露各方认为后续仍需一轮更彻底的清理。这次互联网靠提前下线抢到了缓冲,下一次未必。参考消息