【紧急漏洞预警】PHP爆出两个代码执行漏洞(POC已公开)CVE-2026-109618与CVE-2026-109619
YGnight
YGnight
night安全
2026年10月22日 08:40
江西
去阅读
一、漏洞描述
| CVE 编号 | CVE-2026-109618 与 CVE-2026-109619 |
| 漏洞类型 | 109618 是内存耗尽处理中断后,请求内存还处于半初始化状态就被收尾读取;109619 是全局状态在请求内存释放之后仍被后来的请求引用。CNA 归入 CWE-416、CWE-755、CWE-824、CWE-1325 |
| 受影响组件 | PHP 内核的内存分配与请求收尾逻辑,Zend/zend\_alloc.c、Zend/zend\_execute\_API.c、main/main.c 等,Web SAPI 下可远程触达 |
| 影响版本 | 8.2.\ 早于 8.2.35、8.3.\ 早于 8.3.36、8.4.\ 早于 8.4.27、8.5.\ 早于 8.5.12,NVD 与 CNA 口径一致;官方另为 7.4、8.0、8.1 提供最小源码补丁 |
| 修复版本 | 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 |
| 修复提交 | 31c0ea7d7ff1,标题为 Avoid state corruption via bailout |
| 发布时间 | 公告与 NVD 记录均为 2026-10-21,8.5.12 的 ChangeLog 记为 2026-10-22 |
| 触发前提 | 能向对外提供 Web 服务的 PHP 发请求;官方点名 mod\_php 风险最高,未登录请求可在应用代码执行之前触发 |
| 利用条件 | 无需登录,无需用户交互;CVSS 4.0 记攻击复杂度为高,前置条件为存在 |
| 危害面 | 后续请求读取或跳转到残留数据,官方称可发展为远程代码执行 |
| CVSS | 9.2,向量 CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N,[email protected] 口径,两个编号一致 |
| EPSS | FIRST 暂未收录这两个编号 |
| 公开代码 | 官方称已有可用的攻击实现,未公开利用细节 |
公开材料与官方口径的差异
官方描述与 8.5.12 的补丁都落在内存分配与请求收尾这两处。公开仓库里出现过另一套说法,把两个编号整体讲成 session.upload\_progress 的会话固定、文件名注入与 var\_destroy 释放后重用,三条既不在官方描述里,补丁中也没有对应改动,该仓库附带的脚本只做写入与人工核对,不产出判定结果。官方缓解项确实包含 session.upload\_progress.enabled=0,公告写明它挡住的是已确认的 session 路径,其余变体不在覆盖范围。前一、二句为官方公告口径,第三句来自对公开仓库内容的比对。
二、漏洞原理
内存耗尽的处理方式是一次 longjmp。
这条跳转直接离开当前位置,请求剩下的处理整段放弃。
离开的位置并不固定,有些代码路径要用的那块内存还没填完,跳转就已经发生。
收尾不看这个状态,照常读,也照常按读到的内容往下分支。
第二个编号指向另一处。
PHP 有一批全局位置的指针会临时指向属于某个请求的内存。
请求结束、内存回收之后,指针可能留在原处,也可能清掉之后又被填上。
worker 是复用的,下一个请求进来,还没走到正常初始化,就先碰到了上一个请求留下的状态。
8.5.12 把这次失败改成先记下来。
记录用的结构加在执行器全局里,状态分成四种,从没发生一直到处理完毕。
// Zend/zend\_alloc.h 8.5.12 新增
typedef enum \_zend\_oom\_state {
ZEND\_OOM\_STATE\_NONE = 0,
ZEND\_OOM\_STATE\_PENDING,
ZEND\_OOM\_STATE\_HANDLING,
ZEND\_OOM\_STATE\_HANDLED
} zend\_oom\_state;
typedef struct \_zend\_oom\_info {
zend\_oom\_state state;
uint32\_t lineno;
zend\_string \message;
zend\_string \filename;
} zend\_oom\_info;
define ZEND\_HAS\_OOM() (UNEXPECTED(EG(delayed\_oom).state != ZEND\_OOM\_STATE\_NONE))
各处调用点在返回之前先问一次 ZEND\_HAS\_OOM。
分配入口也分成了两套,femalloc、fecalloc、ferealloc 这一组在超限时返回 NULL,不再直接跳出。
第二处改动在收尾。
下面这几个位置在 init\_executor 之前就会被错误处理用到,补丁逐个清零。
// Zend/zend\_execute\_API.c 8.5.12 zend\_shutdown\_executor\_values
/\ may be used by zend\_error\_zstr\_at before init\_executor \/
ZVAL\_UNDEF(&EG(user\_error\_handler));
ZVAL\_UNDEF(&EG(user\_exception\_handler));
ZVAL\_UNDEF(&EG(last\_fatal\_error\_backtrace));
EG(record\_errors) = false;
EG(num\_errors) = 0;
EG(errors) = NULL;
EG(error\_handling) = EH\_NORMAL;
EG(exception) = NULL;
补丁里的注释写的就是这个原因。
对象存储的两个字段一并归零,object\_buckets 置空,top 复位成 1。
session 一侧的改动对着上传进度。
这段处理发生在请求启动阶段,位置早于任何应用代码的执行。
补丁给它加了一个标记,标记打开时,解出来的对象一律保持成 \_\_PHP\_Incomplete\_Class。
// ext/session/session.c 8.5.12
static void php\_session\_unserialize\_init(php\_unserialize\_data\_t \var\_hash)
{
PHP\_VAR\_UNSERIALIZE\_INIT(\var\_hash);
if (PS(in\_rfc1867\_update)) {
php\_var\_unserialize\_set\_incomplete\_classes\_only(\*var\_hash, true);
}
}
直接结果是,自动加载、\\_wakeup、\\_unserialize 与 unserialize\_callback\_func 在这段过程里都不会被触发。
请求解析那一侧的注册函数也改了返回值,safe\_php\_register\_variable 与 add\_protected\_variable 统一返回 !ZEND\_HAS\_OOM() 的取反。
CVSS 4.0 的向量里,攻击复杂度记的是高,前置条件记的是存在。
触发需要特定条件,也需要先做一轮准备。官方描述提到多种触发方式都能稳定命中,但两个编号的利用细节都没有公开,官方只说明已有可用的攻击实现。
三、修复建议
升到 8.5.12、8.4.27、8.3.36 或 8.2.35
近期值得重点关注的漏洞预警
【紧急漏洞预警】nacos爆出权限绕过漏洞,可以创建管理员账户,经过分析有点出处(已复现,exp脚本已编写)
【漏洞预警】Fortinet FortiSIEM路径遍历导致RCE漏洞(POC已公开)CVE-2026-106173
【漏洞预警】linux内核漏洞(POC已公开)已有 Android/ARM64 的利用实现CVE-2026-98260
【漏洞预警】Next.js爆出RCE漏洞(POC已公开)CVE-2026-96889
【紧急漏洞预警】GitLab整数溢出导致RCE漏洞(POC已公开)
【漏洞预警】AnyDesk Linux存在堆缓冲区溢出漏洞(POC已公开)
【漏洞预警】macOS爆出路径穿越漏洞CVE-2026-84568(POC已公开)
【漏洞预警】Atlassian八款产品爆任意文件读取漏洞(附POC)
【漏洞预警】Joomla视频画廊扩展存在SQL注入漏洞(POC已公开)
【漏洞预警】Roundcube网页邮件客户端存在SQL注入漏洞(附POC)
WordPress页面模板存在文件包含漏洞(POC已公开)CVE-2026-87902
WordPress插件Forminator未认证短代码执行漏洞(poc已公开)CVE-2026-92229
WordPress插件Authorizer存在权限提升漏洞(POC已公开)CVE-2026-81294
WordPress插件MStoreAPI存在认证绕过漏洞(POC已公开)CVE-2026-13447
CakePHP爆出SQL注入漏洞(POC已公开)CVE-2026-77635
Node.js模块proxy-addr爆出严重漏洞CVE-2026-90711
Langflow爆出代码执行漏洞CVE-2026-17633 (POC已公开)
Apache CVE-2026-42536,补它只用一行,洞龄十四年
【紧急】搜狗输入法爆出远程代码执行漏洞CVE-2026-51990 ,已被在野利用
【紧急】无需登录就能获取 GitLab 的任意文件数据(附POC)
【紧急】JumpServer堡垒机被公布Access Key泄露漏洞,可以实现提权
Spring Cloud Azure公布严重漏洞 无需任何权限即可取得登录会话
【漏洞POC已公开】Linux RDS 爆出提权漏洞 一块内存放两次,root就到手了
13 行补丁,堵住Linux能拿 root 的内核洞(EXP已公开)
48 字节,换走一台 Windows 的 SYSTEM(CVE-2026-62735漏洞POC已公开)
【漏洞预警】linux删个网桥就能提权root?目前没有补丁(POC已公开)
【漏洞预警】自己注册个号,就能搬空别人的 Magento 订单和支付卡(POC已公开)
【漏洞预警】Next.js 爆出新漏洞,不用登录实现命令执行(POC已公开)
【漏洞补丁绕过预警】Redis CVE-2026-23479变种高危漏洞,EXP已公开
【漏洞补丁绕过】超 30 万 WordPress 站点受影响,Forminator 文件上传漏洞(附POC)
【漏洞预警】Exchange爆出RCE漏洞,利用Exchange 帮另一台 Exchange 开门(POC已公开)
【漏洞预警】不用登录,一个请求就能让 GeoServer 乖乖执行命令(POC已公开)
【漏洞预警】Keycloak不登录就能接管任意账户,双重验证也拦不住
【漏洞预警】 8月WebLogic公布了9个漏洞,有一个需要重点关注
【漏洞预警】近期MongoDB 公布了5个漏洞,最严重的一个可以不认证、远程就能拿下你电脑
【0DAY漏洞】 全球5G手机芯片厂商之一的紫光展锐SOC存在RCE漏洞,影响数十家手机厂商,还未发布补丁
【漏洞告警】安卓 14 到 16 全中招,通讯录 SQL 注入漏洞正在抄家(POC已公开)
【漏洞预警】不用输密码,对方已经接管你的Mac:官方补丁公布macOS存在未鉴权RCE漏洞
【0day漏洞预警】MariaDB 13 爆 9.8 分 RCE 链:最低 USAGE 权限就能远程执行命令
VMware 爆 5 个洞,两个 9.8 不用密码就能打穿 vCente
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。




![buuctf WEB[ACTF2020新生赛]Execwriteup"](/images/random/titlepic/1.jpg)







评论