登录后签到切换到窄版
收藏本站 发布

PHP爆出10年来最严重漏洞,AI只花了2天就挖出来了

[复制链接]
查看: 14|回复: 0
发表于 2026-10-22 20:43:56 | 显示全部楼层 |阅读模式

Wiz Research 披露 PHP 核心中的多个内存安全漏洞(CVE-2026-109618/CVE-2026-109619,CVSS 最高 9.2),实现…
业务目标:PHP核心层的RCE防护

PHP在全球网站基础设施中的位置与风险敞口

PHP 支撑着约 70% 的活跃网站——这个数字在过去十年中几乎没有变化。WordPress、Drupal、Joomla、Magento 以及众多政府和企业内部系统都构建在 PHP 之上。更关键的是,PHP 还大量运行在高并发的电商、金融和政务场景中。
PHP 核心层的安全缺陷不是「某个应用的 bug」,而是整个基础设施的信任根出了问题。Volker Dusch,PHP Foundation 的安全工程师,向《华尔街日报》明确表示:「这是 PHP 十多年来最严重的问题。」
本次漏洞的影响范围与严重性评估

CVE-2026-109618 和 CVE-2026-109619 均被评定为 CVSS v4.0 9.2 分(Critical)。两者的共同点是:无需认证、可远程触发、能实现任意代码执行。
CVE-2026-109618 在内存耗尽(OOM)中断场景下产生——当 PHP 处理大文件上传时,堆内存分配失败会导致请求内部数据结构处于未初始化状态。CVE-2026-109619 则在致命错误路径下利用全局状态的残留,使攻击者能够劫持执行流。
更严重的是内存泄露问题。Sansec 的分析指出,即使应用程序从未调用 session_start(),恶意请求也能读取同一进程内的其他会话令牌、API 密钥甚至 TLS 私钥。这使攻击路径从单纯的 RCE 扩展为「RCE + 被动凭证窃取」的双重威胁。
Wiz Research 展示的 PoC 工具 PHP2Shell 声称兼容 PHP 5.4.0 及以上所有版本。全球约 60% 的对外 PHP 服务器因版本过旧已终止支持。
Magento / 政府网站 / 企业内部系统]Core[PHP 核心层memory handling 缺陷]Attack1[攻击向量 1OOM 中断 + UAF]Attack2[攻击向量 2致命错误路径 + 状态残留]Impact[影响结果RCE + 内存泄露无需认证的远程执行]Sub --> CoreCore --> Attack1Core --> Attack2Attack1 --> ImpactAttack2 --> ImpactImpact --> Compromise[服务器完全接管敏感数据外泄]漏洞之所以能够在核心层潜伏多年,根本原因在于 PHP 的内存管理模型。PHP 使用自定义的堆分配器 zalloc,在请求生命周期内复用内存块。当 OOM 导致内存块提前释放但引用未清零时,后续请求会读到上一请求的残留数据——这是一种典型的 Use-After-Free 类问题,但在 PHP 的 SAPI 层中被 FPM 并发模型放大,传统静态分析工具难以追踪。
方案A:传统人工审计路径

历史PHP重大漏洞的发现周期与人力投入

PHP 历史上严重漏洞的发现,通常依赖安全研究员的长期跟踪或厂商内部的代码审查。以 CVE-2018-12889 为例,该漏洞在 PHP 7.x 分支中存在多年,最终由外部研究者通过系统性代码审计发现,整个过程耗时数月。
传统的安全审计工作流包括三个阶段:源码浏览、手动路径追踪、PoC 编写验证。以 PHP 引擎的 Zval 内存管理模块为例,研究员需要理解其引用计数机制、复制语义以及复合类型的处理逻辑,才能定位到潜在的错误路径。
PHP 7.4 版本的漏洞修复记录显示,单个严重漏洞的平均修复周期为 3–6 周。据 PHP 官方安全日志统计,2015–2020 年间披露的 47 个关键漏洞中,有 40% 的发现时间超过一年。
传统 fuzzing 与代码审计的瓶颈

