潜伏十四年,被AI翻出: PHP“php2shell”事件全复盘

潜藏十四年的PHP高危漏洞php2shell被AI安全团队验证可利用,信息泄露引发攻击抢跑,全球服务器竞速避险。本文复盘事件全程,剖析内存安全缺陷、AI在漏洞发现中的真实角色,以及协调披露机制的结构性裂痕。

深度研究 · 安全观察



漏洞发现已进入机器时代 | 披露机制还停在手工时代?

10月20日下午,一则匿名帖子出现在Hacker News,内容简短:PHP即将公布两个严重漏洞,编号与一张名为“PHP2Shell”的攻击工具截图一并流出,帖子附带的CVSS评分还是错的。

帖子很快被删除,但截图已经传开。

原本计划在保密状态下走完最后一程的协调披露流程,在这一天被迫提前引爆——联盟原定10月22日的披露计划被打乱,PHP安全团队当晚确认漏洞存在,宣布将安全更新提前至格林尼治时间21日14时发布。

PHP刚曝光的两个严重漏洞,让日本网站纷纷紧急维护_搜狐网

而攻击者,早已动手。

比他们更早的,是四天前的一次试探。

21日,PHP 8.5.12、8.4.27、8.3.36、8.2.35四个安全版本紧急发布,修复编号为CVE-2026-109618与CVE-2026-109619的两个远程代码执行漏洞。

受影响版本覆盖 8.2.34、8.3.35、8.4.26、8.5.11 及此前全部版本,代码可追溯至2012年发布的PHP 5.4.0,且默认配置即存在风险。

这两个漏洞在全球互联网的地基里,静静躺了十四年。

据W3Techs统计,PHP支撑着全球约七成的网站。攻击无需任何身份认证,一段构造异常的HTTP请求,即可让攻击者在目标服务器上执行任意代码,或以Web服务进程权限读取内存中的口令、令牌与密钥。

PHP刚曝光的两个严重漏洞,让日本网站纷纷紧急维护_搜狐网

图片
时间线:一场被提前透支的攻防接力

2024年:开源安全基金会(OSTIF)发起、获主权技术机构(Sovereign Tech Agency)资助,法国安全公司Quarkslab对php-src执行第三方审计,首次触及这批内存异常的苗头。但研究人员始终无法串联出稳定的跨请求利用链,无法证明远程可利用,缺陷被按低风险归档。这是漏洞潜伏十四年的直接原因:人类没有漏掉它,只是卡在了“证明它”这一步。


6月:OpenAI启动“Patch the Planet”计划,Calif作为参与方选定PHP作为审计目标。理由很直接:高影响面、历经多年审计、理论上“不该再有严重漏洞”。

OpenAI发现PHP重大安全漏洞,成为影响力最大的漏洞之一- 安全内参| 决策者的网络安全知识库


8月1日:借助GPT-5.6 Sol,Calif找到第一条完整的远程代码执行路径。从开始审计到打通利用链,只用了三天。


8月11日:Calif向PHP安全团队提交报告。同日,OpenAI内部安全团队独立报告了相同根因。从这一天起,修复成为PHP安全团队的最高优先级,多名工程师全职投入。


8月19日至24日:Wiz研究团队借助自研工具Wiz Atlas、Gemini 4 Argon与GPT-5.6 Sol,独立发现同一缺陷,并在Drupal与WordPress环境中完成攻击验证。Wiz的复盘极为坦率:证明这类缺陷可利用,需要把多个问题串成一条复杂的链,“几乎已经到了人类研究员的能力极限”——而在模型辅助下,一名研究员用一周完成了过去顶尖团队数月的工作。

图片

8月至10月:协调范围扩展至CDN与云服务商。防护规则的开发与补丁的开发并行推进,而非串行等待。


10月17日:亚马逊威胁情报团队(MadPot蜜罐网络)记录到首次利用尝试,此时漏洞仍在严格保密期内,距补丁发布还有四天。流量来自经商业匿名化网络路由的IP,定向瞄准蜜罐环境,高度疑似掌握提前情报——这条前置情报的源头至今没有定论。


10月20日15时许:Hacker News匿名帖流出。随后Calif团队误发布一条未清理干净的POC演示视频,虽已删除,画面内容已被留存传播。


10月21日02时:多来源、多变种的利用尝试开始抵达各安全厂商的传感器,亚马逊据此判断已有多个攻击者团伙介入。


10月21日03:02:Cloudflare向含免费版在内的全部客户静默下发WAF防护规则。以安全公告公开时间(13:34 UTC)计提前约十个半小时,以补丁正式发布(14:00 UTC)计接近11小时;Cloudflare官方的对外口径为“披露前约9小时”。


10月21日07:41:供应链安全厂商Chainguard提前上架内置修复的预编译容器镜像,比协调发布早六小时以上。PHP官方措辞罕见地严厉:这让“任何攻击者都能以二进制形式研究修复,而无视多方数周的工作”。


