CVE-2020-25291:金山WP防DDoSS Office远程堆溢出漏洞分析-墨者安全-墨者盾
DDOS防御_CC防护_高防CDN服务器_【墨者安全】—墨者盾墨者盾—你的网站贴身保镖!
QQ:800185041
高防免费接入:400-0797-119

渠道合作:156 2527 6999

主页 > CC防护 > CVE-2020-25291:金山WP防DDoSS Office远程堆溢出漏洞分析

CVE-2020-25291:金山WP防DDoSS Office远程堆溢出漏洞分析

小墨安全管家 2020-10-25 13:31 CC防护 89 ℃
DDoS防御

004f1a7c 3f800000 3f31e4f8 3f800000 3f800000 ...?..1?...?...? 

05f61040 ???????? ???????? ???????? ???????? 

 

+0x01c EndStamp : 0xc0c0c0c0 

 

08 00ee6594 6d0dd155 kso!GdiDrawHoriLineIAlt+0x11a1a 

+0x018 StackTrace : 0xc0c0c0c0 Void 

6b79d7a8 QtCore4!QImageIOHandler::setFormat+0x000000de 

6ba13321 8b448210 mov eax,dword ptr [edx+eax*4+10h] ds:002b:cd2c7290=???????? 

6ba3cb98 8b4e7c mov ecx,dword ptr [esi+7Ch] 

004f1a9c 3de38800 3d9e1c8a 3c834080 004f3c00 ...=...=.@.<. 

 

 

假如我们反汇编6ba3cb98,则能够看到以下反汇编代码,真正的漏洞全然缘由在于此代码。

77a9909b ntdll!RtlDebugAllocateHeap+0x00000039 

 

 

05f61000: 000fe000 - uncommitted bytes. 

Virtual Alloc List: 05f6009c 

