PHP的Longjmp bug:内置CVE-2026-109618和CVE-2026-109619
被评为9.2的两个关键的PHP缺陷允许在运行解释器的任何网络服务器上进行未经认证的远程代码执行. 这就是Longjmp记忆的腐败如何实际发挥作用,谁被曝光,现在怎么办.

2026年10月21日,英国国家网络安全中心发布警报, 不论如何, 它背后的两个CVE;CVE-2026-109618和CVE-2026-109619—在CVSS 4.0下被评为9.2,是远程代码执行缺陷,并有概念证明代码流通. 如果你的地产触碰了公共互联网, PHP 很有可能就在爆炸半径的某个地方。
为什么这个不同
PHP的弱点是例行公事。 框架中的解射错误,插件中的路径转录, CMS & mdash 中的 SQL 注入;这些都是脆弱性管理的面包和黄油,它们几乎总是被限定为特定的应用程序,特定的模块,或者特定的配置. CVE-2026-109618和CVE-2026-109619不是那样的. 他们生活在解释器中,在PHP用来处理致命错误和记忆外状况的机械中. 这意味着曝光不是用您运行的应用程序来定义的,而是用您运行 PHP 来定义的.
这种区别对于你的反应方式非常重要。 当 CMS 插件处于弱势时, 您会补补插件或禁用它 。 当运行时间变得脆弱时,运行时间上的每个应用程序都会继承缺陷—客户端门户,内部维基,2019年被遗忘的营销微网站,即静悄悄地捆绑无人记录的PHP堆积的供应商电器. 国家指挥中心的指导准确地反映了这一点:确定 " 普通 " 的PHP装置,而不仅仅是过时的装置。 注:国家指导委员会明确指出,使用“em> any 版本的PHP的组织受到影响,应更新到最新的固定发布。 在供应商咨询确认固定存在之前,不要假设最近版本是安全的。
解剖两个缺陷
的弱点可追溯到longjmp(),C库机制PHP在出现致命错误或外出条件时用来解开堆栈。 在正常的操作中,这是一个有控制的救市:有些事情出错,解释者跳回一个已知的安全点,请求被彻底撕毁. 当救援发生时错误的时刻就会出现错误, 内部状态不一致 。
CVE-2026-109618: 中断初始化
第一个缺陷是控制流量管理问题。 当一个外出条件触发 longjmp() 而内部请求数据仅部分关闭时,清理路径可以将无效的,未初始化的内存视为有效. 结果就是记忆腐败。 因为攻击者控制触发器 & mdash; 一个 OOM 条件是您可以用精心设计的请求 & mdash; 第42单元描述的开发是可信赖的,这是维权者应该认真对待的一个词. 可靠的RCE是指好奇的研究人员与工作开发之间的屏障较低.
CVE-2026-109619:声明其内存的寿命超过
第二个缺陷是微妙的,在某些方面更阴险。 在这里,请求拥有的内部状态可以在记忆支撑解脱后存活下来. PHP工人 & mdash; 处理请求的流程, 特别是在PHP- FPM & mdash等持久模式下处理请求的流程; 然后接下一份请求, 并可能在正常初始化重排之前使用此 stale状态 。 实际上,一项请求可能会留下有毒的遗产,留给同一工人处理的下一个遗产。 自由区域以后可以阅读或分支,并充分控制堆积布局,从而成为任意执行代码的途径。
| CVE | Root cause | 剥削路径 | CVE-2026-109618 OOM 处理通过 longjmp() 离开请求未初始化的 | td>。 攻击者触发的OOM导致腐败,RCE
|---|---|---|
| 同一工人的 |
两者都未经认证。 没有可以绕过的登录, 因为没有可以登录到 & mdash; 攻击表面是请求本身, 在您的应用程序代码对此事有任何发言权之前 。 这就是将分数推到9.2的原因,也是使NCCSC语言如此直接的原因.
曝光范围
Palo Alto Networks的Cortex Xpanse遥测发现超过2,260万个可能易受这些CVE影响的曝光事件. 这个数字计算了互联网上网服务, 指纹显示PHP运行时间很脆弱, 并且一旦计入电器、嵌入式管理界面以及内部系统, 第42股还报告说,至少有一个欧洲国家政府将其网站下线,作为防范和mdash;该决定向大家讲述了已经看到这一概念的人对概念的证明有多认真。 对于一个维权者来说,令人不舒服的问题不是"我们运行PHP吗?"而是"我们不知道我们运行PHP在哪里?". 内容管理系统、售票平台、客户关系管理前端、监测仪表板、有网络用户界面的网络设备、建立服务器和集装箱基图象,都定期在下方装有PHP解释器。 NCSC-NL 具有PHP依赖性的软件产品清单是一个有用的起点,正是因为它能捕捉到二阶的曝光量。
注意:在这样的脆弱性的前48小时常见的错误是只扫描包管理者报告的版本字符串. 电器和捆绑的堆栈经常搭载补丁或定制的PHP建筑,这些建筑不会广告其真正的补丁级别. 将版本检测视为提示而非判断.
怎么办,优先排序
NCCSC的优先行动值得密切关注,因为对于这种形状的事件,这些行动是按顺序排列的。
- 发现各地的PHP,首先在互联网上发布。 不按版本过滤 。 服务器、集装箱和电器之间的假设解释器装置,然后按外部可获取性排列。
- 补丁到最近固定的 PHP 发布 。 PHP项目已发布安全更新;应用它并继续跟踪未来的发布. 如果您处在一个末端分支中, 请移动到一个完全支持的版本, 而不是返回 。
- 观察第三方供应商。 捆绑PHP的应用程序和服务需要自己的更新. 持续监测供应商的咨询, 而不是一次 。
- 应用 PHP 团队的硬化指导 除了补丁 & mdash; 深入防御下一个翻译缺陷。
- 如果您无法立即补丁, 将应用 PHP 团队发布的临时缓解。 如果这些不切实际或太慢,请将系统下线。
- 如果您无法更新或禁用一个系统,则 " /强 " 评估其是否具有妥协证据,以及是否在 " /强 " 升级前对攻击者安装的后门 " em " 进行评估。 补丁入侵无法清除入侵者。
最后一点值得强调。 这些是未经认证的RCE缺陷,带有公开的概念证明. 披露和开发之间的窗口是按小时而不是按周来衡量的,一个受损的PHP工人是隐藏 & mdash 的绝佳场所;攻击者继承了网络服务器的特权,其数据库资质,以及其外出网络位置. 如果一个系统在任何有意义的时间内被暴露和未喷发,则假设妥协,直到你能够显示其他情况,并在缺乏内部法证能力的情况下,请NCSC保证的事故反应提供商。
检测和核实
从笔试的角度来看,对口译级bug的实际挑战在于它们在应用程序日志中留下的指纹很少. 触发 OOM 的请求在您的 WAF & mdash 看来不像是攻击; 它看起来像是大型上传, 病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理病理 开发发生在您的应用日志所看到的层下。
这意味着检测必须依靠基础设施信号:意外的工人崩溃和重启、PHP-FPM池的异常内存压力、出现不应出现的核心垃圾堆以及从网络服务器到陌生目的地的外部连接。 在预防方面,通过网络安全控制进行虚拟补丁可以购买时间—Palo Alto's Advanced President Plus with Frontier Virtual Patching 自2026 &mdash 20日起,通过签名543004 覆盖这些CVes;但虚拟补丁是一个桥梁,而不是目的地. 解释器仍然需要真正的修补.
如果您想在攻击者之前验证自己的曝光, 诚实的方法是直接测试运行时间: 确认您所找到的每个解释器的补丁级别, 在控制的环境中练习 OOM 和致命- error 路径, 并核实工人状态不会在请求之间泄露 。 这正是应用程序层扫描往往忽略的运行时间级评估,而焦点渗透测试正是在这一类的脆弱性上获得保留的地方。
更大的教训
让CVE-2026-109618和CVE-2026-109619引人注意的并不是PHP有一个内存安全bug & mdash;每个大型C代码库最终都会这样做. 它提醒你 翻译是你们攻击表面的一部分 也是大多数组织最不仔细记录的部分 我们往往很熟悉我们的应用 几乎不熟悉我们的运行时间 当一个缺陷在运行时间中落下时,这种不对称就会成为脆弱性。
那些通过这个过程的组织将会是那些已经对“PHP在哪里运行,在哪个版本呢?” 有了可靠答案的组织。 如果你在10月21日没有这个答案,现在就把它建起来是本周你能够做的最有价值的事情,比下一个必然会出现的翻译缺陷还要早