10月21日14:00:补丁发布。攻击曲线随即失控:公开前数小时数千次尝试,公布后45分钟内升至数万次,两小时后达数十万次,次日累计数百万次。
图片
图片
AI改变的是漏洞利用的“成本结构”

php2shell不是一个漏洞,而是两条各自独立、又可相互衔接的远程代码执行链。

PHP2Shell | Astra Security

CVE-2026-109618(CVSS 9.2):包含一条OOM触发的控制流劫持RCE路径,另附一条独立的内存泄露分支。PHP在内存耗尽(OOM)时调用longjmp()强行跳出当前上下文。

问题在于某些路径下请求内存尚未完成初始化就已可被访问,此时若分配失败,longjmp会绕开正常控制流,留下一片半初始化的内存,而请求关闭流程会把它当作合法数据处理。

攻击者的任务是让PHP在正确的时刻耗尽内存。multipart解析恰好提供了弹药。一个没有有效Content-Length的表单可以绕过post_max_size检查,一个表单域可以携带无限数量的头部,空文件控件不计入max_file_uploads却仍要分配元数据数组。在Apache mod_php下,这一切发生在你的任何一行应用代码运行之前,业务层防护根本无从介入。

再说一条类Heartbleed的路径会把进程内存写进PHPSESSID响应Cookie,已有安全厂商观测到单次泄露约67KB服务器内存,其他请求留下的口令、令牌、API密钥,可能就这样被原样带走。

CVE-2026-109619(CVSS 9.2):跨请求全局状态残留的释放后使用。PHP工作进程(如PHP-FPM)按序处理多个请求,而部分指向请求内存的全局状态指针,在底层内存释放后依然残留。

Two Critical PHP Flaws Could Hand Attackers Your Web Servers. Here's How to  Find, Mitigate, and Patch PHP2Shell Now | Qualys

当前一个请求以致命错误收场、下一个请求由同一工作进程接管时,初始化重置尚未发生,过期指针已被消费——经典的Use-After-Free。

已确认的攻击路径有两条:默认开启、无需session_start()(以session模块启用为前提)的session.upload_progress上传进度追踪,以及PHP 8.5的致命错误回溯功能。进程复用越久,复用关系越稳定,利用的可靠性越高。

这次补丁本身的修复方案是彻底移除OOM时的longjmp(),改为在虚拟机安全点执行优雅降载、超阈值时硬退出,并在请求边界重置全部请求级全局状态。

这不是一处代码修补,而是对PHP内存异常处理逻辑的低层级重构,由人类工程师耗时近两个月完成。AI用三天证明了漏洞存在,人类用两个月才堵住它。它降低的是发现与验证的门槛,不是编写安全代码的门槛。

AI是放大器,不是主体

事件发酵后,“AI自主挖出核弹级漏洞”的说法广为流传,有责任在此校准。

图片

发现路径由人设计




Calif的研究员明确表示自己没有使用任何外部拿不到的工具或模型,AI的作用是加速代码审查、模拟利用路径、生成与变异攻击载荷。

图片

人类的领域知识仍是起点




Calif的突破口,恰恰来自对PHP历史漏洞档案与2024年审计结论的重新关联——AI放大了经验,但没有替代经验。

图片

修复与协调完全由人主导




从补丁重构到多主体协作,没有任何环节可以交给机器。

这个区分不是文字游戏。它决定了行业应当如何部署资源,也解释了本次事件真正的里程碑意义。人类与机器的分工边界,第一次清晰地划在了“验证利用可能性”这道线上。

2024年的Quarkslab不缺人才,缺的是把一个理论缺陷推演成稳定利用链的算力与耐心,这正是AI补齐的最后一环,也是“潜伏十四年”这个背后真正值得警惕的是还有多少存量基础软件,正卡在同样的环节上。

而PHP基金会称修复工作多次搁置又重启,指出这次拖延是一次结构性失败。




真正的裂痕:

一场制度性事故

本次事件中最值得行业反思的不是漏洞,而是协调披露机制在最后关头的系统性失守。

保密熵增。传统协调披露是“发现者+单一维护方”的小范围默契,本次却是发现方、上游基金会、多家云厂商、CDN、供应链与数十家安全企业共同参与防护预部署。参与方每多一个,泄密概率不是线性而是指数级上升——协调披露制度建立在“小范围信任”之上,而AI驱动的多团队联合审计,恰恰是这种信任最难维系的工作模式。

三重外溢。复盘显示,泄密并非单一环节失守。社区匿名帖率先放出CVE编号;Calif误删未净的POC演示视频流出画面;Chainguard提前上架的预编译镜像,则让攻击者无需任何技术细节,只需对补丁前后二进制做差分,便可在极短时间内反推出代码改动点,把漏洞细节从“修复方案”里直接挖出来。预编译软件包,正在成为零日漏洞提前外泄的新通道,这是本次事件中最容易被忽略、也最具行业警示意义的一环。

预判与现实的落差。补丁发布前,安全机构Sansec预判:更新上线15分钟内,全网将出现大规模无差别扫描。现实是——扫描在补丁上线之前数小时已经开始。协调披露的初衷是为防御者争取时间,而当攻击抢跑成功,“防御窗口”第一次变成了负数。











