0%

PHP爆雷引发全球紧急「拔网线」,别指望 AI 拯救互联网

爱范儿软件张子豪Thu, 22 Oct 2026 05:58:07 +0000

昨天晚上,欧洲多国的政府网站在同一时间陆续下线。芬兰交通与通信局把部分在线服务关了;荷兰的电子身份系统 DigiD、荷兰政府的个人服务平台 MijnOverheid、政务门户全部暂停服务,甚至连荷兰国家网络安全中心自己的网站都一度关闭……

在日本,多个知名互联网社区平台,日本最大的插画/漫画/小说投稿社区 pixiv、日本老牌弹幕视频网站 Niconico、pixiv 旗下的创作者电商平台 BOOTH 等平台都宣布了紧急维护。

甚至还有寿司郎,也在官方平台宣布因系统维护升级,今天小程序暂停运行。

让这么多机构如临大敌的,是两个刚刚公开编号的漏洞:CVE-2026-109618 和 CVE-2026-109619。

安全社区给它们起了个直白的绰号 PHP2Shell。意思是攻击者往你的网站发一个请求,就能在你的服务器上拿到一个 shell(命令行入口),也就是为所欲为的控制权。

10 月 21 日,PHP 官方发布紧急更新 8.5.12、8.4.27、8.3.36 和 8.2.35,同时确认:两个漏洞的严重程度均为 CVSS 9.2 分(满分 10),不需要账号密码就能远程利用。

且在 Apache,即世界上用得最久的开源 Web 服务器软件,PHP 最常见的部署方式下,攻击在网站自己的代码开始运行之前就已经触发。

按照原计划,漏洞细节应该在 10 月 22 日协调披露。但 10 月 20 日下午,Hacker News 上出现了一条帖子,宣称 PHP 存在两个评分 10.0 的远程代码执行漏洞。

尽管帖子很快被删,但截图已经传开。有安全公司 watchTowr 几小时内就出面确认,这份泄露属实,漏洞是真的,而且他们已经复现了其中一个。

PHP 安全团队当晚紧急发布预警,把发版时间提前了 24 小时,并罕见地加了一句:「如果漏洞细节被公开,或者出现在野利用( in-the-wild exploitation)的证据,我们保留进一步提前发布的权利。」

混乱还在继续。当晚,参与发现漏洞的安全公司 Calif 误发了一段演示视频,展示他们的攻击代码在多个真实目标上跑通,视频副本随即在社交平台疯传。

第二天早上,提前拿到补丁的发行商 Chainguard 又单方面打破保密协议,抢先发布了含修复的镜像。补丁本身就是一份「漏洞地图」,攻击者只要对比新旧两个版本的二进制文件,看改了哪段代码,就能反推出漏洞的位置和原理。

PHP 基金会事后的复盘里,对这个漏洞被公开的方式感到非常愤怒。

发现这种级别的漏洞后,行规是研究者、厂商、发行商约好一个统一时间,之前谁都不许公开细节。目的是让补丁和漏洞信息同时到达公众:用户一知道漏洞就能立刻有补丁可装,防守方的时间窗口最大。

它是互联网的「后厨」。我们在前台登录、搜索、下单、评论,PHP 在服务器里处理请求、读写数据库、把结果送回浏览器。WordPress、Drupal、Joomla、Magento、维基百科背后的 MediaWiki——全部跑在 PHP 上。

根据 W3Techs 的数据,在可以识别服务端技术的网站中,69.3% 使用 PHP;第二名 JavaScript 只有 8.1%。

我们在白帽汇做的国产网络空间测绘搜索引擎 FOFA 里也检索了含有 WordPress 的全网记录,能看到为什么率先响应的是欧美、日本等地区,因为匹配到 WordPress 指纹规则的资产条目数,这些地区最多。

过去大多数「PHP 网站被黑」的新闻,问题出在某个插件或某个应用身上。这次的漏洞位于 PHP 解释器内核,和上层应用无关。用发现者之一 Wiz 的话说:「哪怕你的网站上只跑着一个 Hello World,也照样受影响。」

两个漏洞的技术原理都不算新鲜,厉害的是它们被证明「真的能用」。

CVE-2026-109618:PHP 处理「内存耗尽」的方式是粗暴地急刹车(longjmp)。

如果刹车恰好踩在某个微妙时刻,内部数据只初始化了一半,后续的清理流程却会把这堆半成品当作正常数据处理,而攻击者可以借此让服务器执行自己的代码。

官方已验证:默认配置下,通过构造特制的 multipart 请求把内存「刚刚好」耗尽,就能在应用代码运行前完成攻击。

CVE-2026-109619:一个请求处理完、内存被释放后,某些全局状态没有清干净。

同一个工作进程处理下一个请求时,可能又去使用这些已经失效的内存,这种经典的「释放后使用」,可以被精心堆叠成代码执行,还能泄露内存里其他用户的密码、令牌和 API 密钥。

值得注意的是,已证实的利用路径之一经过的 session.upload_progress(会话上传进度)功能默认开启,应用甚至不需要调用 session_start()。

修复版本目前只覆盖 PHP 8.2 到 8.5 四个分支,而 W3Techs 的同日数据显示,全部 PHP 网站里仍有 27.0% 跑在 PHP 7.x、7.7% 跑在 PHP 5.x,这些早已停止维护的版本拿不到官方补丁。

计算机取证专家 Hal Pomeranz 提到「有太多嵌入式安装永远不会被打补丁,太多被遗忘的、无人维护的应用。这一次,长尾会很长。」

漏洞一公开,OpenAI 发文,将这次事件列入自己的 AI 安全成果:Calif 研究人员使用 GPT-5.6 Sol 找到了关键缺陷,多个团队合作完成验证与应对。

熟悉 AI 公司宣传套路的我们,大概会下意识多问一句:真是模型挖出了漏洞,还是又给人类的研究成果贴上了 AI 标签?

披露当天,Calif 在 X 上公开「正名」,称 Ryan Austin 才是第一个发现并做出可用攻击代码的人,证据是他 8 月 5 日就发出了一条含发现哈希的推文。