OpenAI发现PHP致命漏洞
刚刚,OpenAI揪出PHP致命漏洞!全球70%网站深夜爆雷
OpenAI通过GPT-5.6 Sol发现PHP语言中存在的两个高危漏洞,导致攻击者无需登录即可远程执行服务器代码,影响全球约70%的网站,荷兰国家网安机构等紧急关闭官网,OpenAI与PHP维护者秘密合作两个月修复漏洞












新智元报道 出大事了! 连账号密码都不用,黑客就可能让网站服务器听命于自己! 就在刚刚,OpenAI公开了一起惊心动魄的幕后行动:GPT-5.6 Sol从全球70%网站都在用的PHP语言里, 挖出了两个致命漏洞。 一旦被利用,攻击者 连账号密码都不用输,直接就能让服务器乖乖执行恶意代码。 甚至,连平日里专门教别人防黑客的荷兰国家网安机构,收到风声后的第一反应,都是赶紧 把自家的官网给关了 ! 为了堵上窟窿,OpenAI和PHP维护者 秘密死磕了两个月 ,不惜推翻重来, 连PHP引擎的内存管理机制都改了 。
然而,保密了两个月,却在 最后48小时彻底崩盘 —— 漏洞消息先泄露,倒逼补丁提前一天上线; 随后攻击演示视频意外流出,修复镜像提前公开。 还没等全球站长们反应过来打补丁,第一波真实攻击就已经在路上了。 更让人后背发凉的是,OpenAI顺手还埋了个彩蛋:这两个只是开胃菜,另外几项重大漏洞,还在排队抢修中… … 这次PHP爆雷,三点看懂: 两个高危漏洞: PHP是网站常用的后台语言。 在受影响的部署中,攻击者可能无需登录,就让服务器执行恶意代码。 GPT参与找洞: Calif借助GPT发现漏洞,Wiz也独立发现;
PHP维护者主导修复,OpenAI协调各方。 补丁已经发布: 网站运营者需要升级PHP,临时防护不能替代补丁。 PHP突然爆雷,网安机构先关站 这场秘密抢修,最后连负责防黑客的机构都得先关站避险。 补丁还没赶到,官网先下线。 10月21日,荷兰国家网络安全中心NCSC选择先关站,等修复。 关站的还不止它。 荷兰司法系统的招聘网站、司法培训机构网站也暂停服务,连给记者传送庭审信息的文件信箱都临时关闭了。 日本财务省同样停了官网的部分内容和服务,紧急检查服务器、安装修复。
引发关站的两个PHP引擎漏洞,合称PHP2Shell, CVSS危险评分都达到9.2分,满分10分 。 其中最危险的后果,叫 远程代码执行,简称 RCE 。 网站本来只该处理访问者发来的请求,结果却可能开始执行攻击者指定的代码。 Wiz用当时最新的WordPress、Drupal、Joomla镜像搭建测试环境,复现了无需登录的远程攻击,还验证了从内存中读取密码、令牌和API密钥的攻击路径。 甚至,在某些Apache与mod_php部署中,攻击在网站自己的程序启动前就能发生。
哪怕页面只写了一行「Hello World」,也可能中招。 麻烦在于,用PHP的网站太多了。 W3Techs能识别服务端语言的网站中,69.3%使用PHP。 底层引擎出了问题,大量网站都得跟着检查、升级。 GPT立大功 从一个漏洞追出一整类 把时间拨回7月30日,Calif研究者Ryan Austin开始审计PHP。 他参与OpenAI的Patch the Planet计划,要用AI帮开源项目找洞、修洞。 到8月1日,多条远程攻击路径就被找了出来。 早在2004年,PHP的内存限制机制就被发现存在远程攻击漏洞。
Ryan让GPT-5.6 Sol以此为切入点,检查现有代码里是否还藏着同类问题。 程序处理请求,要把数据临时放进内存。 PHP给每次请求划了额度,用光就要中断处理。 这种情况叫 内存耗尽,也就是 OOM 。 Calif披露的一条攻击路径中, 不到8MiB的请求数据,处理时却足以耗尽PHP默认128MiB的内存额度。 小小的请求进入PHP后,会被拆成大量记录,每条都要额外占用内存。 攻击者就利用这层放大,让程序在特定一步耗尽额度。 按PHP的规矩,这时应该中断操作,转去报错、清理。
偏偏就在这个时候,数据可能只填了一半。 模型在PHP内部存放数据的哈希表里,发现了一个危险顺序:新增记录时, 先把记录数加一,才申请内存、填入内容 。 如果申请内存时正好耗尽额度,程序就会跳走。 新记录还没填好,计数却已经加了。 清理程序照着计数检查,便把尚未准备好的内存当成有效记录使用。 相当于表格里一行还没填完,已经被当成完整记录拿来用。 把这种错误变成远程攻击,还要安排相关内存内容、满足具体运行条件。 研究者已经在受影响的部署中,让程序执行了攻击者指定的代码。 研究者没停在这个洞上。
他们让模型 把刚发现的错误模式写成SKILL.md,一份可以反复使用的审计指引 ,再沿着同样的线索查下去。 这一查,Agent又在负责记录文件上传进度的代码里,找到了另一个问题。 一次请求异常结束, 内存被释放,但处理请求的程序还留着旧地址 。 等它接到下一次请求,又可能拿这个地址去读取已经失效的内存。 这就是 释放后使用,也叫UAF 。 相当于一条登记已经作废,程序却仍照着旧地址找数据,而那块内存可能已被重新分配。 另一边,Wiz也独立找到了两个漏洞。
PHP版本一换、运行环境一变,原来的攻击就可能失效,模型还得跟着分析崩溃、调整验证。 Wiz研究员Sagi Tzadik在X上写道: 「 AI 干了这里的大部分工作。 」 给PHP引擎动手术 秘密抢修两个月 几天就找出了攻击路径,后面的修复准备却忙了两个月。 这次由OpenAI牵头协调,PHP维护者主导修复。 但两个漏洞牵着引擎的内存管理和错误处理,堵住眼前的攻击路径,同类问题还可能从别处冒出来; 大改底层,又得保证旧程序和扩展还能跑。 PHP基金会说,团队连周末都在昼夜协调。
补丁要在多个版本上测试,还得让发行商打包、让安全厂商准备防护。 最终,PHP连中止工作的时机都改了。 修补后的PHP设了两道内存上限。 触及 软限制 ,等程序走到安全位置再处理,避免留下半成品数据; 触及更高的 硬限制 ,就让进程退出,阻止危险状态被继续使用。 最后48小时接连泄密,攻击先来了 各方原本约好,10月22日晚10点统一发布。 可到了20日晚11点左右,两个漏洞编号突然在网上流传,还混着错误的发布时间和满分10分的评分。 此时,离原定发布已经不到48小时。
21日凌晨3点半,PHP团队提前发出预告, 把正式发布往前挪了整整24小时 。 但通知发了,不等于更新就能装上。 发行商还在打包,再提前,用户就会先知道自己有危险,却拿不到方便安装的更新。 预告发出约半小时,攻击演示视频也漏了。 PHP基金会复盘称,Calif误发了攻击演示。 视频很快被删,副本却已经传了出去。 到了21日下午,连含修复的构建镜像也提前公开了。 Chainguard发布这些镜像后,外界已经可以对比新旧代码,反推漏洞在哪儿。
同日下午3点43分,Cloudflare首席技术官Dane Knecht在X上发帖: 已经看到了早期攻击。 他发帖时,补丁计划到当晚10点才统一发布。 攻击已经来了,还有六个多小时要撑。 Cloudflare后来还披露,攻击者已经在改请求,试着绕过防护规则。 Cloudflare给使用其Web应用防火墙的免费和付费客户部署了保护,但Dane强调, 这只是临时措施,补丁出来就得安装 。 21日晚, PHP8.5.12、8.4.27、8.3.36和8.2.35 终于发布。
PHP团队还为7.4、8.0和8.1准备了最小范围的源码修补,供发行商和长期支持服务制作更新包。 OpenAI预告 更多重大漏洞还在后面 22日零点35分,OpenAI又放出一个Codex检查skill,帮网站运营者检查PHP版本,判断是否可能受影响。 它查的是PHP版本,不能替网站完成升级; 如果连版本都查不到,也不能据此认定安全。 而OpenAI已经预告: PHP只是团队已发现、正在修复的多项重大漏洞之一。 未来几个月,这类发现预计还会显著增加!









来源:北京智源研究院 · hub.baai.ac.cn