攻防两端同一把刀的两个方向

事件后,GitHub与地下社区迅速出现大量号称可用的php2shell利用代码。

但安全机构的抽查结论泼了一盆冷水。这些大规模流传的POC,没有一个能真正打通远程代码执行,有的只是崩溃目标的粗糙变体,有的则干脆夹带恶意载荷,把急于复现的研究员当作新的攻击目标。

同时,真实威胁方在静默迭代。Cloudflare观测到攻击者在利用拦截规则的反馈实时变异载荷,试探绕过路径。

这幅图景比“AI武器泛滥”的标题更值得咀嚼。

前沿模型确实同时向攻防两端开放,白帽用它挖掘存量零日,黑帽用它批量生成与变异载荷。但攻防之间的真实差距从来不在生成速度,而在对系统边界的理解深度。噪声可以批量制造,可靠的利用链不能。至少在本次事件中,天平还没有倾斜。

然而,PHP 8.1及更早版本已终止官方支持,仅能获得需自行编译的源码回补,无法通过包管理器一键更新。大量个人站点、中小企业官网、多年未迭代的遗留系统,几乎不会投入人力完成升级。

各机构对暴露面的测算口径虽从一百五十万到两千六百万不等,但结论一致:数以百万计的服务器将长期处于无补丁防护状态。

针对这批“僵尸资产”的挖矿、篡改与数据窃取,将在未来数年持续常态化。补丁已经发布,战争才刚刚开始。

图片

防御者窗口
第一次实战验证,与它的脆弱

OpenAI在此次事件中提出了一个值得被记住的概念——Defender's Window(防御者窗口)。如果AI发现漏洞的速度持续快于攻击者,那么在漏洞公开之前,防御方理论上永远握有一段准备时间。

OpenAI发布4+10条AI安全保命指南全面防范AI自动化攻击风险

php2shell是这一理论的第一次大规模实战。Cloudflare的WAF规则在披露前十余小时已对全量客户生效。为支撑本次防护,Cloudflare专门上线了“全事务检测”能力,仅凭请求数据并不足以区分攻击与正常流量,必须同时审视请求与源站响应,才能把泄露数据的回传路径一并切断。

欧洲多个政务与公共服务平台在补丁上线前主动临时下线避险。在补丁抵达之前,防线已经布好,“先布防御、再发补丁”的前置防护模式,就此完成验证。

但它建立在全链路保密之上,而保密被三重外溢击穿,窗口瞬间关闭。

随着AI驱动的联合审计成为常态,参与方只会越来越多,窗口只会越来越窄。

未来的零日防护,不能再依赖“补丁+升级”这一道单薄的终点线,必须走向边缘WAF预置规则、进程内存隔离、异常请求实时拦截的纵深防御,把防护能力前置到补丁发布之前。因为下一次,泄密可能发生在更早的环节。

图片

写在最后

php2shell大概率不是孤例,而是序章。

它证明了四件事,即——

  • 存量基础软件中仍埋藏着可利用十四年的深层缺陷;

  • AI已经把“证明可利用”的成本压缩到单人单周;

  • 协调披露机制在多方协作的规模下存在结构性裂痕;

  • 防护能力的预置速度,正在成为比补丁本身更关键的安全指标。

OpenAI总裁Greg Brockman公开表示,团队已并行处置包括Node.js同日披露的一个远程代码执行漏洞在内的多个重大缺陷,并预计未来数月类似发现将显著上升。公司同时宣布加码Patch the Planet计划,为开源维护者提供模型与工程支持。

可以预期,PHP、Python、Nginx、OpenSSL这类互联网底层基础库中沉睡的历史零日,将被AI批量唤醒,基础软件的安全运维压力,将迎来一次爆发式增长。而当“发现→保密→修复→披露”的全周期被持续压缩,一旦出现泄密,漏洞从秘密零日转为全网公开攻击载荷,只需要几个小时。

对每一个依赖PHP的组织而言,行动清单短得近乎残酷:确认版本、应用更新;排查日志时至少回溯至10月17日,并在表单上传类POST请求中检索PHP_SESSION_UPLOAD_PROGRESS字符串;对无法升级的系统,评估下线。

而对这个行业而言,真正的问题才刚刚浮出水面——

当发现漏洞的能力被普遍放大,
我们守不守得住披露到修复之间
那段越来越窄的时间?

文章所涉技术细节与时间节点,综合自PHP基金会官方公告、OpenAI与Cloudflare官方博客、Calif与Wiz技术复盘、亚马逊威胁情报及多家安全机构通告。截至发稿,针对未修复版本的扫描仍在持续,暂无公开确认的大规模成功入侵案例。
 


本文来源于DOIT传媒,文章内容仅供参考,不构成投资建议。

赞 ()

相关推荐

发表回复

评论列表

点击查看更多

    联系我们

    微信:百易小助手

    邮件:contact@doit.com.cn

    工作时间:周一至周五,9:30-18:30,节假日休息

    微信