加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_扬州站长网 (https://www.0514zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 交互 > 正文

Windows内核EPATHOBJ 0day漏洞

发布时间:2016-11-21 11:38:30 所属栏目:交互 来源:站长网
导读:Windows内核EPATHOBJ 0day漏洞是通过对PATHALLOC()进行内存压力测试爆出的,首先利用PATHREC指向相同的的用户空间PATHREC EPATHOBJ::bFlatten它会自旋进行无限链表遍历。 如:PathRecord-next = PathRecord; 虽然它会自旋,但它会通过另一个线程池来打补丁(p

Windows内核EPATHOBJ 0day漏洞是通过对PATHALLOC()进行内存压力测试爆出的,首先利用PATHREC>指向相同的的用户空间PATHREC EPATHOBJ::bFlatten它会”自旋”进行无限链表遍历。

如:PathRecord->next = PathRecord;

虽然它会自旋,但它会通过另一个线程池来打补丁(pprFlattenRec)到列表中的节点(因为它是在用户空间)。

首先,创建一个”监控线程( watchdog)”,atomically补丁列表,因为pprFlattenRec过早退出,bug不能被利用会导致HeavyAllocPool

pprFlattenRec :.text:BFA122B8 call newpathrec ; EPATHOBJ::newpathrec(_PATHRECORD * *,ulong *,ulong) 
.text:BFA122BD cmp eax, 1 ; Check for failure 
.text:BFA122C0 jz short continue 
.text:BFA122C2 xor eax, eax ; Exit early .text:BFA122C4 jmp early_exit

所以要创建一个这样的节点列表:

PathRecord->Next = PathRecord;PathRecord->Flags = 0;

然后 EPATHOBJ::bFlatten()自旋:

BOOL __thiscall EPATHOBJ::bFlatten(EPATHOBJ *this){
    /* ... */

    for ( ppr = ppath->pprfirst; ppr; ppr = ppr->pprnext )
    {
      if ( ppr->flags & PD_BEZIER )
      {
        ppr = EPATHOBJ::pprFlattenRec(pathobj, ppr);
      }
    }

    /* ... *                        

(编辑:应用网_扬州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读