互联网正经历一场持续48小时的紧急事件。
昨晚,欧洲多个国家的政府网站几乎同时陷入瘫痪。
芬兰交通与通信局暂停了部分在线服务;荷兰的电子身份系统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小时,并罕见地补充了一句:“如果漏洞细节被公开,或者出现野外利用的证据,我们保留进一步提前发布的权利。”
混乱仍在继续。当晚,参与发现漏洞的安全公司Calif误发了一段演示视频,展示他们的攻击代码在多个真实目标上成功运行,视频副本随即在社交平台疯传。
第二天早上,提前拿到补丁的发行商Chainguard又单方面打破了保密协议,抢先发布了包含修复的镜像。补丁本身就像一张“漏洞地图”,攻击者只需对比新旧两个版本的二进制文件,查看改动了哪些代码,就能反推出漏洞的位置和原理。
PHP基金会在事后复盘时,对漏洞被公开的方式表达了强烈不满。
按照行业惯例,发现这种级别的漏洞后,研究者、厂商和发行商会约定一个统一时间,在此之前谁也不允许公开细节。这样做的目的是让补丁和漏洞信息同时到达公众手中:用户一得知漏洞,就能立即安装补丁,从而最大化防守方的时间窗口。
出问题的是互联网的地基。
要理解这次事件为何如此可怕,首先需要明白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提到:“有太多嵌入式安装永远不会被打补丁,太多被遗忘的、无人维护的应用。这一次,长尾会很长。”
AI找到了它?一周,和数月。
漏洞一公开,OpenAI便发表声明,将这次事件列入自己的AI安全成果:Calif研究人员使用GPT-5.6 Sol找到了关键缺陷,多个团队合作完成了验证与应对。
熟悉AI公司宣传套路的我们,大概会下意识多问一句:真是模型挖出了漏洞,还是又给人类的研究成果贴上了AI标签?
披露当天,Calif在X上公开“正名”,称Ryan Austin才是第一个发现并做出可用攻击代码的人,证据是他于8月5日就发布了一条包含发现哈希的推文。
在漏洞第一发现者自己撰写的官方技术复盘中,也是本次事件最重要的一手材料之一,Ryan在文章里强调,初次发现没有依赖特殊的工具框架,也没有使用公众拿不到的模型。他对目标历史的了解,决定了往哪里追查;简单的提示词还做不到让模型找出所有漏洞。
他笔下的发现链一路追溯到2004年Stefan Esser找到的第一个PHP内存限制漏洞、2020年一份被忽视的bug报告,以及2024年那场没能证明可利用性的审计。
言下之意是,AI压缩的只是验证的时间,而方向感仍然来自人。
PHP基金会的复盘也确认,OpenAI团队在8月11日独立报告了相同的根本原因,之后又补充了攻击路径。他们在文章里详细记录了漏洞是如何被发现和修复的,以及披露了失控的完整记录。
2024年,PHP接受了多年来首次外部安全审计。一名核心开发者在修复审计发现的问题时,注意到了内存耗尽处理的隐患。
但当时没人能证明它真的可以被利用。几种修复方案又各有代价,可能破坏兼容性,可能引入新的拒绝服务风险。团队迟迟无法做出决定,问题被搁置了。PHP基金会在事后称之为一次“结构性失败”。
2026年夏天,三个团队带着AI工具,几乎同时发现了这个问题:
8月1日,安全公司Calif的研究员Ryan Austin在OpenAI的GPT-5.6 Sol帮助下发现了首个漏洞,8月11日报告给PHP团队;OpenAI同日独立报告了同一根本原因。
8月19日,谷歌旗下的Wiz用自己的平台Wiz Atlas,配合Gemini 4 Argon和GPT-5.6 Sol独立发现了漏洞;随后两天内,先后在Drupal和WordPress的官方镜像上验证了无需登录的远程代码执行。
“这类内存管理风险很早就有人注意过,但长期被认为太难以至于无法利用。”Calif的CEO Thai Duong对《华尔街日报》说。
AI将理论缺陷转化为可用的攻击代码,需要串联多个环节,并针对每个目标的内存布局反复调试。过去,这是世界级团队数月的任务;现在,一个研究员加上前沿模型,一周就能完成。
Wiz联合创始人Ami Luttwak称这是“迄今由AI协助发现的最严重漏洞”,并将其与那些同样深埋于互联网地基、潜伏多年才爆发的传奇漏洞——如Heartbleed、Log4Shell——并列。
一场没有终点的修补。
漏洞确认后的两个月里,PHP维护者主导了修复工作,Calif、Wiz、OpenAI参与了验证。Google Cloud、Cloudflare、AWS、微软、Automattic、Fastly、Akamai、Vercel等厂商提前准备了缓解方案,Linux发行版和长期支持厂商也提前拿到了补丁。
Cloudflare则宣布,其WAF防护规则对包括免费版在内的所有客户默认生效。为此,他们上线了一项新能力——“全事务检测”,将请求和源站响应关联起来,判断攻击是否得手。
即便如此,Cloudflare当天就观测到了针对客户的攻击流量,以及攻击者不断变形载荷以绕过规则的尝试。
OpenAI在报告中也提到,他们已经开源了一个Skill,可以安装到Codex中,专门用于检测网站是否存在php2shell漏洞。
安装方式:直接发送下面这句话到Codex。
“$skill-installer install both skills from https://github.com/openai/php2shell-checker”
检查方法则是使用对应的Skill,并附上链接。如果你拥有该网站的服务器访问权限,使用phpcheck-server;当你只有URL时,使用phpcheck-url。
对普通用户来说,这件事最直接的感受是,某些网站可能因紧急维护而短暂无法登录。
但对任何运营着网站或服务的人来说,需要升级到修复版本,重启所有PHP进程,还要为拿不到补丁的老版本安排迁移或隔离。
国内一些大量运行在宝塔面板、ThinkPHP和Discuz上的长尾站点,它们中的老版本这次拿不到官方补丁,只能靠迁移或隔离来兜底。
而对于整个行业,PHP2Shell留下的是一道更长的影子。OpenAI在复盘中承认:帮助研究者识别严重缺陷的能力,同样可以帮助攻击者更快地打造攻击工具。
补丁公开的那一刻,攻防双方拿到的是同一份代码修改记录。所谓“防守方窗口期”,正在变成需要被精确计算的资源。
十多年前,这些缺陷被写进PHP的代码里时,没有人能用上它们。
如今,AI把它们翻了出来。这一次,它们先在防守方手里。
我们有理由肯定AI在这次事件中的贡献。研究者借助AI,能够继续追查线索、分析失败原因,把过去难以完成的尝试推进下去。
但证明漏洞可以被利用,往往就意味着做出了一套能够运行的攻击代码。模型在这个过程中展现出的分析和调试能力,也可能被用来改进攻击工具。
随着这类工作的门槛下降,维护者需要应对的威胁也会增加。
这次,研究者提前提交报告,为修复争取了时间。以后这样的准备时间还能剩下多少,却很难预料。
AI可以越来越快地找出问题并验证问题,但整个互联网能否跟上修补的速度,仍然是另一回事。
李明
这篇文章对新手非常友好,把复杂的赛事数据讲得很清楚。我按照里面的方法分析了几场中超比赛,准确率提升了不少。
张伟
感谢你的认可!贝博体育团队会持续推出更多赛事分析内容,覆盖五大联赛和亚洲主流联赛,欢迎常来交流。
王芳
很实用的帖子!现在每次看球前都会先来贝博体育查数据,再结合自己的判断,观赛体验好多了。