Segment at 05f60000 to 0605f000 (00001000 bytes committed

0:000> r 

 

 

 

 

Index Address Name Debugging options enabled 

 

 

 

 

 

6d3cbe97 kso!drawing::ShapeVisual::visualEvent+0x0000018f 

 

 

 

6d453227 kso!BlipCacheMgr::GenCachedBitmap+0x00000083 

 

Total Free Size: 00000146 

 

+0x00c ActualSize : 0xc0c0c0c0 

00029E50 27 FC 00 00 00 04 67 41 4D 41 00 00 B1 88 95 98 'ü....gAMA..±ˆ•˜ 

cf69b00c ???????? ???????? ???????? ???????? ???????????????? 

779eae8e ntdll!RtlAllocateHeap+0x0000003e 

+0x010 Internal : _DPH_BLOCK_INTERNAL_INFORMATION 

 

 

c88bafb0 ffc0c0c0 ffff0000 ff00ff00 ffffff00 ................ 

0:000> dc c88baf80 

c45ae00c ???????? ???????? ???????? ???????? ???????????????? 

 

c45ae01c ???????? ???????? ???????? ???????? ???????????????? 

00029E30 FF 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 ÿ‰PNG........IHD 

if ( grad > 0.0099999998 ) 

 

 

 

 2020-08-28-向WPS团队寻求问或更明天志更新。

 

05f61000 ???????? ???????? ???????? ???????? 

 

Tag Entries: 00000000 

 

0:000> dc c45adfbc 

779eb0cf ntdll!RtlpAllocateHeapInternal+0x0000022f 

 

0:000> dc ebp+8 

 

 

c88baf90 ff000000 ff800000 ff008000 ff808000 ................ 

 

6f08233b MSVCR100!operator new+0x0000001f 

0x03 披露时刻表

verifier!_DPH_BLOCK_INFORMATION 

cb07decc cf69afbc c0c0c000 00000000 00000100 ..i............. 

 

 

FreeList[ 00 ] at 05f600c0: 05f605b8 . 05f605b8 

6ba3cb95 ff5580 call dword ptr [ebp-80h] 

 

 

DeCommit Total Thres: 00002000 

堆分析:

 

0:000> dc c88baf80 

6b7a0e21 QtCore4!png_get_text+0x00000436 

 2020-08-11-要求进一步的信息,例如向适当的渠道披露等。

cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202 

.text:6735331F mov edx, [ecx] 

004f1a68 00000000 

05f60fe0: 00a30 . 00020 [111] - busy (1d) 

cb07df1c c0c0c0c0 00000000 3ff00000 00000000 ...........?.... 

 

c88bafa0 ff000080 ff800080 ff008080 ff808080 ................ 

 

 

6b726c67 QtCore4!QImageData::create+0x000000fa 

 

 

 2020-08-17-依照先前的要求与WPS团队举行跟进。

 

 

6f080269 MSVCR100!malloc+0x0000004b 

 

+0x008 RequestedSize : 0xc0c0c0c0 

eip=6ba1331c esp=004f1a34 ebp=004f1a34 iopl=0 nv up ei pl nz na po ;nc ;

 

 

04 00ee5908 6b857ccc QtCore4!QTransform::inverted+0xec8 

05f60fe0 a9b3c836 03007087 05f6008c 05f6008c 

6d451e85 kso!BlipCacheMgr::GenerateBitmap+0x0000001d 

 

05f60000: 00000 . 004a8 [101] - busy (4a7) 

0:000> dc cf69afbc 

 

 

 

 

05f61000: 000fe000 (1040384 bytes) 

PNG signature --> IHDR --> gAMA --> PLTE --> pHYs --> IDAT --> IEND 

 2020-08-26-WPS更新讲此咨询题已转发给开辟团队。

004f1a3c c45adfbc 

 

eax=00000000 ebx=00791878 ecx=00000005 edx=cf69afbc esi=cb07de18 edi=0000001c 

c88bafb0 ffc0c0c0 ffff0000 ff00ff00 ffffff00 ................ 

mov ecx, [ebp+arg_0] 

 2020-09-14-已分配CVE编号:CVE-2020-25291。

c45adffc c0c0c0c0 ???????? ???????? ???????? ....???????????? 

0:000> dc esi+0B4h 

004f1a5c 00000000 004f65a0 004f662c 00000000 .....eO.,fO..... 

 

6f13ab70 verifier!AVrfDebugPageHeapAllocate+0x00000240 

004f1a38 6ba3cb98 QtCore4!path_gradient_span_gen::path_gradient_span_gen+0x6a74 

QtCore4!QMatrix::dy+0x48a8: 

 

 

 

 

 

 

 

 

 

 

004f1a50 00000000 

6d2b86a7 kso!drawing::SingleVisualRenderer::draw+0x000001e1 

 

因为我们懂崩溃的路径,于是能够使用下面的命令简单地设置一具断点。该命令将获得指针值“ edx + eax * 4 + 10”,并检查其是否满脚0xc0。

 

 

 

 

 

 2020-08-10-WPS团队回应该报告能够转发给他们。

in busy allocation ( DPH_HEAP_BLOCK: UserAddr UserSize - VirtAddr VirtSize) 

 

使用crashs转储中的信息,我们懂应用程序在0x67353321(mov eax,[edx + eax * 4 + 10h])处触发了访咨询冲突。我们能够看到EAX寄存器由0xc0值操纵。所以,从那个地点我们能够依照导致异常的指令对寄存器的状态举行一些假设。需要注意的重要一点是,在发生异常之前,我们能够看到ECX(0xc0)中包含的值被写入到以下指令所定义的任意位置:

 

在WPS Office中用于图像格式解析的Qt模块中发觉存在堆溢出。嵌入WPS office的特制图像文件大概会触发此漏洞。打开特制的文档文件时,触发访咨询冲突。EDX指向数组的指针,而EAX是指向数组的索引。

0:000> g 

 

05 00ee629c 6b81c55b QtCore4!QSvgFillStyle::setFillOpacity+0x1b59 

eax=000000c0 ebx=006f1c48 ecx=cd2aefbc edx=cd2c6f80 esi=2ed7ae18 edi=0000001c 

 

1: 05f60000 

 

 

0x02 漏洞分析

ab69cfb0 ffc0c0c0 ffff0000 ff00ff00 ffffff00 ................ // ffc0c0c0 where it will be stored in EAX after crash, at the moment it only takes 0xf value in EAX 

 

 

 

cf69b01c ???????? ???????? ???????? ???????? ???????????????? 

ab69cff0 c0c0c0c0 c0c0c0c0 c0c0c0c0 c0c0c0c0 ................ 

.text:67353321 mov eax, [edx+eax*4+10h] 

 

 

cf69afcc 0000055f 00000012 c0c0c0c0 1c3870e2 _............p8. 

cb07df2c 00000000 00000000 00000000 00000000 ................ 

680a2b5c wpsmain!WpsShapeTreeVisual::getHittestSubVisuals+0x000068f1 

cf69affc c0c0c0c0 ???????? ???????? ???????? ....???????????? 

address cc53afbc found in 

6ba3cb92 52 push edx 

 

 

 

 

03 00ee58ec 6b80cc84 QtCore4!QImage::rect+0x22b 

ab69cfc0 ff0000ff ffff00ff ff00ffff ffffffff ................ 

 

 

cf69afdc 40ad870e 1c3870e2 40ad870e 00000000 ...@.p8....@.... 

00029E40 52 00 00 02 80 00 00 01 C6 04 03 00 00 00 16 0A R...€...Æ....... 

 

 

 

 

05f605b0: 00108 . 00a30 [100] - free 

 

004f1a4c 004f5cc8 00000000 00000000 00000000 .\O............. 

 

004f1a48 6f13830f verifier!DphCommitMemoryForPageHeap+0x16f 

cf69b02c ???????? ???????? ???????? ???????? ???????????????? 

从偏移量0x29E31开始-0x29E34是PNG文件格式的签名标头。PNG头文件的结构:

0:000> kvL 

 

 

 

004f1a44 00000000 

 

c88bafc0 ff0000ff ffff00ff ff00ffff ffffffff ................ 

 

 

779ebbad ntdll!RtlpAllocateHeap+0x000000ed 

QtCore4!QMatrix::dy+0x48a8: 

c88bafd0 c0c0c0c0 c0c0c0c0 c0c0c0c0 c0c0c0c0 ................ 

6b726b54 QtCore4!QImage::QImage+0x0000004e 

03 012f5b14 6b8249a4 0000003b 012f5b68 cc780e18 QtCore4!QBrush::setMatrix+0x9e 

bp 6ba13321 ".if (poi(edx+eax*4+10) == 0xc0) {} .else {gc}" 

c88bafe0 c0c0c0c0 c0c0c0c0 c0c0c0c0 c0c0c0c0 ................ 

 

06 012f64dc 6b81c55b 00000000 003c0000 00000000 QtCore4!QSvgFillStyle::setFillOpacity+0x1b59 

QtCore4!path_gradient_span_gen::path_gradient_span_gen+0x6a65: 

0:000> dd 05f60fe0 

ab69cf90 ff000000 ff800000 ff008000 ff808000 ................ 

 

6d2a2d83 kso!drawing::VisualRenderer::render+0x00000060 

eip=6ba13321 esp=006f1b44 ebp=006f1b44 iopl=0 nv up ei pl nz na po ;nc ;

004f1a4c 004f5cc8 

 

cf69afbc c88baf80 d1326100 00000003 00000280 .....a2......... 

 

00029E70 00 80 00 80 80 00 00 00 80 80 00 80 00 80 80 80 .€.€€...€€.€.€€€ 

DeCommit Block Thres: 00000200 

6d0c70d0 kso!kpt::RelativeRect::unclipped+0x00001146 

 

ab69cfa0 ff000080 ff800080 ff008080 ff808080 ................ 

eax=0000000f ebx=004f1b40 ecx=d3544100 edx=0000001c esi=d1200e18 edi=0000001c 

 

 

05f605b0: 00108 . 00a30 [100] 

 

 

在IDA Pro中打开时,我们能够按以下方式反汇编该函数:

 

 

 

 

 

 

05 012f5b48 6b857ccc 0000003b 012f5b68 cc780e18 QtCore4!QTransform::inverted+0xec8 

c88baf80 00000001 0000001c 00000010 00000001 ................ 

.text:6735331C mov ecx, [ebp+arg_0] 

Next TagIndex: 0000 

004f1a60 004f65a0 

 

6ba3cb89 8b96b4000000 mov edx,dword ptr [esi+0B4h] ds:002b:cb07decc=cf69afbc 

+0x000 StartStamp : 0xc0c0c0c0 

Segment Reserve: 00100000 

address: psize . size flags state (requested size

 

Flags: 00000002 

(c50.b4): Access violation - code c0000005 (first chance) 

 

 


DDoS防御

当前位置:主页 > CC防护 > CVE-2020-25291:金山WP防DDoSS Office远程堆溢出漏洞分析

标签列表
DDoS防御
网站分类
X
 

QQ客服

400-0797-119