传统 fuzzing 的核心假设是:输入空间的随机采样能够覆盖到边界条件的异常路径。对于 PHP 这种具有动态类型系统的语言,这个假设面临两个结构性障碍。
其一,PHP 的内部请求生命周期涉及多阶段的状态机转换。session.upload_progress、GC 清理、内存重分配等操作的执行顺序依赖运行时上下文,单纯基于 HTTP 输入的模糊测试难以触达深层的内部状态组合。
其二,内存安全漏洞的触发通常需要特定的执行路径组合。CVE-2026-109618 的核心机制是在 OOM 中断后,请求内部数据结构仅部分初始化。当 cleanup 例程读取未初始化的堆内存时,会基于垃圾数据做出错误的分支判断。这种「条件叠加」型漏洞,传统的单点 fuzzing 几乎不可能覆盖。
坦白讲,用随机输入去撞 PHP 内存管理的边界,命中率比中彩票高不了多少。
fuzzing 框架如 AFL++、libFuzzer 在 C/C++ 项目上积累了大量成功案例,但在 PHP 这种解释型语言的应用层效果有限。PHP 引擎本身的模糊测试覆盖率长期停留在 60% 左右。
为什么这次漏洞在传统流程下可能被延迟发现

CVE-2026-109618 和 CVE-2026-109619 的共同特征,使得它们在传统审计流程下容易被忽略。
首先,两个漏洞的触发条件都依赖于「异常路径 + 未初始化内存」的组合。只有 OOM 中断、致命错误等异常分支下,才会暴露出对未初始化字段的读取行为。
其次,漏洞的利用需要构造特定的请求上下文。攻击者需要通过 session.upload_progress 模块触发内存重分配,同时精确控制请求的执行时序。
最后,PHP 5.4+ 的向后兼容性设计留下了历史包袱。早期版本的 session 处理逻辑在后续迭代中被不断重构,但部分边界行为被保留,这些「活化石」代码很少成为安全审查的焦点。
方案B:AI辅助安全研究路径

Wiz Research如何使用Gemini 4 Argon和GPT-5.6 Sol定位漏洞

Wiz Research 的研究者 sagitz 在 X 上留下的记录是一句话:「研究始于一个针对 PHP 函数安全缺陷的提示词。」
具体路径是从 popular codebase 的可访问函数出发,让模型列出可能被外部数据触发的内部处理链。Gemini 4 Argon 负责源码级分析——追踪参数如何从 zval 结构流入内存分配逻辑;GPT-5.6 Sol 负责行为推断——判断某个代码路径在何种输入条件下会触发异常状态转换。
两者是串行接力:Gemini 4 Argon 产出的可疑调用栈经过 Sol 的行为建模后,研究者再用 Sol 生成验证用的 PoC 代码。三次迭代后,两个独立漏洞各自有了可复现的攻击链。
「As expected in 2026, AI did most of the work here.」——sagitz, Wiz Research
AI在源码分析、行为推断与PoC生成中的角色分工

传统审计的三个关键环节——代码扫描、逻辑推理、漏洞验证——这次被切割成三个不同层次的任务。
源码扫描是体力活。PHP 核心的 C 代码跨越数十年累积,函数调用链错综复杂。Gemini 4 Argon 的任务是把「某个函数是否被公开接口调用」这个问题从数天压缩到数小时。
行为推断是判断力活。发现可疑代码路径后,需要判断:这个条件分支在正常请求下能否到达?这部分 GPT-5.6 Sol 发挥了更明显的优势——它能把离散的代码片段组合成完整的攻击场景描述。
PoC 生成是工程活。Sol 在这个环节的作用类似一个「能写出正确 C 语法的实习生」——它不会发明不存在的机制,但能把已知的内存操作组合成可执行的请求体。
发现周期从数月压缩至两天的机制解析

传统漏洞研究的瓶颈不在算力,而在信息检索成本。PHP 核心代码超过百万行,手动建立调用图需要大量时间沉淀。
AI 模型的介入改变的是第一阶段的搜索效率。给定「session.upload_progress」这个模块名,Gemini 4 Argon 可以在数小时内定位到所有可能触发的代码分支。人类研究者原本需要一周完成的信息收集,现在集中在几个小时的对话窗口里。
第二阶段是假设验证。传统流程需要研究者手工构造测试用例、运行 debug 版本。AI 辅助下,研究者可以直接让模型根据可疑路径生成测试脚本。两天时间足够完成三轮迭代:定位→验证→修正。
更关键的变化发生在协作层面。OpenAI、Calif、Quarkslab 在补丁验证阶段形成了分布式验证网络。补丁提交后,多个团队并行测试不同输入条件,发现边缘 case 的时间从数天缩短到数小时。


13

主题

0

回帖

121

积分

注册会员

积分
121
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

春风AI技术论坛

在本版发帖返回顶部